2011-01-13 3 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의 ParentLinkId = 0과 내 그러나 소스 XML에서의 값 linkID를 = 1 발생 , $ child에 대한 변수 할당에서 소스 XML 데이터에 존재하지 않는 ParentLinkId = 1 인 LinkEntity를 선택합니다.

내가 잘못 이해 한 부분이 있으면 알려주세요. 그러나 내가 볼 수있는 부분은 문제 일 수 있습니다.

+0

@ppp는 자식을 선택하기 위해 부모가없는'LinkEntity'를 얻습니다. 입력 샘플은 감소로 보입니다 ... –

1

그러나 나는 항상 $ child = 0을 얻고 있습니다. 그러나 아이들이 있습니다. "어린이"에 의해 현재 노드의 LinkId와 동일한 LinkEntityParentLinkId 자식을 의미하는 경우

는 당신이 얻을 결과는 정확합니다.

유일한 LinkEntityLinkId 1을 가지고 있지만 ParentLinkId 제공되는 XML 문서에는 LinkEntity 요소는 당신이 완전한 (하지만 짧은) XML 문서를 보여줄 필요가있다 1.

되어 있습니다없는 코드에 이 문제를 보여줍니다. 문제를 재현 할 수 없으면 아무도 논리적 조언을 줄 수 없습니다.