2012-12-24 99 views
-2

我試圖在保留所有其他結構和屬性的同時向選定節點添加新父節點。向選定節點添加新父節點xslt

原來的結構(屬性,並從樣品中除去其他孩子)

<document> 
<pages> 
    <page> 
     <stream> 
      <block> 
       <table/> <!-- any number or tables or groups can exist in a block --> 
       <group/> 
      </block> 
     </stream> 
    </page> 
</pages> 
</document> 

要求的結果:

<document> 
<pages> 
    <page> 
     <stream> 
      <block> 
       <category> <!-- NEW PARENT, only 1 table per category--> 
        <table/> 
       </category> 
       <category> <!-- NEW PARENT, only 1 group per category --> 
        <group/> 
       </category> 
      </block> 
     </stream> 
    </page> 
</pages> 
</document> 

這似乎是這樣一個很重要的問題,但我似乎無法弄清楚或在網上找到解決方案。

感謝

回答

1

Identity Transform,有一個額外的模板匹配block/*這則包裹在<category></category>每場比賽。

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    version="1.0"> 
    <xsl:template match="@*|node()"> 
     <xsl:copy> 
      <xsl:apply-templates select="@*|node()"/> 
     </xsl:copy> 
    </xsl:template> 
    <xsl:template match="block/*"> 
     <category> 
      <xsl:copy> 
       <xsl:apply-templates select="@*|node()"/> 
      </xsl:copy> 
     </category> 
    </xsl:template> 
</xsl:stylesheet> 
+0

謝謝。這樣做的工作。它沒有對我的真實文檔工作,我意識到這是一個命名空間問題。再次感謝。 – David