stephanbauer: Ausgabe ohne doppelte Einträge

Hi zusammen,

für mich ist XSL noch neu.
Ich versuche gerade aus einer großen Datenmenge die einzelnen Länder der Autoren in ein Dropdown Menü zu schreiben.
Hier ist das Menü aber unwichtig, ich brauche erstmal die Ausgabe aller Länder.
Ich habe also ein XML Dokument der Art:

<ROOT>  
  <ITEM>  
    <AUTHOR>  
      <COUNTRY countryID="3216">Land</COUNTRY>  
      ...  
    </AUTHOR>  
    ...  
  </ITEM>  
  ...  
</ROOT>

Jedes Land hat seine eigene countryID.
Die Länder (ohne doppelte Einträge) versuche ich damit auszulesen, doch mit diesem Teil braucht mein Script 30-40s, ohne es kann ich Teile von ROOT innerhalb von einer Sek. ausgeben.

<xsl:template match="/">  
  <xsl:for-each select="/ROOT/ITEM/AUTHOR/COUNTRY[not(@countryID=preceding::COUNTRY/@countryID)]">  
    <xsl:sort select="@countryID"/>  
    <xsl:apply-templates select="."/>  
  </xsl:for-each>  
<xsl:template>  
  
<xsl:template match="COUNTRY">  
  <div><xsl:value-of select="."/></div>  
</xsl:template>

Und da ich versuche die Seite dynamisch mit PHP auszugeben, wollte ich fragen, ob es da eine schnellere Lösung gibt.
Ich hoffe ich habe jetzt hier keine Fehler beim abtippen reingebaut.

Vielen Dank
sb

  1. Hallo,

    ich glaube, was du suchst findest du hier.

    Und da ich versuche die Seite dynamisch mit PHP auszugeben, wollte ich fragen, ob es da eine schnellere Lösung gibt.

    Das ist unklar, denn der Code den du angibst ist XSL und nicht PHP!?

    bydey

    --
    -- bydey ist die Signatur und Verabschiedung, nicht der Nick --
    -- Navigate all your PHP web projects with  PHP Project Browser--
    1. Und da ich versuche die Seite dynamisch mit PHP auszugeben, wollte ich fragen, ob es da eine schnellere Lösung gibt.
      Das ist unklar, denn der Code den du angibst ist XSL und nicht PHP!?

      Danke, ich werde es mir mal durchlesen.
      Ich führe verschiedene Transformationen durch z.B. je nachdem welches Land man auswählt werden die entsprechenden ITEMs mit PHP und dem integrierten XSLT Processor ausgegeben.

    2. Hallo,

      ich glaube, was du suchst findest du hier.

      So wie ich es verstehe setzt es voraus, dass die Länder bekannt sind, aber gerade die versuche ich damit herauszubekommen.
      Ich habe leider keinen Zugang zu allen Ländern und deren IDs, weshalb ich eben versuche die Länderliste aus der XML Datei zu lesen.

      1. Hallo,

        So wie ich es verstehe setzt es voraus, dass die Länder bekannt sind, aber gerade die versuche ich damit herauszubekommen.

        Es ist möglich, dass dieses Beispiel etwas zu kompliziert ist.
        In einem meiner Fälle sieht so aus
        <?xml version="1.0" encoding="iso8859-1"?>
        <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
           <xsl:key name="partnumbers" match="xmlDocument/Group/JobList/LineItemList/LineItem/FeederItemList/FeederItem" use="PartNumber" />

        <xsl:template match="/">
        ......

        weiter unten Greife ich dann auf das Gruppierungskey zurück:
        <xsl:for-each select="xmlDocument/Group/JobList/LineItemList/LineItem/FeederItemList/FeederItem[count(. | key('partnumbers', PartNumber)[1]) = 1 and PartNumber!='']">

        Gruppiert wird nach dem Element PartNumber.

        Hilft das?

        bydey

        --
        -- bydey ist die Signatur und Verabschiedung, nicht der Nick --
        -- Navigate all your PHP web projects with  PHP Project Browser--
        1. Hilft das?

          Ja klasse, danke!
          Jetzt braucht es nur noch 2s, ist doch eine Steigerung.

          Vielen Dank
          sb

          1. Hallo,

            Jetzt braucht es nur noch 2s, ist doch eine Steigerung.

            Ws ist denn                  ^^ das?

            bydey

            --
            -- bydey ist die Signatur und Verabschiedung, nicht der Nick --
            -- Navigate all your PHP web projects with  PHP Project Browser--