2010-04-14 55 views
3

刪除XML標記,我有以下XML文件:用XSLT

<xfa:data> 
    <form1> 
    <Page1> 
    <Page2> 
    <contractInfo> ... </contractInfo> 
    <paymentInfo> ... </paymentInfo> 
    </form1> 
    <commercialType> .... </commercialType> 
    <userList> ... </userList> 
    <officesList> ... </officesList> 
    <commercialType> .... </commercialType> 
    <userList> ... </userList> 
    <officesList> ... </officesList> 
    <commercialType> .... </commercialType> 
    <userList> ... </userList> 
    <officesList> ... </officesList> 
</xfa:data> 

我想刪除commercialType,用戶列表和officesList節點的每一個ocurrence,所以我的輸出將是:

<xfa:data> 
    <form1> 
    <Page1> 
    <Page2> 
    <contractInfo> ... </contractInfo> 
    <paymentInfo> ... </paymentInfo> 
    </form1> 
</xfa:data> 

我怎麼能這樣做使用XSLT?

謝謝

+0

很好的問題(1)。 請參閱我的答案,瞭解使用並覆蓋「身份規則」的完整解決方案。 :) – 2010-04-14 23:21:23

回答

14

該變換產生所期望的結果

<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="node()|@*"> 
    <xsl:copy> 
    <xsl:apply-templates select="node()|@*"/> 
    </xsl:copy> 
</xsl:template> 

<xsl:template match="commercialType|userList|officesList"/> 
</xsl:stylesheet> 
+0

謝謝,你的迅速反應是在這裏節省了一天 – azathoth 2010-04-14 23:55:47

+0

它不適合我。任何想法? – Rohit 2013-08-19 14:21:10

+0

@Rohit,什麼是「它」,什麼「不起作用」?你確定你有和這個問題相同的源XML文檔嗎?你確定你執行與此答案中的轉換相同的轉換嗎?您確定您使用的是兼容的,無bug的XSLT處理器嗎? – 2013-08-19 14:27:30

0

身份轉換加<xsl:template match="commercialType" priority="10"/>