互聯網上有很多引用與我有同樣的問題。這是命名空間的添加,我看到了和我一樣的這個:Adding namespace in inner parent group in xslt v2.0。但在我的情況下,我沒有父標記中的名稱空間,並將名稱空間插入到內層組中。我試圖複製解決方案,但無法獲得預期的輸出結果。例如,我有這樣的樣本文件,使用xslt2.0添加命名空間
輸入:
<Record>
<Data>
<Section>
<ID>111222</ID>
</Section>
</Data>
</Record>
預期:
<Record>
<Data>
<Section xmlns="www.hdgd.co">
<ID>111222</ID>
</Section>
</Data>
</Record>
XSLT:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*">
<xsl:element name="{local-name()}">
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
<xsl:template match="Section">
<Section xmlns="www.hdgd.co">
<xsl:copy-of select="*"/>
</Section>
</xsl:template>
生成的輸出在ID元素中填充了一個空的名稱空間。而且,我需要刪除那些空的xmlns。這個樣子的:
<Record>
<Data>
<Section xmlns="www.hdgd.co">
<ID xmlns="">111222</ID>
</Section>
</Data>
</Record>
不要認爲它是「添加命名空間」。把它想象成改變元素的名字。如果您正確地獲取元素的名稱,那麼名稱空間聲明將自行管理。元素的名稱是(名稱空間URI,本地名稱)對。 –