XSL

2011-03-22 4 views
3

나는 다음과 같은 XML이 :XSL

<content> 
<p>para 1<an>test 1</an></p> 
<p>para 2<an>test 2</an></p> 
<p>para 3<an>test 3</an></p> 
</content> 

을 내가 가지고 XSL에 다음 식 :

<xsl:template match="/"> 
<xsl:text>Count: </xsl:text> 
<xsl:value-of select="count(/content//an)" /> 
<xsl:text> Content: </xsl:text> 
<xsl:value-of select="/content//an[2]" /> 
</xsl:template> 

는 이유는 무엇입니까/컨텐츠 //이 [1] "test 1"을 반환하고// content /는 [2] return ""을 반환합니까? 그 숫자는 3이 있다고 말합니다. libxslt를 사용하고 있습니다.

감사합니다.

+0

좋은 질문입니다. +1. 설명 및 완전하고 쉬운 해결책에 대한 내 대답을 참조하십시오. –

+0

가능한 중복 문서 [// span \ [2 \]이 문서의 두 번째 범위를 선택하지 않는 이유는 무엇입니까?] (http://stackoverflow.com/questions/4780559/why-does-span2-not-select-the- 문서에서 두 번째 스팬) –

답변

6

FAQ입니다.

// 약어를 사용할 때는주의해야합니다.

//SomeName[1] 

의미 : 부모의 첫 번째 SomeName 자녀 문서의 모든 SomeName 요소를 선택합니다. 종종 선택된 노드는 둘 이상 (또는 심지어 모든 노드)입니다.

문서 만 $ k 번째 SomeName 요소를 선택하는 올바른 방법은입니다 : 귀하의 경우

(//SomeName)[$k] 

를 사용

(/ 컨텐츠 // AN) [2]

기억하십시오 : [] 연산자의 우선 순위가 더 깁니다. // 약어.

+0

+1. 이 대답에 대한 단축키를 가지고있을 것입니다. – Flack

+0

@Flack : 가능했으면 좋겠다. :) –