Removal of Namespace using XSLT is not Working

时间:2016-12-02 04:52:49

标签: xml xslt xml-namespaces

I am trying to remove existing namespaces and add another namespace to my XML Document. When i didnt added the attribute, it was working. Now, when i added an attribute "id" the removal code is not working.

My XML Document is:

<?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>

What i want it to be is:

<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>

The XSLT Code which i applied( Was working before using my previous post Unable to Update the Namespace of XML Document ) was:

<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>

1 个答案:

答案 0 :(得分:1)

如果您的输入具有属性,则需要执行以下操作:

<xsl:copy-of select="@*"/>

之前:

<xsl:apply-templates/>