XSLT help - 检索元素的ID

时间:2012-07-25 09:15:16

标签: xml xslt

我正在使用XSLT来选择并循环使用某个parentID的对象,这样可以正常工作。然后我需要做的是根据值检查XML的每个选定元素的ID。

这是我的代码:

XSL:

<xsl:for-each select="categories/category[@parentId='1333']">
    <xsl:choose>
       <xsl:when test="id='1349'">Yes</xsl:when>
       <xsl:otherwise>No</xsl:otherwise>
    </xsl:choose>
</xsl:for-each>

以下是一个示例XML块:

 <categories>
    <category !!!!THIS IS THE ID I WANT!!!!! id="1348" parentId="1333">
      <name>Name</name>  
      <description>Desc</description>  
      <path>/test/test/testing</path> 
    <category id="1349" parentId="1333">
      <name>Name</name>  
      <description>Desc</description>  
      <path>/test/test/testing</path> 
    </category>  
    <category id="1352" parentId="1333">
      <name>Name</name>  
      <description>Desc</description>  
      <path>/test/test/testing</path> 
    </category>  
    <category id="1370" parentId="1333">
      <name>Name</name>  
      <description>Desc</description>  
      <path>/test/test/testing</path> 
    </category>  
  </categories> 

2 个答案:

答案 0 :(得分:1)

我认为只是你没有正确检查属性。

更改...

<xsl:when test="id='1349'"> 

To(注意额外的@,这意味着它是属性名称而不是元素名称)...

<xsl:when test="@id='1349'">

答案 1 :(得分:1)

您不需要xsl:for-eachxsl:choose来查找和处理想要的元素。

只需要一个匹配所需元素的模板:

<xsl:template match="categories/category[@id='1349' and @parentId='1333']">
  <!-- Your processing here -->
</xsl:template>