我想导入或包含两个或更多外部xsl到我的主xsl。
每个xsl都有一个dictonary
<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
答案 0 :(得分:2)
首先,您向我们展示的不是“两个复杂的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()函数..