使用 XSLT 删除命名空间不起作用
Removal of Namespace using XSLT is not Working
我正在尝试删除现有命名空间并向我的 XML 文档添加另一个命名空间。当我没有添加属性时,它正在工作。现在,当我添加属性 "id" 时,删除代码不起作用。
我的XML文档是:
<?xml version="1.0" encoding="UTF-8"?>
<n0:eCPR xmlns:prx="urn:sap.com:proxy:DV4:/1SAI/TAS1F59A417878D36573F1D:700:2013/05/24" xmlns:n0="http://www.dir.ca.gov/dlse/CPR-Prod-Test/CPR.xsd">
<n0:employees>
<n0:employee>
<n0:name id="20019768">Paul John</n0:name>
</n0:employee>
</n0:employees>
</n0:eCPR>
我想要的是:
<CPR:eCPR xmlns:CPR="http://www.dir.ca.gov/dlse/CPR-Prod-Test/CPR.xsd">
<CPR:employees>
<CPR:employee>
<CPR:name id="12345">JOHN SMITH</CPR:name>
</CPR:employee>
</CPR:employees>
</CPR:eCPR>
我应用的 XSLT 代码(在使用我以前的 post 之前工作)是:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:CPR="http://www.dir.ca.gov/dlse/CPR-Prod-Test/CPR.xsd">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*">
<xsl:element name="CPR:{local-name()}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
如果你的输入有属性,你需要做:
<xsl:copy-of select="@*"/>
在你做之前:
<xsl:apply-templates/>
我正在尝试删除现有命名空间并向我的 XML 文档添加另一个命名空间。当我没有添加属性时,它正在工作。现在,当我添加属性 "id" 时,删除代码不起作用。
我的XML文档是:
<?xml version="1.0" encoding="UTF-8"?>
<n0:eCPR xmlns:prx="urn:sap.com:proxy:DV4:/1SAI/TAS1F59A417878D36573F1D:700:2013/05/24" xmlns:n0="http://www.dir.ca.gov/dlse/CPR-Prod-Test/CPR.xsd">
<n0:employees>
<n0:employee>
<n0:name id="20019768">Paul John</n0:name>
</n0:employee>
</n0:employees>
</n0:eCPR>
我想要的是:
<CPR:eCPR xmlns:CPR="http://www.dir.ca.gov/dlse/CPR-Prod-Test/CPR.xsd">
<CPR:employees>
<CPR:employee>
<CPR:name id="12345">JOHN SMITH</CPR:name>
</CPR:employee>
</CPR:employees>
</CPR:eCPR>
我应用的 XSLT 代码(在使用我以前的 post
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:CPR="http://www.dir.ca.gov/dlse/CPR-Prod-Test/CPR.xsd">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*">
<xsl:element name="CPR:{local-name()}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
如果你的输入有属性,你需要做:
<xsl:copy-of select="@*"/>
在你做之前:
<xsl:apply-templates/>