2014-11-14 11 views
0

xslt 1.0의 키 기능을 사용하여 노드 집합의 텍스트 노드에 액세스 할 수 있습니까?xslt 키 기능을 사용하여 노드 집합 텍스트 가져 오기

나는 노드 집합 그것에 의해 항목의 이름을 변경하기 위해, 현재 항목의 항목 ID에 의해 미리 정의 된 노드 집합 텍스트입니다 (ID1의 텍스트를 검색 할
<xsl:variable name="Items"> 
     <Item ID="ID1">name1</Item> 
     <Item ID="ID2">name2</Item> 
</xsl:variable> 

<xsl:key name="get_item_by_ID" match="exsl:node-set($Items)/Item" use="@ID"/> 

<xsl:template match="/Items"> 
    <xsl:value-of select="key('get_item_by_ID', @ItemID)/text()"></xsl:value-of> 
</xsl:template> 

: NAME1 내가 다음 코드 한 , ID2 : 이름 2).

exsl:node-set($Items)에 의해 생성 된 노드 집합은 별도의 "문서"입니다 :

답변

0

는 현재 상황에 맞는 문제를 가지고있다. match 속성 내에서 일치시킬 문서를 <key> 요소로 지정할 수 없습니다.

key() 함수를 호출하기 전에 컨텍스트를 원하는 문서로 전환해야합니다 (XSLT 2.0에서는 key() 함수 자체 내에서 일치시킬 문서를 지정할 수 있음).

+0

감사합니다. "문맥을 전환하여 원하는 문서를 작성"하는 것이 무엇입니까? 내가 어떻게 깨달을 수 있니? –

+0

'xsl : for-each'를 사용하여 컨텍스트를 전환 할 수 있습니다 (예 :''). 이전 질문의 예제를 참조하십시오. http://stackoverflow.com/questions/26889758/xslt-node-set-use-in-key-function-find-children-by-parent-attribute –