xml - XSLを使用してhrefで特定のキーワードを持つ要素を見つける方法は?
質問する
312 次
3 に答える
2
href
属性に望ましくない文字列が含まれるアンカーを削除するには、 match
XPath 式を展開します。
<xsl:template match="a[not(contains(@href,'Foo'))]">...
Foo
spammycrap.com
または何でもかまいません。
さらに、空のアンカーと空でないアンカーに異なるテンプレートを指定できます。したがって、空でないアンカーの場合は、次を使用します。
<xsl:template match="a[not(contains(@href,'Foo')) and not(count(node()) = 0)]">...
空でないアンカーのテンプレートが続きます。空のアンカーの場合:
<xsl:template match="a[not(contains(@href,'Foo')) and not(node())]">...
空のアンカーのテンプレートが続きます。
全体として、これは次のようになります。
<xsl:template match="a[not(contains(@href,'Foo')) and not(count(node()) = 0)]">[url="<xsl:value-of select="@href"/>"]<xsl:apply-templates/>[/url]</xsl:template>
<xsl:template match="a[not(contains(@href,'Foo')) and not(node())]">[url]<xsl:value-of select="@href"/>[/url]</xsl:template>
于 2012-12-29T14:57:09.000 に答える
1
空のテンプレートを使用して特定の要素を無視できます。
<xsl:template match="a[contains(@href, 'badurl')]" />
使用できる空でないa
要素を見つけるには
<xsl:template match="a[*|text()[normalize-space(.)]]">
<xsl:text>[url="</xsl:text>
<xsl:value-of select="@href"/>
<xsl:text>"]</xsl:text>
<xsl:apply-templates/>
<xsl:text>[/url]</xsl:text>
</xsl:template>
これは、完全に空白ではない子要素またはテキスト ノードを持つ任意のアンカーに一致します。このパターンに一致しないアンカーは、汎用match="a"
テンプレートによって選択されます
<xsl:template match="a">[url]<xsl:value-of select="@href" />[/url]</xsl:template>
于 2012-12-29T15:15:05.060 に答える
0
この変換:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="a[starts-with(@href, 'http://spammy')]"/>
<xsl:template match="a[not(*|text()[normalize-space(.)])]">
<xsl:text>[url]</xsl:text>
<xsl:value-of select="@href"/>
<xsl:text>[/url]
</xsl:text>
</xsl:template>
<xsl:template match="a">
<xsl:text>[url="</xsl:text>
<xsl:value-of select="@href"/>"]<xsl:text/>
<xsl:value-of select="."/>
<xsl:text>[/url]
</xsl:text>
</xsl:template>
</xsl:stylesheet>
この XML ドキュメントに適用すると、次のようになります。
<html>
<a href="http://spammycrap.tld">Foo</a>
<a href="http://empty.tld"></a>
<a href="http://empty2.tld"> </a>
<a href="http://okay.tld">Baz</a>
</html>
必要な正しい結果が生成されます。
[url]http://empty.tld[/url]
[url]http://empty2.tld[/url]
[url="http://okay.tld"]Baz[/url]
于 2012-12-29T17:45:35.713 に答える