我喜欢将两个或多个外部 xsl 导入或包含到我的主 xsl。
每个 xsl 都有一个字典
<my:dictonary>
<my:entrys lang="en">
<firstname>First Name</firstname>
<lastname>Last Name</lastname>
</my:entrys>
</my:dictonary>
<my:dictonary>
<my:entrys lang="de">
<firstname>Vorname</firstname>
<lastname>Nachname</lastname>
</my:entrys>
</my:dictonary>
现在我喜欢将所有这些放在一个变量中
<my:dictonary>
<my:entrys lang="en">
<firstname>First Name</firstname>
<lastname>Last Name</lastname>
</my:entrys>
<my:entrys lang="de">
<firstname>Vorname</firstname>
<lastname>Nachname</lastname>
</my:entrys>
</my:dictonary>
在没有任何扩展的 xslt 1.0 中可以做到这一点吗?
谢谢
T.S
首先,您向我们展示的不是"两个复杂的 XSLT 变量",而是两个 XML 节点集。您可以轻松地将它们组合成一个变量,例如:
<xsl:variable name="en" select="document('file1.xml')/dictonary/entrys" />
<xsl:variable name="de" select="document('file2.xml')/dictonary/entrys" />
<xsl:variable name="common" select="$en | $de" />
请注意,我已经从两个源节点集中删除了my:
前缀,因为 (a) 它不是必需的,并且 (b) 您没有为它提供命名空间。
生成的$common变量具有以下内容:
<entrys lang="en">
<firstname>First Name</firstname>
<lastname>Last Name</lastname>
</entrys>
<entrys lang="de">
<firstname>Vorname</firstname>
<lastname>Nachname</lastname>
</entrys>
并且内容的数据类型是node-set
- 因此您可以在<xsl:for-each>
中使用它或对其应用模板,而无需 EXSLT node-set() 函数。