André Laugks: Teilbaum sortieren und "neu schreiben"

Beitrag lesen

Hallo!

Ich möchte ein Teilbaum sortieren und wieder "virtuell" in das XML-Dokument "neu schreiben"/"kopieren". Muß nicht an der selben Stelle ein.

Hintergrund ist eine Blätternfunktion.

Ich möchte mit vorname[position()>=1 and position<=2] nicht Ingo und Andre haben, sondern Andre und Dieter.

  
<root>  
   <foo>  
      <bar>FooBar</bar>  
   </foo>  
   <namen>  
     <eintrag>  
        <vornamen>Ingo</vorname>  
        <nachname>Schmidt</nachname>  
     </eintrag>  
     <eintrag>  
        <vornamen>Andre</vorname>  
        <nachname>Laugks</nachname>  
     </eintrag>  
     <eintrag>  
        <vornamen>Dieter</vorname>  
        <nachname>Meyer</nachname>  
     </eintrag>  
  </namen>  
</root>  

Nach der Sortierung.

  
<root>  
   <foo>  
      <bar>FooBar</bar>  
   </foo>  
   <namen>  
     <eintrag>  
        <vornamen>Andre</vorname>  
        <nachname>Laugks</nachname>  
     </eintrag>  
     <eintrag>  
        <vornamen>Dieter</vorname>  
        <nachname>Meyer</nachname>  
     </eintrag>  
     <eintrag>  
        <vornamen>Ingo</vorname>  
        <nachname>Schmidt</nachname>  
     </eintrag>  
  </namen>  
</root>  

Ich habe schon eine andere Lösung, würde es aber gern mit die hier gefragten Lösung machen, weil ich mit XPath noch herumwandern möchte um Daten zu selektieren.

  
<?xml version="1.0" encoding="ISO-8859-1"?>  
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">  
    <xsl:output method="xml" encoding="ISO-8859-1"/>  
    <xsl:template match="/root">  
        <html>  
            <body>  
  
                <table border="1">  
                    <tr>  
                        <td>Name</td>  
                    </tr>  
                    <xsl:apply-templates select="eintrag">  
                        <xsl:sort/>  
                    </xsl:apply-templates>  
                </table>  
  
            </body>  
        </html>  
    </xsl:template>  
  
    <xsl:template match="eintrag">  
       <xsl:if test="position() &gt;= 10 and position() &lt;= 19">  
        <tr>  
            <td><xsl:value-of select="vorname"/></td>  
        </tr>  
       </xsl:if>  
    </xsl:template>  
  
</xsl:stylesheet>  

André Laugks

--
Die Frau geht, die Hilti bleibt!