2017-10-09 181 views
0

我有下面的xml文件,這是來自我的供應商。忽略節點使用XSLT

<?xml version="1.0" encoding="UTF-8"?> 
<nm:MT_employee xmlns:nm="http://firstscenario.com"xmlns:tl="http://secondscenario.com"> 
    <EMployeeDetails> 
    <Name>Janardhan</Name> 
    <id>1234</id> 
    <Address>India</Address> 
    </EMployeeDetails> 
<tl:Extension> 
    <tl:Number>5678</tl:Number> 
    <tl:Salary>2345678</tl:Salary> 
    </tl:Extension> 
    </nm:MT_employee> 

在上面的XML我想忽略整個TL:擴展節點。最終輸出應該如下

<?xml version="1.0" encoding="UTF-8"?> 
<nm:MT_employee xmlns:nm="http://firstscenario.com"xmlns:tl="http://secondscenario.com"> 
    <EMployeeDetails> 
    <Name>Janardhan</Name> 
    <id>1234</id> 
    <Address>India</Address> 
    </EMployeeDetails> 
    </nm:MT_employee> 

我試着用不同的XSLT代碼,但它不工作。你能建議我怎麼能做到這一點?

問候, Janardhan

+0

您可以編輯您的問題,以顯示你已經嘗試了最新的XSLT那就是「不工作」?如果你說爲什麼它不起作用(也就是說你得到一個錯誤,或者你得到的結果不是你所期望的),它也會有所幫助。謝謝 –

回答

0

的一般規則「忽略」從源XML 一個元素是寫一個「空」模板這個元素,你的情況:

<xsl:template match="tl:Extension"/> 

由於該模板是指tl命名空間,它必須在xsl:transform標記中指定爲 。

當然,要複製源內容的其餘部分,您的腳本 必須包含標識模板

下面你有一個示例腳本:

<?xml version="1.0" encoding="UTF-8" ?> 
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:tl="http://secondscenario.com" version="1.0"> 
    <xsl:output method="xml" indent="yes" /> 

    <xsl:template match="tl:Extension"/> 

    <xsl:template match="@*|node()"> 
    <xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy> 
    </xsl:template> 
</xsl:transform>