2010-03-19 13 views
1

저는 XSL에 비교적 익숙하지 않으며 이것이 기본적인 질문이라고 생각합니다. 그래서 나는 일찍 사과해야한다.Xpath 및 매개 변수

기본적으로, 저는 가치의 기능을 사용하고 싶습니다. 이것은 템플릿에있을 것이며 매개 변수로 xpath의 일부를 전달하려고합니다.

<xsl:variable name="TEST_VAR">"h:elementA/elementB"</xsl:variable> 

... and then use the variable (or passed in param) as all (or part) of the xpath: 

<xsl:element name="transformedElement"><xsl:value-of select=$TEST_VAR/></xsl:element> 

xpath에 문자열 리터럴과 TEST_VAR이 혼합되어 있어야합니다.

미리 감사드립니다.

답변

2

원하는 작업을 수행 할 수 없습니다. XSL 변환에서 일반 문자열을 XPath 식으로 해석 할 수 없습니다.

하지만 어쨌든해서는 안됩니다.

<xsl:variable name="TEST_VAR" select="h:elementA/elementB"/> 
<xsl:element name="transformedElement"> 
    <xsl:value-of select="$TEST_VAR"/> 
</xsl:element> 

을하지만 난 당신이 당신이 실제로 원하는 것을보고 너무 단순하다는 점에 예를 무식하게 한 생각 : 그것의 모습으로 당신이 원하는 것을 얻을 다음으로 예를 대체 할 수 있습니다.


스택 오버플로 사용에 대한 빠른 팁은 실제로 수행해야하는 작업과 수행하는 데 어려움을 겪고있는 이유에 대해 설명합니다. 당신이이 질문으로 한 것은 당신의 문제에 대한 해결책으로 생각되며 가능한 경우 Stack Overflow를 요구하고 있습니다. 그것은 아닙니다, 그리고 당신의 원래 문제를 볼 수 없기 때문에 나는 이미 가지고있는 것보다 더 당신을 도울 수 없습니다.

다음에 질문 할 때 직면 한 문제에 대한 잠재적 인 해결책이 아니라 실제로 직면 한 문제에 대해 실제로 질문해야합니다. 그렇게하면 더 나은 답변을 얻을 수 있습니다.

+0

빠른 답변 감사드립니다. 이것은 스택 오버 플로우에 대한 나의 첫 번째 시도이므로 귀하의 팁은 높이 평가됩니다. – Daniel

0

원하는 XPath 표현식을 전역 <xsl:param>으로 전달하십시오. 이 글로벌 매개 변수의 이름이 vQuery 인 경우에 당신이과 같은 코드를 사용할 수 있습니다

<xsl:element name="transformedElement"> 
    <xsl:value-of select= 
    "*[name() = substring-before($vQuery, '/')] 
       /*[name() = substring-after($vQuery, '/')]"/> 
</xsl:element> 

이러한 기술은 일반적으로 당신이 전달됩니다 XPath 식에 대한 많은 지식이 필요합니다. 이 경우에는 정확히 두 개의 위치 단계와 술어가없는 상대 XPath 식이라는 사실에 의존합니다.