2016-08-03 3 views
0

내 CategoryType.xml 문서에는 다음과 같은 XML 요소가 많이 포함되어 있습니다 (약 7 천 개).xslt의 함수를 사용하여 xml 요소에 액세스

ATRIBUTE_NAME 및 ATTIBUTE_CODE 조합은 여기에서 고유합니다.

<type> 
 
\t <Category ATRIBUTE_NAME="CDITP" ATTIBUTE_CODE="3"> 
 
\t \t <referenceCode>1000</referenceCode> 
 
\t \t <referenceName>TelephoneNumber</referenceName> 
 
\t </Category> 
 
\t <Category ATRIBUTE_NAME="CDMTHDTP" ATTIBUTE_CODE="9"> 
 
\t \t <referenceCode>1009</referenceCode> 
 
\t \t <referenceName>Contact Details</referenceName> 
 
\t </Category> 
 
\t - 
 
\t - 
 
\t - 
 
</type>

지금, 나는 ATRIBUTE_NAME 및 ATTIBUTE_CODE로 입력을하고 referenceCode을 다시 반환 할 XSLT를 사용하여 기능을 개발하고자, referenceName

이유는 기능 때문에 필요 나는 변환 xslt에서 엄청난 수의 변환을 할 필요가 있으므로 함수가 편리 할 것이다.

인터넷을 검색 한 결과 만족스러운 답변을 찾을 수 없습니다.

도와주세요.

답변

1

이 기능은 key라는 이름의 당신은 단순히 전화를 다음 예를 핵심 (https://www.w3.org/TR/xslt-30/#key)

XSLT 3.0
<xsl:key name="cat" match="type/Category" use="ATRIBUTE_NAME, ATTIBUTE_CODE" composite="true"/> 

을 정의 할 필요가있다

key('cat', ('CDITP', '3'))/(referenceCode, referenceName) 

데이터를 반환하려면 XSLT 2.0에서는 키를

<xsl:key name="cat" match="type/Category" use="concat(ATRIBUTE_NAME, '|', ATTIBUTE_CODE)"/> 

과 같이 정의 할 수 있습니다.

key('cat', concat('CDITP', '|', '3'))/(referenceCode, referenceName) 

.

+0

답장을 보내 주신 Martin 고마워요! – Sunny

+0

여기에 한 가지만 추가하고 싶습니다. 내 XML 문서가 유일한 XML이 아닙니다. 기본적으로, 나는 webservice의 입력 요청을 변환하고 해당 요청에서 ATTIBUTE_CODE를 사용할 수 있으며 ATRIBUTE_NAME을 추가하고 위에서 언급 한 문서를 호출하여 값을 가져 와서 결국 xml 요청에 추가 한 다음받는 사람에게 보냅니다. 그에 따라 조언을주십시오. – Sunny

+0

글쎄,'key' 함수는 컨텍스트 문서 나 노드를 제공하기 위해 선택적인 세번째 인수를 가지고 있습니다. 그래서 같은 변환에서 다양한 입력 문서를 다루고 있다면 이것을 사용하십시오. 도움이되지 않으면 질문을 편집하고 가지고있는 것을 더 자세히 설명해야합니다. –