abhandlung von xml elementen vor apply-templates
becheglas
- xsl
0 Thomas J.S.
hallo, ich hab ein problem und weis nicht mehr weiter ;(
xml:
<master...>
<uhrzeit>16:05</uhrzeit>
<news>
<author>...</author>
...
</news>
<news>
<author>...</author>
...
</news>
<news>
<author>...</author>
...
</news>
...
<master...>
nun möchte ich dieses gerne in ein xhtml file umwandeln. das problem ist wenn ich im root template die uhrzeit einfüge
xsl:
...
<title>überschrift - <xsl:value-of select="/master/uhrzeit"/></title>
....
xsl:apply-templates/
...
und kurz danach apply-templates aufrufe wird die uhrzeit einfach nocheinmal, unformatiert in den body reingeschrieben da apply-template kein match für uhrzeit findet. ich hab die uhrzeit also einmal im title stehn wie's sein soll und nocheinmal im body.
wie umgehe ich das ?
danke!
ciao
johannes
PS: Das is nur ein vereinfachtes beispiel. die eigentliche xml und xsl sind weit komplexer.
Hallo,
hallo, ich hab ein problem und weis nicht mehr weiter ;(
und kurz danach apply-templates aufrufe wird die uhrzeit einfach nocheinmal, unformatiert in den body reingeschrieben da apply-template kein match für uhrzeit findet. ich hab die uhrzeit also einmal im title stehn wie's sein soll und nocheinmal im body.
Nachdem du für <uhrzeit> keinen eigenen Template definiert hat, greift der 'build in' Template und der gibt eben den Text aus. Das gilt für alle Elemente mit Textinhalt und ohne Template.
Lösung:
<xsl:template match="text()" />
Grüße
Thomas
Lösung:
<xsl:template match="text()" />
Hallo,
also der Effekt ist: Es geht! ;)
Das Problem: Ich verstehe immer ganz gerne was ich da eigentlich mache deswegen wollte ich mal nochmal nachfragen was dieses template wirklich bewirkt.
Ciao
Hallo,
Das Problem: Ich verstehe immer ganz gerne was ich da eigentlich mache deswegen wollte ich mal nochmal nachfragen was dieses template wirklich bewirkt.
Mit <xsl:template match="text()" /> definiert du einen Template für die Textinhalte (text nodes) somit existiert für sie ein Template und der 'build in' Template kommt nicht mehr zum Zug. Da aber dieser Template nichts macht (d.h. keine Ausgabe erzeugt) wird auch nichts in die Seite geschrieben.
Grüße
Thomas
Mit <xsl:template match="text()" /> definiert du einen Template für die Textinhalte (text nodes) somit existiert für sie ein Template und der 'build in' Template kommt nicht mehr zum Zug. Da aber dieser Template nichts macht (d.h. keine Ausgabe erzeugt) wird auch nichts in die Seite geschrieben.
kann ich denn dem match irgendwie freundlich mitteilen das er bestimmte tags wie b, i, u, a etc. in ruhe lassen soll ?
weil sonst müsste ich ja für diese wieder extra templates definieren.
n8
johannes
und danke für den support ab späten abend ;)
Hallo Johannes,
kann ich denn dem match irgendwie freundlich mitteilen das er bestimmte tags wie b, i, u, a etc. in ruhe lassen soll ?
Nein.
weil sonst müsste ich ja für diese wieder extra templates definieren.
Das müsstest du mehr oder weniger so oder so, denn für XML haben diese Elemente nicht die Bedeutung wie sie es für HTML haben.
und danke für den support ab späten abend ;)
Es ist mal grad Abend geworden ;-)
Grüße
Thomas