我想在我的XSL 1.0中创建一个带有一些命名空间的元素就像这样:
<element xmlns:a = '...' xmlns:b = '...' xmlns = '...' >
出于某种原因,我无法使用XSL 2.0,使用<xsl:namespace>
扩展,在XSL 1.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
试试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>