原始请求
<?xml version="1.0" encoding="utf-8"?>
<typ:CustomerResponse xmlns:typ="http://xml.mycomp.com/customer/types">
<typ:CustomerReturn>
<typ:Address>
<typ:state>PA</typ:state>
<typ:city>Harrisburg</typ:city>
</typ:Address>
<typ:User>
<typ:firstName>test</typ:firstName>
<typ:lastName>test</typ:lastName>
</typ:User>
</typ:CustomerReturn>
</typ:CustomerResponse>
我使用下面的xslt删除了xml命名空间。
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:output method="xml" indent="yes" />
<xsl:template match="*">
<xsl:element name="{local-name(.)}">
<xsl:apply-templates select="@* | node()" />
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{local-name(.)}">
<xsl:value-of select="." />
</xsl:attribute>
</xsl:template>
<xsl:template match="@xsi:nil[.='true']"/>
</xsl:stylesheet>
在具有命名空间的原始xml上运行上述转换后,我得到以下内容 -
<?xml version="1.0" encoding="utf-8"?>
<CustomerResponse>
<CustomerReturn>
<Address>
<state>PA</state>
<city>Harrisburg</city>
</Address>
<User>
<firstName>test</firstName>
<lastName>test</lastName>
</User>
</CustomerReturn>
</CustomerResponse>
我想增强现有的xslt文件以获得类似于下面的输出。
预期产出
<CustomerResponse>
<Address>
<state>PA</state>
<city>Harrisburg</city>
</Address>
<User>
<firstName>test</firstName>
<lastName>test</lastName>
</User>
</CustomerResponse>
答案 0 :(得分:2)
以这种方式试试吗?
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:typ="http://xml.mycomp.com/customer/types"
exclude-result-prefixes="typ">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="typ:CustomerReturn">
<xsl:apply-templates/>
</xsl:template>
</xsl:stylesheet>