2015-12-19 420 views
1

我正在從MuleSoft生成XML文件,並生成這樣的空標籤。如何刪除此使用XSLT使用XSLT刪除命名空間

<SerialNumber xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> 

我用XSLT這樣的代碼試過,

<?xml version="1.0" encoding="utf-8"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:output method="xml" indent="yes"/> 
    <xsl:template match="*"> 
    <xsl:element name="{local-name(.)}"> 
     <xsl:apply-templates select="@* | node()"/> 
    </xsl:element> 
    </xsl:template> 
    <xsl:template match="@*"> 
    <xsl:attribute name="{local-name(.)}"> 
     <xsl:value-of select="."/> 
    </xsl:attribute> 
    </xsl:template> 
    <xsl:template match="@*[local-name(.)='noNamespaceSchemaLocation']"/> 
</xsl:stylesheet> 

其產生輸出一樣,<SerialNumber nil="true"/>我想刪除整個命名空間和輸出應該看起來像<SerialNumber/>

如何使用XSLT實現這一目標?

在此先感謝

+0

嗯,我們需要看到的最小輸入採樣,以瞭解其中的命名空間從何而來。 –

+0

您的問題不清楚:「*我想刪除整個名稱空間*」'xsi:nil =「true」'是屬性,而不是名稱空間。你想刪除這個特定的屬性,或所有的屬性? - P.S.請選擇XSLT 1.0或2.0,而不是兩者。 –

+0

我想從節點中刪除整個xmlns:xsi =「http://www.w3.org/2001/XMLSchema-instance」xsi:nil =「true」 –

回答

1

如果你想刪除的屬性,然後添加<xsl:template match="@xsi:nil" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>

+0

其工作馬丁 –

0

我從MuleSoft生成XML文件,它生成這樣的空標籤 。如何刪除此使用XSLT

<SerialNumber xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> 

這種轉變

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes" indent="yes"/> 

    <xsl:template match="*"> 
    <xsl:element name="{local-name()}"> 
     <xsl:copy-of select="@*[not(name()='xsi:nil')]"/> 
    </xsl:element> 
    </xsl:template> 
</xsl:stylesheet> 

當所提供的XML文檔應用:

<SerialNumber xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> 

產生想要的,正確的結果

<SerialNumber/> 

人們甚至可以使用更短:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output omit-xml-declaration="yes"/> 

    <xsl:template match="*"> 
    <xsl:element name="{local-name()}"/> 
    </xsl:template> 
</xsl:stylesheet> 
+0

感謝您的建議Dimitre –

+0

@RohanShinde,不客氣。 –