2011-01-13 2 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])"/> 

これが掛け渡されているノードのみがLinkEntityの= 0 ParentLinkId有するがソースXML、がLinkId = 1の値からのものであるため、各ループ内で発生$ childの変数代入では、ソースXMLデータに存在しないParentLinkId = 1のLinkEntityを選択しています。

私が何か誤解している場合は、私に知らせてください。しかし、私が見ることができるものは問題であるかもしれません。

+0

@pppは、後で子を選択するために、親なしの 'LinkEntity'を取得しています。入力サンプルは縮小のように見えます... –

1

しかし、私は$ child = 0常に取得しています。しかし、 子供が存在します。 「子供」であなたは現在のノードのLinkIdに等しいLinkEntityParentLinkIdを持つ子を意味する場合

は、あなたが得る結果は正しいです。

のみLinkEntityLinkId 1を持っていますが、ParentLinkIdあなたがあなたのコードの完全な(しかし、可能な限り最短の)XMLドキュメントを表示する必要があります。1.

で提供されるXML文書にはLinkEntity要素がありませんこの問題を示しています。問題を再現することができなければ、誰もあなたに論理的な助言を与えることはできません。