我的XML如下
<?xml version="1.0" encoding="UTF-8"?>
<product>
<admin id="1">
<name>abc</name>
</admin>
<admin id="2">
<name>kkk</name>
</admin>
<product>
这是我的XSLT
<xsl:template match="product">
<ul>
<xsl:apply-templates select="admin"/>
</ul>
我想在&#34; admin&#34;上应用模板基于属性id值。
如何根据属性值应用模板?
新问题......
如果我想匹配两个管理员如何做到这一点。我不想使用&#34; *&#34;这里
<xsl:template match="product">
<ul>
<xsl:apply-templates select="admin[@id=1]"/>
<xsl:apply-templates select="admin[@id=2]"/>
</ul>
现在如何匹配两者?
<xsl:template match="admin">
</xsl:template>
答案 0 :(得分:1)
然后,您可以使用谓词修改XSLT:
<xsl:apply-templates select="admin[@id = '2']"/>
将仅选择<admin>
元素并将id
属性设置为值2.
您可以使用其他几个谓词来优化其中的元素选择:
<xsl:apply-templates select="admin[@id]"/>
只会检索带有id属性的元素,无论值是什么; <xsl:apply-templates select="admin[name/text() = 'abc']"/>
将检索具有<admin>
子元素的<name>
元素,该元素的文本值设置为abc
; <xsl:apply-templates select="admin[name/text() = 'abc' and not(@id)]"/>
结合了两个条件:它将检索具有<admin>
子元素的<name>
元素,该元素的文本值设置为abc
,并且没有id属性等等。