2014-02-21 3 views
0

다음 Xpath식이 3 대신 2로 계산되는 이유를 알고 싶습니다. 귀하의 도움에 감사드립니다.Xpath 카운트 함수 설명

Xpath-

<xsl:value-of select="count(//x[1]/y[1])"/> 

XML

<?xml version="1.0"?> 
<test> 
    <x a="1"> 
     <x a="2"> 
     <x> 
      <y>y31</y> 
      <y>y32</y> 
     </x> 
     </x> 
    </x> 
    <x a="1"> 
     <x a="2"> 
     <y>y21</y> 
     <y>y22</y> 
     </x> 
    </x> 
    <x a="1"> 
     <y>y11</y> 
     <y>y12</y> 
    </x> 
    <x> 
     <y>y03</y> 
     <y>y04</y> 
    </x> 
</test> 

//count (//x[1]/y[1]) is selecting the following 2 elements. 

1) <x> 
     <y>y31</y> 

2) <x a="2"> 
     <y>y21</y> 

하고 내가 이것을 명확히하려는 3.로 카운트를 추가, 같은 레벨에서 다음 요소 중 하나를 선택하지 않습니다.

<x a="1"> 
     <y>y11</y> 


     or 

    <x> 
     <y>y03</y> 

덕분에, 매튜

답변

0

//x[1]/y[1] 1 자녀 또는 부모입니다 x 요소의 첫째 자녀 y 요소를 선택합니다.

test

<x a="1"> 
    <x a="2">  <!-- x is first child of its parent --> 
    <y>y21</y> <!-- y is first child of its parent x --> 
    <y>y22</y> 
    </x> 
</x> 

너무 첫째 자녀와 둘째 자녀 또는 test

<x a="1"> 
    <x a="2"> 
    <x>   <!-- x is first child of its parent --> 
     <y>y31</y> <!-- y is first child of its parent x --> 
     <y>y32</y> 
    </x> 
    </x> 
</x> 

모두 또는 자체가 y 11 번째 아이를 1 일 자녀로 x 요소가있는 x 요소를 포함, 따라서 일치합니다.

<x a="1">   <!-- x is 3rd child of its parent test --> 
     <y>y11</y> 
     ... 

하지만

test

의 4 번째 아이가 그래서 그들은 당신의 대답 폴에 대한

+0

감사 일치하지 않습니다되어 test

<x> <!-- x is 4th child of its parent test --> <y>y03</y> 

의 셋째 아이입니다 두 번째 자식 x와도 일치하는 이유를 알고 싶습니다 (이미 matche 이후 D 최초의 X 아이) 두 번째 X 자식 추가 2'X/y' 일치 – user3053015

+0

일치. 당신의 도움을 주셔서 감사합니다. –

+0

폴 대단히 감사합니다 이유에 코멘트 Y21 user3053015