2013-07-03 1 views
0

<item> 노드 및 이전 <item> 노드에서 데이터를 출력하려고합니다. 이전 <item> 노드에 액세스 할 수 있지만 동일한 <group>에 있지만 한 번 다음 그룹으로 이동하면 이전 노드가 느슨합니다.XML 병합 및 이전 노드

<?xml version="1.0"?> 
<?xml-stylesheet href="flatten.xslt" type="text/xsl"?> 
<data> 
    <group id="1"> 
     <title>Group Title 1</title> 
     <category>A</category> 
     <items> 
      <item id="11"> 
       <title>Title 11</title> 
      </item> 
      <item id="12"> 
       <title>Title 12</title> 
      </item> 
      <item id="13"> 
       <title>Title 13</title> 
      </item> 
      <item id="14"> 
       <title>Title 14</title> 
      </item> 
      <item id="16"> 
       <title>Title 15</title> 
      </item> 
      <item id="17"> 
       <title>Title 16</title> 
      </item> 
     </items> 
    </group> 

    <group id="2"> 
     <title>Group Title 2</title> 
     <category>A</category> 
     <items> 
      <item id="21"> 
       <title>Title 21</title> 
      </item> 
      <item id="23"> 
       <title>Title 22</title> 
      </item> 
      <item id="22"> 
       <title>Title 23</title> 
      </item> 
      <item id="24"> 
       <title>Title 24</title> 
      </item> 
      <item id="25"> 
       <title>Title 25</title> 
      </item> 
      <item id="27"> 
       <title>Title 27</title> 
      </item> 
     </items> 
    </group> 

    <group id="3"> 
     <title>Group Title 3</title> 
     <category>B</category> 
     <items> 
      <item id="31"> 
       <title>Title 31</title> 
      </item> 
      <item id="32"> 
       <title>Title 32</title> 
      </item> 
      <item id="33"> 
       <title>Title 33</title> 
      </item> 
      <item id="34"> 
       <title>Title 34</title> 
      </item> 
      <item id="36"> 
       <title>Title 36</title> 
      </item> 
      <item id="37"> 
       <title>Title 37</title> 
      </item> 
     </items> 
    </group> 

</data> 

나는이 찾고 있어요 :

<ul> 
    <li> 
     <h1>Item Title 11</h1> 
     <h2>Previous: </h2> 
    </li> 
    <li> 
     <h1>Item Title 12</h1> 
     <h2>Previous: Item Title 11</h2> 
    </li> 
    <li> 
     <h1>Item Title 13</h1> 
     <h2>Previous: Item Title 12</h2> 
    </li> 
    <li> 
     <h1>Item Title 14</h1> 
     <h2>Previous: Item Title 13</h2> 
    </li> 
    <li> 
     <h1>Item Title 15</h1> 
     <h2>Previous: Item Title 14</h2> 
    </li> 
    <li> 
     <h1>Item Title 16</h1> 
     <h2>Previous: Item Title 15</h2> 
    </li> 
    <li> 
     <h1>Item Title 21</h1> 
     <h2>Previous: Item Title 16</h2> 
    </li> 
    <li> 
     <h1>Item Title 22</h1> 
     <h2>Previous: Item Title 21</h2> 
    </li> 
    <li> 
     <h1>Item Title 23</h1> 
     <h2>Previous: Item Title 22</h2> 
    </li> 
    <li> 
     <h1>Item Title 24</h1> 
     <h2>Previous: Item Title 23</h2> 
    </li> 
</ul> 

답변

0

OK, 나는이 함께했다 :

  1. 모든 <item> 평면 구조로 밖으로 노드 당겨 새 변수를 만듭니다. 변수

통해

  • 루프 당신은 더 좋은 방법을 공유하시기 바랍니다 알고 있다면.

    <?xml version="1.0"?> 
    <xsl:stylesheet 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:exsl="http://exslt.org/common" 
    version="1.0"> 
    
        <xsl:output method="html"/> 
    
        <xsl:template match="/"> 
         <html> 
         <head> 
          <title>XSLT Flatten</title> 
         </head> 
    
         <body> 
    
          <xsl:variable name="flat-items"> 
           <xsl:element name="items"> 
            <xsl:for-each select="data/group/items/item"> 
             <xsl:copy-of select="."/> 
            </xsl:for-each> 
           </xsl:element> 
          </xsl:variable> 
    
          <p> 
           <h2>Total Items: <xsl:value-of select="count(exsl:node-set($flat-items)/items/item)"/></h2> 
          </p> 
    
          <ul> 
           <xsl:for-each select="exsl:node-set($flat-items)/items/item"> 
            <li> 
             <h2><xsl:value-of select="title"/> (<xsl:value-of select="@id"/>)</h2> 
             <h3>Previous: <xsl:value-of select="./preceding-sibling::item[1]/title"/> (<xsl:value-of select="./preceding-sibling::item[1]/@id"/>) 
             </h3> 
            </li> 
           </xsl:for-each> 
          </ul> 
    
         </body> 
         </html> 
    
        </xsl:template> 
    
    </xsl:stylesheet>