1
我試圖從轉換的XML刪除空間中聲明空間聲明的問題
請到這裏:http://xslttest.appspot.com/
輸入XML:
<Products xmlns="http://api.company.com.au/Data" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Product>
<Code>BM54</Code>
</Product>
</Products>
XSLT模板
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:d="http://api.company.com.au/Data" exclude-result-prefixes="d">
<xsl:output method="xml" omit-xml-declaration="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="d:Product">
<DONE>
<xsl:apply-templates select="@* | node()"/>
</DONE>
</xsl:template>
<xsl:template match="@Product">
<xsl:attribute name="DONE">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
結果是:
<Products xmlns="http://api.company.com.au/Data" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DONE xmlns="">
<Code xmlns="http://api.company.com.au/Data">BM54</Code>
</DONE>
</Products>
我希望它是:
<Products xmlns="http://api.company.com.au/Data" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<DONE>
<Code>BM54</Code>
</DONE>
</Products>
請注意,這並不是「刪除名稱空間」 - 實際上,您將「DONE」元素放入正確的名稱空間中,以便從父級繼承默認名稱空間。它所做的是避免取消繼承的默認值。這是樣本輸出中要求的內容,但不是原始海報認爲他們要求的內容。 – keshlam
如果您在帖子的底部閱讀,OP會列出他的要求。可能是OP想說「我試圖從轉換後的xml中的一些節點中刪除不需要的名稱空間聲明」。 –
非常感謝這麼多:) – Paul