使用不同的select方法将XML文档加载到变量中

时间:2014-10-09 12:03:04

标签: xslt

我正在尝试动态加载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.

所以我的问题是如何使第二种方法与第一种方法等效,所以我可以加载另一种文件。

1 个答案:

答案 0 :(得分:1)

将参数传递给来自输入XML的document函数是很好的,例如给出一个像

这样的输入XML文档
<Input language="Dutch">
  ....
</Input>

你可以设置一个变量

<xsl:variable name="language" select="document(concat(/Input/@language, '.xml'))" />

请注意,您根本不需要node-set功能,因为document会直接返回一个节点集。