2011-08-11 11 views
0

저는 XSL 프로그래밍의 초보자입니다. 이 문제를 해결하는 데 저를 도울 수 있습니까? 가변 예 :

<xsl:variable name="path1" select="//path1"/> 
<xsl:variable name="path2" select="//path2/value"/> 

을이어서 사용하여 결합 :

<xsl:value-of select ="$path1/$path2"/> 

제가 조합하여 경로 1로부터 값을 페치 할

는 결합 개의 XSL의 값을 페치 할 수 있는가 경로 2의 결과 위의 코드를 사용하면 예상치 못한 토큰 $ 오류가 발생합니다.

다른 대안이 있습니까?

+0

코드를 표시하십시오. –

+0

아니, 그건 올바른 방법이 아니야. 원하는 것을 설명하는 데 더 명료 해져야하고 아마도 그 해결책을 찾을 수있을 것입니다. –

+0

@empo : 그가 원하는 것이 분명하다고 생각합니다. '/ path1'의 텍스트 값은 어떤 요소 이름 ('foo')이고,'/ path2/value '의 텍스트 값은 다른 다른 요소 이름 ('bar')이며, 요소 아래 두 번째 이름으로 주어진 요소 즉, 그는'foo/bar'를 찾고 싶습니다 (그리고 그 값을 얻습니다). –

답변

2

그것은 당신이 가능 그것은 당신이 실제로 그 변수의 경로를 저장하지 않는 것을 여기에서 지적 가치가

<xsl:value-of select="concat($path1,$path2)" /> 

을 찾고있는 것처럼 들리지만, 그 경로가 가리키는 노드. 즉 $path1에는 //path1이 포함되지 않지만 해당 노드에 포함 된 값이 포함됩니다. 당신이 실제로 텍스트 '//path1//path2/value'를 원한다면

는, 당신은 (그것이 XPath는 아닌 텍스트 값을 나타내고 있습니다 여분의 '주의)

<xsl:value-of select="path1" select="'//path1'" /> 
<xsl:value-of select="path2" select="'//path2/value'" /> 

와 경로 변수를 정의해야합니다. 이 경우 동일한 <xsl:value-of 문을 사용하면 '//path1//path2/value'의 결과를 얻을 수 있습니다.

//path1//path2/value 노드의 내용을 실제로 원한다면 훨씬 더 까다 롭고 실제로하려는 작업을 수행하는 데 더 좋은 방법이 있습니다.

관련 문제