1
次のXSLTを使用してXML文書のコンテンツを変換しようとしています。しかし、私の要素の1つは、以前の名前空間でコピーされています。下記参照。XSLTですべての要素の名前空間を変更する
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:cd="http://schemas.datacontract.org/2004/07/CMachine" xmlns="http://schemas.datacontract.org/2004/07/CMachine.DataContracts" exclude-result-prefixes="cd">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:strip-space elements="*" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="cd:ArrayOfMachine">
<Inventory>
<Schema>2018</Schema>
<Machines>
<xsl:apply-templates select="@*|node()" />
</Machines>
</Inventory>
</xsl:template>
</xsl:stylesheet>
入力:
出力:
<?xml version="1.0" encoding="utf-8"?>
<Inventory xmlns="http://schemas.datacontract.org/2004/07/CMachine.DataContracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Schema>2018</Schema>
<Machines>
<Machine xmlns="http://schemas.datacontract.org/2004/07/CMachine">
<Price>120000</Price>
<Properties>
<Axes>XYZ</Axes>
</Properties>
</Machine>
</Machines>
</Inventory>
所望の出力:
<?xml version="1.0" encoding="utf-8"?>
<Inventory xmlns="http://schemas.datacontract.org/2004/07/CMachine.DataContracts" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
<Schema>2018</Schema>
<Machines>
<Machine>
<Price>120000</Price>
<Properties>
<Axes>XYZ</Axes>
</Properties>
</Machine>
</Machines>
</Inventory>
この問題を解決するためにXSLTに必要とされている何のひねり? ご協力いただければ幸いです!