2014-02-21 106 views
0

我想知道爲什麼下面的Xpath表達式將計數設置爲2而不是3.感謝您的幫助。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]選擇y元素是x元件的第一孩子是1米的兒童或者它們的母體。

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> 

都是或含有x元素本身具有x元素作爲第一個孩子與y作爲第一個孩子,這是匹配的。

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

test

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

第三個孩子的test

的第4個孩子,使他們不會匹配

+0

謝謝您的回答保羅,想知道爲什麼它匹配第二個孩子x也(因爲它已經matche d第一個X孩子) 第二個X子匹配 Y21 user3053015

+0

添加於爲什麼2'X/y'比賽 –

+0

非常感謝保羅評論。感謝你的幫助。 – user3053015