相关疑难解决方法(0)

XSL:避免将命名空间定义导出到生成的XML文档

我想从一些XML文件中获取数据并将它们转换为新的XML文档.但是,我不希望在结果文档中发生XSLT中的命名空间定义.

换一种说法:

资源:

<Namespace:Root xmlns:Namespace="http://www.something.com">
Run Code Online (Sandbox Code Playgroud)

样式表:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:Namespace="http://www.something.com">
Run Code Online (Sandbox Code Playgroud)

结果:

<resultRoot xmlns:Namespace="http://www.something.com">
<!--I don't want the Namespace definition above-->
Run Code Online (Sandbox Code Playgroud)

我正在使用msxsl进行转换.

xml xslt namespaces export msxsl

43
推荐指数
2
解决办法
5万
查看次数

XSLT:将命名空间添加到根元素

我需要更改根元素中的名称空间,如下所示:

输入文件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<foo xsi:schemaLocation="urn:isbn:1-931666-22-9 http://www.loc.gov/ead/ead.xsd"
xmlns:ns2="http://www.w3.org/1999/xlink" xmlns="urn:isbn:1-931666-22-9"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
Run Code Online (Sandbox Code Playgroud)

期望的输出:

<foo audience="external" xsi:schemaLocation="urn:isbn:1-931666-22-9
     http://www.loc.gov/ead/ead.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-
    instance" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns="urn:isbn:1-931666-22-9">
Run Code Online (Sandbox Code Playgroud)

当我复制整个文档并且在给出任何其他转换指令之前,我试图这样做,但以下不起作用:

<xsl:template match="* | processing-instruction() | comment()">
    <xsl:copy copy-namespaces="no">
        <xsl:for-each select=".">
            <xsl:attribute name="audience" select="'external'"/>
            <xsl:namespace name="xlink" select="'http://www.w3.org/1999/xlink'"/>
        </xsl:for-each>
        <xsl:copy-of select="@*"/>
        <xsl:apply-templates/>
    </xsl:copy>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)

谢谢你的建议!

xslt namespaces

7
推荐指数
1
解决办法
2万
查看次数

标签 统计

namespaces ×2

xslt ×2

export ×1

msxsl ×1

xml ×1