2014-12-24 2 views
1

네이티브 XSLT2.0 기능 만 사용하여 컨트롤 목록에있는 요소를 동적으로 인쇄하려고합니다.XSLT 동적 요소 선택

<xsl:variable name="controlList">name</xsl:variable> 

<M N="name" V="Bill Billson"/> 
<M N="address" V="1234 street name"/> 
<M N="country" V="United Kingdom"/> 
<M N="phone" V="123456789"/> 

출력 필수 : ​​그것은 예컨대, 제어 값리스트에서 여러 대처해야하지만 궁극적

Bill Billson 

<xsl:variable name="controlList">name,address,phone</xsl:variable> 

지금까지 여러 가지 순열을 시도했지만 필요한 결과를 얻지 못했습니다.

<xsl:value-of select="M[@N='{$controlList}']/@V"/> 

또는

<xsl:for-each select="M"> 
     <xsl:value-of select="/[@name=$controlList]/@V"/> 
    </xsl:for-each> 

어떤 도움을 크게 감상 할 수있다. 이것은 네이티브 XSLT2.0 함수에서도 사용할 수 없습니다.

+0

내가 더 먼저 라벨에 전달하여,이를 확장하는 것을 시도하고있는 = 비교에 필드의 이름을 인쇄, 둘째 할 수 있습니다 에서 가치를 얻으십시오, 가능합니까? 예 : 제어 목록은 '성명, 이름, 집 주소, 주소, 휴대폰 번호, 전화 번호' – pdev84

답변

1

변수를 <xsl:variable name="controlList" select="'name', 'address', 'phone'"/>으로 정의하면 M[@N = $controlList]/@V을 사용할 수 있습니다. 예를 들어 http://xsltransform.net/6qVRKw1을 참조하십시오.

첫 번째 변수를 문자열의 시퀀스로 설정할 수 없다면 두 번째 변수를 문자열로 계산하십시오.

<xsl:variable name="controlList">name,address,phone</xsl:variable> 
<xsl:variable name="controlSeq" select="tokenize($controlList, ',')"/> 

다음은

<xsl:value-of select="M[@N = $controlSeq]/@V"/> 
+0

대단히 감사합니다! – pdev84