使用xslt中的函数访问xml元素

时间:2016-08-03 11:14:02

标签: xml xslt-2.0

我的CategoryType.xml文档包含大量的以下xml元素(大约7千个)。

另请注意,ATRIBUTE_NAME和ATTIBUTE_CODE组合在这里是唯一的。

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

现在,我想使用XSLT开发一个函数,它将输入作为ATRIBUTE_NAME和ATTIBUTE_CODE并返回referenceCode,referenceName

为什么我需要函数,因为我需要在转换xslt中进行大量的转换,因此函数会很方便。

我搜索了互联网,但找不到令人满意的答案。

请帮忙。

1 个答案:

答案 0 :(得分:1)

该函数名为key,您只需定义一个键(https://www.w3.org/TR/xslt-30/#key

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

然后调用例如

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)