我正在尝试动态加载XML文档,然后对该变量执行查询。
以下作品可让我输出荷兰语字符串
<xsl:variable name="language" select="exslt:node-set(document('Dutch.xml'))" />
<xsl:value-of select="$language/Translations/SiteInformationPanel/Customer" />
但是这需要我提前知道要加载的文档,要加载的文档将基于输入XML中的元素,所以我尝试按如下方式声明变量:
<xsl:variable name="language">
<!-- Also attempted with <xsl:value-of -->
<xsl:copy-of select="exslt:node-set(document('Dutch.xml'))" />
</xsl:variable>
然而,这会产生错误To use a result tree fragment in a path expression, first convert it to a node-set using the msxsl:node-set() function.
所以我的问题是如何使第二种方法与第一种方法等效,所以我可以加载另一种文件。
答案 0 :(得分:1)
将参数传递给来自输入XML的document
函数是很好的,例如给出一个像
<Input language="Dutch">
....
</Input>
你可以设置一个变量
<xsl:variable name="language" select="document(concat(/Input/@language, '.xml'))" />
请注意,您根本不需要node-set
功能,因为document
会直接返回一个节点集。