mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 19.04.2024 05:10 Benutzername: Passwort: Auto-Login

Thema: XSLT - Wie lese ich die Daten richtig aus? vom 28.06.2006


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> XSLT - Wie lese ich die Daten richtig aus?
Seite: 1, 2  Weiter
Autor Nachricht
fischchen
Threadersteller

Dabei seit: 06.03.2003
Ort: Kassel
Alter: 45
Geschlecht: Männlich
Verfasst Mi 28.06.2006 11:57
Titel

XSLT - Wie lese ich die Daten richtig aus?

Antworten mit Zitat Zum Seitenanfang

Hallo zusammen,

ich habe folgendes Problem:
In der unten dargestellten Struktur gibt es einmal Einschraenkungen mit dem Attribute Gruppe und einmal ohne. Im Endeffekt wollen wir in beiden Fällen immer den Inhalt von fussnote. Wenn Gruppe nicht vorkommt, wird die fussnote ganz normal ausgelesen und in Klammern gesetzt. Wenn Gruppe vorhanden ist muß kontrolliert werden das der Wert des Attributes Guppe gleich ist und diese Fussnoten hintereinander durch Komma getrennt und darum eine Klammer gesetzt werden.

Also so:
ohne Gruppe
(45)

mit Gruppe
(11, 29) (11, 52) (10, 52)

Hier mal die XML Struktur

Code:

<Anwendung typ="INNENRAUMLUFTFILTER" bezeichnung="LA 8" id="258" position="1">
<Einschraenkung typ="LINKSLENKER/LEFT-HAND DRIVE/CONDUITE A GAUCHE/VOLANTE A LA IZQUIERDA" wert="" gruppe="1" sortnr="1" fussnote="11"/>
<Einschraenkung typ="OHNE KLIMAANLAGE/WITHOUT AIR-CON/SANS AIR CONDITIONNE/SIN AIRE ACONDICIONADO" wert="" gruppe="1" sortnr="2" fussnote="29"/>
<Einschraenkung typ="LINKSLENKER/LEFT-HAND DRIVE/CONDUITE A GAUCHE/VOLANTE A LA IZQUIERDA" wert="" gruppe="2" sortnr="3" fussnote="11"/>
<Einschraenkung typ="KLIMAAUTOMATIK/AUTO AIR CON/CLIMATISATION AUTOMATIQUE/CLIMATIZADOR AUTOMATICO" wert="" gruppe="2" sortnr="4" fussnote="52"/>
<Einschraenkung typ="TEILWEISE/ODER/PARTLY/OR/PARTLY/OU/EN PARTE/O" wert="" gruppe="2" sortnr="5" fussnote="45"/>
<Einschraenkung typ="RECHTSLENKER/RIGHT-HAND DRIVE/CONDUITE A DROITE/VOLANTE A LA DERECHA" wert="" gruppe="3" sortnr="6" fussnote="10"/>
<Einschraenkung typ="KLIMAAUTOMATIK/AUTO AIR CON/CLIMATISATION AUTOMATIQUE/CLIMATIZADOR AUTOMATICO" wert="" gruppe="3" sortnr="7" fussnote="52"/>
</Anwendung>


Ich probiere da jetzt schon seit einigen Tagen rum und bekomme es einfach nicht gebacken.

Hier mal mein Script:
Code:

<xsl:variable name="fussnote">
   <xsl:for-each select="./Einschraenkung">
   <xsl:choose>
      <xsl:when test="@gruppe">
         <xsl:text>(</xsl:text>
            <xsl:variable name="gruppe">
                <xsl:for-each select="@fussnote">
                  <xsl:value-of select="."/>
               </xsl:for-each>
            </xsl:variable>   
            <xsl:value-of select="$gruppe"/>
         <xsl:text>)</xsl:text>
      </xsl:when>
      <xsl:otherwise>
         <xsl:value-of select="(concat(' (',@fussnote,')'))"/>
      </xsl:otherwise>
   </xsl:choose>-->
</xsl:for-each>
</xsl:variable>


Ich habe jetzt auch schon mitbekommen das mein Script eigentlich quatsch ist. Es ist bei mir ja eigentlich egal ob das Attribute Gruppe vorhanden ist oder nicht. Es wird wohl im Endeffekt immer das gleiche gemacht. Außerdem weiß ich nicht wie ich die Überprüfung machen kann ob der Wert der Gruppe gleich ist?

Es wäre echt super wenn mir hier jemand weiterhelfen könnte.

Vielen Dank im voraus


Zuletzt bearbeitet von fischchen am Mi 28.06.2006 12:05, insgesamt 3-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Jigity

Dabei seit: 30.07.2005
Ort: Augsburg
Alter: 44
Geschlecht: Männlich
Verfasst Mi 28.06.2006 12:41
Titel

Re: XSLT - Wie lese ich die Daten richtig aus?

Antworten mit Zitat Zum Seitenanfang

fischchen hat geschrieben:

Hier mal mein Script:
Code:

<xsl:variable name="fussnote">
   <xsl:for-each select="./Einschraenkung">
   <xsl:choose>
      <xsl:when test="@gruppe">
         <xsl:text>(</xsl:text>
            <xsl:variable name="gruppe">
                <xsl:for-each select="@fussnote">
                  <xsl:value-of select="."/>
               </xsl:for-each>
            </xsl:variable>   
            <xsl:value-of select="$gruppe"/>
         <xsl:text>)</xsl:text>
      </xsl:when>
      <xsl:otherwise>
         <xsl:value-of select="(concat(' (',@fussnote,')'))"/>
      </xsl:otherwise>
   </xsl:choose>-->
</xsl:for-each>
</xsl:variable>


Ich habe jetzt auch schon mitbekommen das mein Script eigentlich quatsch ist. Es ist bei mir ja eigentlich egal ob das Attribute Gruppe vorhanden ist oder nicht. Es wird wohl im Endeffekt immer das gleiche gemacht. Außerdem weiß ich nicht wie ich die Überprüfung machen kann ob der Wert der Gruppe gleich ist?

Es wäre echt super wenn mir hier jemand weiterhelfen könnte.

Vielen Dank im voraus

Warum rufst du in einer Variablen-Dekalaration for each auf? mach für mich persönlich keinen Sinn.
Lieber erst for-each danach die variable in hier mit xPath überprüfen ob der Wert identisch ist.

Erklär bitte nochmal in Stichpunkten was du aus dem Ausgangsdokument herausfiltern willst, dann bin ich gern behiflich...
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
fischchen
Threadersteller

Dabei seit: 06.03.2003
Ort: Kassel
Alter: 45
Geschlecht: Männlich
Verfasst Mi 28.06.2006 12:59
Titel

Antworten mit Zitat Zum Seitenanfang

Hallo Jigity,

ich möchte ja den for:each Inhalt in der Variable speichern. Wenn ich die Variable reinpacke geht das doch nicht?!

Anhand des Codes siehst du ja das ich zu einer Anwendung mehrere Einschraenkungen hab. Von Einschraenkungen brauche ich immer den Wert von dem Attribute fussnote. Diese wird in Klammern gesetzt und wird im Endeffekt so dargestellt (52). Wenn jetzt aber in Einschraenkungen das Attribute gruppe vorkommt, muß ich den wert von Gruppe kontrollieren und alle fussnoten die zum Beispiel gruppe="1" haben zusammenfassen und so darstellen (11, 29).

Code:
<Anwendung typ="INNENRAUMLUFTFILTER" bezeichnung="LA 8" id="258" position="1">
   <Einschraenkung typ="LINKSLENKER/LEFT-HAND DRIVE/CONDUITE A GAUCHE/VOLANTE A LA IZQUIERDA" wert="" [b]gruppe="1"[/b] sortnr="1" [b]fussnote="11"[/b]/>
   <Einschraenkung typ="OHNE KLIMAANLAGE/WITHOUT AIR-CON/SANS AIR CONDITIONNE/SIN AIRE ACONDICIONADO" wert="" [b]gruppe="1"[/b] sortnr="2" [b]fussnote="29"[/b]/>
                     <Einschraenkung typ="LINKSLENKER/LEFT-HAND DRIVE/CONDUITE A GAUCHE/VOLANTE A LA IZQUIERDA" wert="" gruppe="2" sortnr="3" fussnote="11"/>
                     <Einschraenkung typ="KLIMAAUTOMATIK/AUTO AIR CON/CLIMATISATION AUTOMATIQUE/CLIMATIZADOR AUTOMATICO" wert="" gruppe="2" sortnr="4" fussnote="52"/>
                     <Einschraenkung typ="TEILWEISE/ODER/PARTLY/OR/PARTLY/OU/EN PARTE/O" wert="" gruppe="2" sortnr="5" fussnote="45"/>
                     <Einschraenkung typ="RECHTSLENKER/RIGHT-HAND DRIVE/CONDUITE A DROITE/VOLANTE A LA DERECHA" wert="" gruppe="3" sortnr="6" fussnote="10"/>
                     <Einschraenkung typ="KLIMAAUTOMATIK/AUTO AIR CON/CLIMATISATION AUTOMATIQUE/CLIMATIZADOR AUTOMATICO" wert="" sortnr="7" [b]fussnote="52"[/b]/>
                  </Anwendung>


Ich hoffe das es jetzt ein wenig verständlicher ist.

Viele Grüße
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Jigity

Dabei seit: 30.07.2005
Ort: Augsburg
Alter: 44
Geschlecht: Männlich
Verfasst Mi 28.06.2006 14:59
Titel

Antworten mit Zitat Zum Seitenanfang

arbeitest du mit XSLT 2.0 Prozessor? Dann würde nämlich for-each-group group-by(@group) funktionieren...
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
fischchen
Threadersteller

Dabei seit: 06.03.2003
Ort: Kassel
Alter: 45
Geschlecht: Männlich
Verfasst Mi 28.06.2006 15:24
Titel

Antworten mit Zitat Zum Seitenanfang

Das ist eine gute Idee. Probiere ich gleich mal aus.

Vielen Dank
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Jigity

Dabei seit: 30.07.2005
Ort: Augsburg
Alter: 44
Geschlecht: Männlich
Verfasst Mi 28.06.2006 16:40
Titel

Antworten mit Zitat Zum Seitenanfang

mit value-of select="current-group()/@gruppe" seperator=", " könnte es vielleicht noch komfortabler klappen die Einzelwerte Fussnoten jeder Gruppe zu erfassen
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
fischchen
Threadersteller

Dabei seit: 06.03.2003
Ort: Kassel
Alter: 45
Geschlecht: Männlich
Verfasst Do 29.06.2006 11:18
Titel

Antworten mit Zitat Zum Seitenanfang

Hallo Jigity,

ich bekomme es einfach nicht hin. Ich verstehe nicht was falsch ist. Entweder funktioniert die Gruppierung nicht, oder ich bekomme einfach keine Werte aus der Gruppierung.

Hier mal das Script

Code:

<xsl:for-each select="./Einschraenkung">                                                       <xsl:for-each-group select="@fussnote" group-by="@gruppe">
      <xsl:for-each select="current-group()">
         <xsl:value-of select="."/>
      </xsl:for-each>   
   </xsl:for-each-group>   


Hier nochmal der XML Code
Code:

[size=7]
<Einschraenkung typ="" wert="" gruppe="1" sortnr="1" fussnote="11"/>
<Einschraenkung typ="" wert="" gruppe="1" sortnr="2" fussnote="29"/>
<Einschraenkung typ="" wert="" gruppe="2" sortnr="3" fussnote="11"/>
<Einschraenkung typ="" wert="" gruppe="2" sortnr="4" fussnote="52"/>
<Einschraenkung typ="" wert="" gruppe="2" sortnr="5" fussnote="45"/>
<Einschraenkung typ="" wert="" gruppe="3" sortnr="6" fussnote="10"/>
<Einschraenkung typ="" wert="" gruppe="3" sortnr="7" fussnote="52"/>
[/size]


Ich bekomme bei der Generierung keinerlei Daten raus.
Woran liegt das?

Viele Grüße
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Jigity

Dabei seit: 30.07.2005
Ort: Augsburg
Alter: 44
Geschlecht: Männlich
Verfasst Fr 30.06.2006 22:15
Titel

Antworten mit Zitat Zum Seitenanfang

Ich schau mir das morgen mal genauer an und gib morgen Abend bescheid wie's klappen könnte, oder wo ein Fehler sein könnte...
Bis dato stay cool, wird scho werden (XSLT ist dein Freund Grins )
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen Währung mit XSLT
XSLT Position()
position=last() - XSLT
XSLT Script
Mit XSLT URL encoden?
XML und XSLT - wie fange ich am besten an
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.