2017-03-07 11 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>は私の例X = 3で、<param>のx数を有します。最後の<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

感謝。出来た。 –

関連する問題