Lara: XHTML nach XML transformieren

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

  1. 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

    1. 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

    2. Hallo,

      also //*[name()='head'] sollte auch an den Namespaces vorbei funktionieren.

      local-name() = 'head'

      Grüße
      Thomas

  2. 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