apply-templates基于属性id值

时间:2015-06-15 19:31:36

标签: xslt

我的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>

1 个答案:

答案 0 :(得分:1)

然后,您可以使用谓词修改XSLT:

<xsl:apply-templates select="admin[@id = '2']"/>

将仅选择<admin>元素并将id属性设置为值2.

您可以使用其他几个谓词来优化其中的元素选择:

  1. <xsl:apply-templates select="admin[@id]"/>只会检索带有id属性的元素,无论值是什么;
  2. <xsl:apply-templates select="admin[name/text() = 'abc']"/>将检索具有<admin>子元素的<name>元素,该元素的文本值设置为abc;
  3. <xsl:apply-templates select="admin[name/text() = 'abc' and not(@id)]"/>结合了两个条件:它将检索具有<admin>子元素的<name>元素,该元素的文本值设置为abc,并且没有id属性
  4. 等等。