Thomas J.S.: Wenn Tag gleichen inhalt hat wie auf den nächsten position...

Beitrag lesen

Hallo,

ich muss eine xml mit xslt umwandel um sie mit Indesign (ein DTP- oder Layoutprogramm im Printbereich) layouten zu können.
nun ergibt sich folgendes Problem, jedes Hotel hat die Strucktur wie unten, das heißt jedes Hotel hat die Angabe land, region und ort. Der "Kunde" wünscht aber eine Art Balken über jedem Land mit dem Landesnamen.
Dies kommt so nicht in der xml vor.

Das heißt ich brauche eine Regel die sich irgendwie folgenden zweck beinhalten soll.

Wenn der Tag <land> den gleichen Inhalt wie Tag <land> auf der nächsten Position zeig nur Tag auf vorheriger Position.

Was du also brauchst ist eine Gruppierung nach Land.
Falls du XSLT 1.0 verwendest kannst du das mit key() schaffen.

  
<xsl:key name="land" match="hotel" use="navigation/ort/land"/>  
 <xsl:template match="/Root">  
  <xsl:for-each select="hotel[generate-id(.) = generate-id(key('land', ./navigation/ort/land)[1])]">  
   <xsl:sort select="navigation/ort/land"/>  
   <xsl:value-of select="navigation/ort/land"/>  
   <xsl:for-each select="key('land', navigation/ort/land)">  
    <xsl:sort select="navigation/hotelname" order="descending"/>  
    <xsl:value-of select="navigation/hotelname"/>  
   </xsl:for-each>  
  </xsl:for-each>  
 </xsl:template>  
  

Liefert dir eine Liste von Ländern und zu jedem Land die dazugehörigen Hotels.

Wenn dich - hoffentlich - Erklärungen interessieren:
http://suche.de.selfhtml.org/cgi-bin/such.pl?suchausdruck="Thomas+J.S."+xsl+key(&lang=on&feld=alle&index_4=on&index_5=on&index_6=on&hits=alle

Grüße
Thomas