这里是我的代码 -
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="ArrayOfLinkEntity" name="bindLink">
<ul>
<xsl:for-each select="LinkEntity[ParentLinkId=0]">
<li>
<xsl:variable name="linkId" select="LinkId"/>
<xsl:variable name="child" select="count(/ArrayOfLinkEntity/LinkEntity[ParentLinkId=$linkId])"/>
<xsl:value-of select="$child"/>
<xsl:choose>
<xsl:when test="($child > 0)">
<a href="#" data-flexmenu="flexmenu1" onclick="javascript:setPageLinkId({$linkId});">
<xsl:value-of select="LinkTitle"/>
<img src="../images/down.gif" border="0"/>
</a>
</xsl:when>
<xsl:otherwise >
<a href="#" onclick="javascript:setPageLinkId({$linkId});">
<xsl:value-of select="LinkTitle"/>
</a>
</xsl:otherwise>
</xsl:choose>
</li>
</xsl:for-each>
</ul>
</xsl:template>
</xsl:stylesheet>
但我总是得到$ child = 0。但是有孩子。 我的xml结构 -
<ArrayOfLinkEntity xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<LinkEntity>
<EntityId>00000000-0000-0000-0000-000000000000</EntityId>
<LinkId>1</LinkId>
<SequenceNo>1</SequenceNo>
<ParentLinkId>0</ParentLinkId>
<LinkTitle>Home</LinkTitle>
<SubLink />
</LinkEntity> ...
</ArrayOfLinkEntity>
我该怎么办?请建议。
答案 0 :(得分:1)
但我得到$ child = 0 always.but 有孩子。
如果“孩子”是指LinkEntity
ParentLinkId
孩子等于当前节点的LinkId
,则得到的结果是正确的。
唯一的LinkEntity
有LinkId
1,但提供的XML文档中没有LinkEntity
个元素ParentLinkId
为1。
您需要显示一个完整(但尽可能短)的XML文档,您的代码会在该文档中显示此问题。没有能够重现问题,没有人能给你一个合乎逻辑的建议。
答案 1 :(得分:0)
来自以下代码:
<xsl:variable name="linkId" select="LinkId"/>
<xsl:variable name="child" select="count(/ArrayOfLinkEntity/LinkEntity[ParentLinkId=$linkId])"/>
这发生在for-each循环中,其中循环的唯一节点是LinkEntity的ParentLinkId = 0.但是从源XML,LinkId的值= 1,并且在$ child的变量赋值中,您正在选择在LinkEntity上使用ParentLinkId = 1,这在源XML数据中不存在。
如果我误解了某些内容请告诉我,但从我看到的可能是问题。