具有多个名称空间和不同前缀的XSL元素

问题描述 投票:0回答:2

我想在我的XSL 1.0中创建一个带有一些命名空间的元素就像这样:

<element xmlns:a = '...' xmlns:b = '...' xmlns = '...' >

出于某种原因,我无法使用XSL 2.0,使用<xsl:namespace>扩展,在XSL 1.0中只为每个元素声明了一个允许的命名空间,我该怎么办?

问候,

xml xslt namespaces prefix
2个回答
0
投票

适合我。

如果我制作文件test.xsl

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
    <root>
        <multins xmlns:abc="http://example.com/1" xmlns:def="http://example.com/2" />
    </root>
</xsl:template>

</xsl:stylesheet>

然后运行它

xsltproc test.xsl test.xsl
<?xml version="1.0"?>
<root><multins xmlns:abc="http://example.com/1" xmlns:def="http://example.com/2"/></root>

有这个版本信息:

$ xsltproc --version
Using libxml 20703, libxslt 10124 and libexslt 813
xsltproc was compiled against libxml 20632, libxslt 10124 and libexslt 813
libxslt 10124 was compiled against libxml 20632
libexslt 813 was compiled against libxml 20632

0
投票

试试W3C XSLT 2.0规范:Creating Namespace Nodes。它的要点是您可以在其他元素中创建元素以将这些命名空间放入范围。

Example:

<!--XSLT 2.0-->
<data xsi:type="xs:integer" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <xsl:namespace name="xs" select="'http://www.w3.org/2001/XMLSchema'"/>
  <xsl:text>42</xsl:text>
</data>

<!--XSLT 1.0-->
<data xsi:type="xs:integer"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  42
</data>
© www.soinside.com 2019 - 2024. All rights reserved.