我是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。