这是我的XML源
<?xml version="1.0" encoding="UTF-8"?>
<tns:Grand_Parent_XML xmlns:tns="http://www.domain.com/">
<GrandParent>
<Parent>
<Child xmlns:tns="http://www.domain.com/">
<Age>3</Age>
<Gender>Male</Gender>
<Name>Todd</Name>
</Child>
<Other>1234</Other>
</Parent>
</GrandParent>
</tns:Grand_Parent_XML>
这是XSLT的主体,我正在使用......
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="Grand_Parent_XML">
<xsl:element name="tns:{name()}" namespace="http://www.domain.com/">
<xsl:copy-of select="namespace::*"/>
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
<xsl:template match="node()|@*">
<xsl:if test="normalize-space(string(.)) != ''">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:if>
</xsl:template>
<xsl:template match="Parent">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
<Child>
<xsl:apply-templates select="Child/*"/>
</Child>
</xsl:copy>
</xsl:template>
<xsl:template match="Child"/>
我想删除xmlns:tns =&#34;&#34;在Child上并将其保存在Grand_Parent_XML中。我在这里尝试了其他建议,比如在XSLT的底部创建以下代码,但它不起作用。任何帮助将不胜感激。
<xsl:template match="Child">
<xsl:apply-templates />
</xsl:template>
答案 0 :(得分:1)
简单的身份转换删除了冗余的名称空间声明,仅此而已。测试了Saxon 6.5和9.5。
在编辑之前,您的XML输入有一个名称空间声明,如
xmlns:tns=""
请注意, undeclaring 命名空间在XML 1.0中是非法的,但在XML 1.1中是可能的。如果您已将文件的前导码更改为以下内容,则XML解析器不会引发错误:
<?xml version="1.1" encoding="UTF-8"?>
<强>样式表强>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
XML输入
<?xml version="1.0" encoding="UTF-8"?>
<tns:Grand_Parent_XML xmlns:tns="http://www.domain.com/">
<GrandParent>
<Parent>
<Child xmlns:tns="http://www.domain.com/">
<Age>3</Age>
<Gender>Male</Gender>
<Name>Todd</Name>
</Child>
<Other>1234</Other>
</Parent>
</GrandParent>
</tns:Grand_Parent_XML>
XML输出
<?xml version="1.0" encoding="utf-8"?>
<tns:Grand_Parent_XML xmlns:tns="http://www.domain.com/">
<GrandParent>
<Parent>
<Child>
<Age>3</Age>
<Gender>Male</Gender>
<Name>Todd</Name>
</Child>
<Other>1234</Other>
</Parent>
</GrandParent>
</tns:Grand_Parent_XML>
答案 1 :(得分:0)
试试这个:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>