我正在使用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>
答案 0 :(得分:1)
我认为只是你没有正确检查属性。
更改...
<xsl:when test="id='1349'">
To(注意额外的@
,这意味着它是属性名称而不是元素名称)...
<xsl:when test="@id='1349'">
答案 1 :(得分:1)
您不需要xsl:for-each
和xsl:choose
来查找和处理想要的元素。
只需要一个匹配所需元素的模板:
<xsl:template match="categories/category[@id='1349' and @parentId='1333']">
<!-- Your processing here -->
</xsl:template>