2017-03-07 30 views
-1

我想將具有重複元素的XML轉換爲具有基於位置分組的元素的另一個XML。用於將重複的XML轉換爲基於位置的分組的XML的Xpath或XSLT

樣品輸入XML

<root> 
    <param>test1</param> 
    <param>test2</param> 
    <param>test3</param> 
    <param>test4</param> 
    <param>test5</param> 
    <param>test6</param> 
    <param>test7</param> 
    <param>test8</param> 
</root> 

希望的輸出

<root> 
    <group> 
     <param>test1</param> 
     <param>test2</param> 
     <param>test3</param> 
    </group> 
    <group> 
     <param>test4</param> 
     <param>test5</param> 
     <param>test6</param> 
    </group> 
    <group> 
     <param>test7</param> 
     <param>test8</param> 
    </group> 
</root> 

輸出中的每個<group>具有<param> x個,在我的例子X = 3。基於輸入,最後的<group>可能包含較少數量的<param>

回答

0

你可以這樣做:

XSLT 1.0

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

<xsl:template match="/root"> 
    <xsl:copy> 
     <xsl:for-each select="param[position() mod 3 = 1]"> 
      <group> 
       <xsl:copy-of select=". | following-sibling::param[position() &lt; 3]"/> 
      </group> 
     </xsl:for-each> 
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet> 
+0

感謝。有效。 –