XHTML nach XML transformieren
Lara
- xsl
0 Frank (no reg)0 Lara0 Thomas J.S.
0 ThomasM
Guten Abend,
aus einer xhtml-Datei möchte ich mittels xsl-Stylesheet ein xml-File erzeugen.
Allerdings gelingt es mir nicht, die Inhalte eines konkreten xhtml-Tags auszugeben,
z.B. den Inhalt von <head><title></title></head>.
Ich vermute, es hängt mit den namespaces zusammen ...
Hier meine Namensraum-Deklarationen:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="html://www.w3.org/1999/xhtml"
xmlns:html="html://www.w3.org/1999/xhtml"
xmlns="html://www.w3.org/1999/xhtml">
Ich habe es schon mit "html:head", "xhtml:head", "//head" und vielem mehr probiert
... leider ohne Erfolg.
Kann mir jemand sagen, wo mein Denkfehler ist?
Vielen Dank im Voraus,
Lara
Hi,
also //*[name()='head'] sollte auch an den Namespaces vorbei funktionieren.
Aber das hier:
xmlns:xhtml="html://www.w3.org/1999/xhtml"
xmlns:html="html://www.w3.org/1999/xhtml"
xmlns="html://www.w3.org/1999/xhtml"
sieht irgendwie nicht so sauber aus
Ich wuerde es mal mit der variante probieren
xmlns="http://www.w3.org/1999/xhtml"
und dann //head/title
Ciao, Frank
Hi Frank,
vielen vielen Dank! Es funktioniert, nachdem ich die namespaces sauber deklariert habe und dann allerdings //html:title verwende.
Wünsch dir noch einen schönen Abend,
Lara
Hallo,
also //*[name()='head'] sollte auch an den Namespaces vorbei funktionieren.
local-name() = 'head'
Grüße
Thomas
Hallo Lara,
Allerdings gelingt es mir nicht, die Inhalte eines konkreten xhtml-Tags auszugeben,
z.B. den Inhalt von <head><title></title></head>.
Ich vermute, es hängt mit den namespaces zusammen ...
Da XSLT 2.0 verwendet wird, bietet sich xpath-default-namespace an:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xpath-default-namespace="http://www.w3.org/1999/xhtml">
<xsl:output method="xml" version="1.0" encoding="ISO-8859-1" indent="yes"/>
<xsl:template match="html">
<root>
<xsl:value-of select="head/title"/>
</root>
</xsl:template>
</xsl:stylesheet>
Grüße,
Thomas