XML ファイルからすべての名前空間を削除したいのですが、次のような解決策が見つかりました。
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes" method="xml" encoding="utf-8" omit-xml-declaration="yes"/>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates select="@* | node()"/>
</xsl:element>
</xsl:template>
<!-- template to copy attributes -->
<xsl:template match="@*">
<xsl:attribute name="{local-name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
<!-- template to copy the rest of the nodes -->
<xsl:template match="comment() | text() | processing-instruction()">
<xsl:copy/>
</xsl:template>
</xsl:stylesheet>
前の例に新しい xslt コードを追加するだけで、この xslt でこの XML を使用して他の編集操作 (新しいタグの作成、ノードの検索) を行うにはどうすればよいですか? 2 つの xslt ファイルを作成したくありません。一方のファイルで名前空間を削除し、別の xslt ファイルで編集操作を行います。
編集。たとえば、次の xml ソースがあります。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Body>
<ns2:completeProductionPlan xmlns="http://ServiceManagement/OIS_Services_v01.00/common"
xmlns:ns2="http://ServiceManagement/TechnicalOrderManagement/ProductionFulfillment_v01.00/types">
<ns2:messageID>
<value>9133235059913398501_9133235059913398860</value>
</ns2:messageID>
</ns2:completeProductionPlan>
</soapenv:Body>
</soapenv:Envelope>
これを取得したい:
<?xml version="1.0" encoding="UTF-8"?>
<CompletePP >
<MessageId>9133235059913398501_9133235059913398860</MessageId>
</CompletePP>
そして、1 つの xslt ファイルで実行したいすべての xslt 操作