0

我正在使用 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> 
4

2 回答 2

1

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

改变...

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

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

<xsl:when test="@id='1349'">
于 2012-07-25T09:30:23.860 回答
1

您不需要xsl:for-eachandxsl:choose来定位和处理想要的元素。

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

<xsl:template match="categories/category[@id='1349' and @parentId='1333']">
  <!-- Your processing here -->
</xsl:template>
于 2012-07-25T12:15:44.897 回答