2011-03-21 84 views
0

我有這樣的XML文檔如下:複製XML文檔與除元素的黑色列表中的所有元素

<root> 
    <record> 
     <element1>value1</element1> 
     <element2>value2</element2> 
     <element3>value3</element3> 
     <element4>value4</element4> 
     <element5>value5</element5> 
     <repeatingelement1>value 1.1</repeatingelement1> 
     <repeatingelement1>value 1.2</repeatingelement1> 
     <repeatingelement1>value 1.3</repeatingelement1> 
     <repeatingelement2>value 2.1</repeatingelement2> 
     <repeatingelement2>value 2.2</repeatingelement2> 
     <repeatingelement2>value 2.3</repeatingelement2> 
    </record> 
    <record> 
     <element1>a</element1> 
     <element2>b</element2> 
     <element3>c</element3> 
     <element4>d</element4> 
     <element5>e</element5> 
     <repeatingelement1>a 1.1</repeatingelement1> 
     <repeatingelement1>a 1.2</repeatingelement1> 
     <repeatingelement1>a 1.3</repeatingelement1> 
     <repeatingelement2>b 2.1</repeatingelement2> 
     <repeatingelement2>b 2.2</repeatingelement2> 
     <repeatingelement2>b 2.3</repeatingelement2> 
    </record> 
    <record> 
     <element1>value1</element1> 
     <element2>value2</element2> 
     <element3>value3</element3> 
     <element4>value4</element4> 
     <element5>value5</element5> 
     <repeatingelement1>value 1.1</repeatingelement1> 
     <repeatingelement1>value 1.2</repeatingelement1> 
     <repeatingelement1>value 1.3</repeatingelement1> 
     <repeatingelement2>value 2.1</repeatingelement2> 
     <repeatingelement2>value 2.2</repeatingelement2> 
     <repeatingelement2>value 2.3</repeatingelement2> 
    </record> 
</root> 

我希望能夠獲得XML的一個副本,而不要素說的黑名單沒有element3repeatingelement2

E.g.輸出將是:

<root> 
    <record> 
     <element1>value1</element1> 
     <element2>value2</element2> 
     <element4>value4</element4> 
     <element5>value5</element5> 
     <repeatingelement1>value 1.1</repeatingelement1> 
     <repeatingelement1>value 1.2</repeatingelement1> 
     <repeatingelement1>value 1.3</repeatingelement1> 
    </record> 
    <record> 
     <element1>a</element1> 
     <element2>b</element2> 
     <element4>d</element4> 
     <element5>e</element5> 
     <repeatingelement1>a 1.1</repeatingelement1> 
     <repeatingelement1>a 1.2</repeatingelement1> 
     <repeatingelement1>a 1.3</repeatingelement1> 
    </record> 
    <record> 
     <element1>value1</element1> 
     <element2>value2</element2> 
     <element4>value4</element4> 
     <element5>value5</element5> 
     <repeatingelement1>value 1.1</repeatingelement1> 
     <repeatingelement1>value 1.2</repeatingelement1> 
     <repeatingelement1>value 1.3</repeatingelement1> 
    </record> 
</root> 

有沒有人有這個版本1.0的理想的Xsl?我能想到的唯一辦法就是寫出所有元素的XSLT,並將XSL替換爲我不想要的元素。

+1

這需要有某種常見問題 - 你是第二個人來問這個問題今天* * :) – 2011-03-21 14:15:27

+0

我有一個很好的掃描,通過詢問..很多類似的問題之前。但不完全是我想要的...... – CraftyFella 2011-03-21 16:14:40

回答

6

這非常容易;只需創建一個包含標識模板的樣式表,然後替換您想要刪除的元素並且不輸出。就像這樣:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="element3|repeatingelement2" /> 

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

優秀。謝謝 – CraftyFella 2011-03-21 14:11:51