Autor |
Nachricht |
fischchen
Threadersteller
Dabei seit: 06.03.2003
Ort: Kassel
Alter: 45
Geschlecht:
|
Verfasst Mi 28.06.2006 11:57
Titel XSLT - Wie lese ich die Daten richtig aus? |
|
|
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
|
|
|
|
|
Jigity
Dabei seit: 30.07.2005
Ort: Augsburg
Alter: 44
Geschlecht:
|
Verfasst Mi 28.06.2006 12:41
Titel Re: XSLT - Wie lese ich die Daten richtig aus? |
|
|
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...
|
|
|
|
|
Anzeige
|
|
|
fischchen
Threadersteller
Dabei seit: 06.03.2003
Ort: Kassel
Alter: 45
Geschlecht:
|
Verfasst Mi 28.06.2006 12:59
Titel
|
|
|
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
|
|
|
|
|
Jigity
Dabei seit: 30.07.2005
Ort: Augsburg
Alter: 44
Geschlecht:
|
Verfasst Mi 28.06.2006 14:59
Titel
|
|
|
arbeitest du mit XSLT 2.0 Prozessor? Dann würde nämlich for-each-group group-by(@group) funktionieren...
|
|
|
|
|
fischchen
Threadersteller
Dabei seit: 06.03.2003
Ort: Kassel
Alter: 45
Geschlecht:
|
Verfasst Mi 28.06.2006 15:24
Titel
|
|
|
Das ist eine gute Idee. Probiere ich gleich mal aus.
Vielen Dank
|
|
|
|
|
Jigity
Dabei seit: 30.07.2005
Ort: Augsburg
Alter: 44
Geschlecht:
|
Verfasst Mi 28.06.2006 16:40
Titel
|
|
|
mit value-of select="current-group()/@gruppe" seperator=", " könnte es vielleicht noch komfortabler klappen die Einzelwerte Fussnoten jeder Gruppe zu erfassen
|
|
|
|
|
fischchen
Threadersteller
Dabei seit: 06.03.2003
Ort: Kassel
Alter: 45
Geschlecht:
|
Verfasst Do 29.06.2006 11:18
Titel
|
|
|
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
|
|
|
|
|
Jigity
Dabei seit: 30.07.2005
Ort: Augsburg
Alter: 44
Geschlecht:
|
Verfasst Fr 30.06.2006 22:15
Titel
|
|
|
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 )
|
|
|
|
|
|
|
|
Ä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
|
|