2011-01-13 58 views
0

这里我代码 -如何让子节点XSL

<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 &gt; 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> 

但我正在逐渐$孩子= 0 always.but存在儿童。 我的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

从您以下代码:

<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数据中不存在。

如果我误解了某些内容,请让我知道,但是从我所看到的可能是这个问题。

+0

@ppp得到这些'LinkEntity'没有父母为了选择他们的孩子后。输入示例看起来像一个减少... – 2011-01-13 14:55:28

1

但我得到$ child = 0 always.but 存在孩子。

如果“孩子”你的意思是一个LinkEntityParentLinkId孩子等于当前节点的LinkId,你得到的结果是正确的。

唯一LinkEntityLinkId 1,但也有其ParentLinkId提供的XML文档中没有LinkEntity元素为1

您需要出示完整的(但最短的)XML文档在你的代码展示这个问题。如果不能重现问题,没有人能给你一个合理的建议。