Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2004 Teil von Dezember

SELFHTML Forumsarchiv
Tricky XSLT

Informationsseite
  1. Seite (XSL) Tricky XSLT von Manfred, 31. 12. 2004, 18:20
nach unten

Tricky XSLT

Die folgende Nachricht zum Thema stammt von: Manfred, 31. 12. 2004, 18:20

Hi!

Ich habe ein XML, mit einer Menge a-Elemente,
welche über eine ID auf b-elemente verweisen,
welche weitere Daten zum a-Element haben.

Bsp.:

<test>
<a id="1">
 <ref id="2">
</a>
<b refid="2" name="hallo welt!" />
</test>

Ich möchte nun alle Attribute jedes a-Elementes ausgeben -
auch diese, die in ein dazugehöriges b-Element ausgelagert wurden.

Das folgende funzt leider nicht, weil ./@id sich in diesem
Fall ja bereits auf die ID des gefundenen b-Elements beziehen würde.

<xsl:for-each select="a">
<xsl:value-of select="//b[@refid = ./@id]/name" />
</xsl:for-each>

Somit würden hier alle b-Elemente gefunden werden, bei denen die refid gleich wie die id ist.
Ich brauche also irgendwie ein Schlüsselwort, welches mir
den aktuellen Knoten aus der for-each-Schleife gibt.


Danke und lG
Manfred

nach obennach unten

Tricky XSLT

Die folgende Nachricht zum Thema stammt von: MudGuard, 31. 12. 2004, 23:22

Hi,

»» Ich habe ein XML, mit einer Menge a-Elemente,
»» welche über eine ID auf b-elemente verweisen,

Haben diese in der DTD den Typ ID?

Und die Verweise haben in der DTD den Typ IDREF bzw. IDREFS?

»» <a id="1">

Dann wäre es sinnvoll, auch korrekte IDs zu benutzen. Nummern sind keine korrekten IDs.

cu,
Andreas
--
Warum nennt sich Andreas hier MudGuard?

Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.

nach obennach unten

Tricky XSLT

Die folgende Nachricht zum Thema stammt von: Manfred, 01. 01. 2005, 18:04

Hi Andreas!

Ich bin jetzt etwas weitergekommen. Ich kann die XSLT-Funktion "id" verwenden, um auf ein Element mit einer Bestimmten ID zuzugreifen (http://de.selfhtml.org/xml/darstellung/xpathfunktionen.htm#id)
Alternativ dazu kann ich die XSLT-Funktion "key()" verwenden, um auf ein beliebiges Element zuzugreifen, welches einen bestimmten Wert hat.

Das löst mein Problem, drängt mir aber eine weitere Frage auf:
key() funktioniert laut SELFHTML nur, wenn man alle Elemente haben möchte, die einen bestimmten Wert haben, z. B. alle a-Elemente, für die gilt: id="ABCDIEKATZELIGHTIMSCHNEE". Was aber, wenn man die gesuchten Elemente aufgrund von mehreren Eigenschaften einschränken möchte, z. B. alle a-Elemente für die gilt: id1="ABCDIEKATZELIGHTIMSCHNEE" sowie id2="RIRARUUNDDRAUSBISDU" ?

Gibt's hierzu eine Lösung oder muss man das irgendwie händisch machen ?

lG Manfred

nach obennach unten

Tricky XSLT

Die folgende Nachricht zum Thema stammt von: Thomas J.S., 02. 01. 2005, 16:20

Hallo,

»» Ich bin jetzt etwas weitergekommen. Ich kann die XSLT-Funktion "id" verwenden, um auf ein Element mit einer Bestimmten ID zuzugreifen (http://de.selfhtml.org/xml/darstellung/xpathfunktionen.htm#id)
»» Alternativ dazu kann ich die XSLT-Funktion "key()" verwenden, um auf ein beliebiges Element zuzugreifen, welches einen bestimmten Wert hat.
»»

http://aktuell.de.selfhtml.org/tippstricks/xml/gruppierung1/index.htm

»» Das löst mein Problem, drängt mir aber eine weitere Frage auf:
»» key() funktioniert laut SELFHTML nur, wenn man alle Elemente haben möchte, die einen bestimmten Wert haben, z. B. alle a-Elemente, für die gilt: id="ABCDIEKATZELIGHTIMSCHNEE". Was aber, wenn man die gesuchten Elemente aufgrund von mehreren Eigenschaften einschränken möchte, z. B. alle a-Elemente für die gilt: id1="ABCDIEKATZELIGHTIMSCHNEE" sowie id2="RIRARUUNDDRAUSBISDU" ?
»»
»» Gibt's hierzu eine Lösung oder muss man das irgendwie händisch machen ?

z.B.
key match="*[@id ='ABCD'] | *[@id = 'EFG']" use="."

oder du erstellst zwei keys und verwendest diese dann für die Ausgabe.

Grüße
Thomas

nach oben
Teil von SELFHTML Forum Teil von SELFHTML Forumsarchiv Teil von 2004 Teil von Dezember

© 1998-2008 Seite Impressum, Software: Classic Forum