Thomas J.S.: Teilbaum sortieren und "neu schreiben"

Beitrag lesen

Hallo André,

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

Geht nicht.
Nich in dasselbe XML und nicht mit XSLT 1.0
Bei XSLT 2.0 könntest du mit einem temporären Baum arbeiten, z.B.:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output indent="yes" method="xml"/>
   <xsl:variable name="allnames">
      <xsl:for-each select="/root/namen/eintrag">
         <xsl:sort select="vorname"/>
         <xsl:copy-of select="."/>
      </xsl:for-each>
   </xsl:variable>
   <xsl:template match="/">
      <root>
         xsl:apply-templates/
      </root>
   </xsl:template>
    <xsl:template match="namen">
      <namen>
         <xsl:for-each select="$allnames/eintrag">
            <eintrag>
               <vor_name><xsl:value-of select="vorname"/></vor_name>
               <nach_name><xsl:value-of select="nachname"/></nach_name>
            </eintrag>
         </xsl:for-each>
      </namen>
   </xsl:template>
</xsl:stylesheet>

Hintergrund ist eine Blätternfunktion.
Ich möchte mit vorname[position()&gt;=1 and position&lt;=2] nicht Ingo und Andre haben, sondern Andre und Dieter.
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.

Was genau möchtest du machen?

Grüße
Thomas