Я новичок в xslt. Я пытаюсь преобразовать XML из одной схемы в другую схему. Я хочу «избавиться» от старого пространства имен после преобразования. Как я могу удалить старую схему после преобразования, если мне это нужно для самого преобразования. По сути, я хочу, чтобы http://positionskillmanagementservice.webservices.com
ушел и полностью был заменен http://newschema
(после того, как я переименовал узлы). Я в состоянии сделать большую часть того, что я хочу с помощью метода Dimitre Novatchev в от: change the namespace of an element with xsltизбавиться от старого пространства имен с помощью xslt
Это XML:
<ns:positionSkillResponse xmlns:ns="http://positionskillmanagementservice.webservices.com">
<ns:return>1</ns:return>
<ns:return>9</ns:return>
</ns:positionSkillResponse>
Это XSLT:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ns="http://positionskillmanagementservice.webservices.com"
version="1.0">
<xsl:output method="xml" />
<xsl:template match="ns:return">
<parameter>
<xsl:apply-templates select="@*|node()"/>
</parameter>
</xsl:template>
<xsl:template match="ns:position">
<parameter>
<xsl:apply-templates select="@*|node()"/>
</parameter>
</xsl:template>
<xsl:template match="ns:positionSkillResponse">
<positionSkillRequest >
<xsl:apply-templates select="@*|node()"/>
</positionSkillRequest >
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
Я проверяю работу с this tool.