私はxsltが初めてです。XML をあるスキーマから別のスキーマに変換しようとしています。変換後に古い名前空間を「取り除き」たい。変換自体に必要な場合、変換後に古いスキーマを消去するにはどうすればよいですか。本質的に、私は立ち去り、 (ノードの名前を変更した後)にhttp://positionskillmanagementservice.webservices.com
完全に置き換えたいと考えています。http://newschema
Dimitre Novatchevのメソッドを介して、必要なことのほとんどを行うことができます: 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>
このツールで動作を確認しています。