将两个复杂的 XSLT 变量联接为一个新变量



我喜欢将两个或多个外部 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() 函数。

相关内容

  • 没有找到相关文章

最新更新