Lars Regensburger: Problem mit title tag

Hallo,
Habe gerade mal nachgedacht als ich in selfHTML den Bereich xml anschaute,das muss ich auch mal probieren.
So ich habe eine DTD und eine xml gemacht.
Wie ich mich an die xsl machte kam auch schon das erste Problem:

In der xml kommt das Element anfang vor in diesem Element konnt unteranderem das Elemnt titel.

Wie bekomme ich den Text von dem titel Tag in die xsl in das Element title?

So habe ich es versucht geht nicht :( .
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
 <head>
<xsl:apply-templates />
 </head>
 <body>

</body>
</html>
</xsl:template>

<xsl:template match="anfang">
<xsl:apply-templates />
</xsl:template>

<xsl:template match="titel">
  <title><xsl:value-of select="." /></title>
</xsl:template>

</xsl:stylesheet>

Meine DTD:
<!-- Hauptelement 'anfang' -->
<!ELEMENT anfang (titel|text|grafik|alles)>
<!-- Attribute von Element 'anfang' -->
<!ATTLIST anfang
   titel CDATA #REQUIRED

<!-- Element 'titel' fuer den Titel der Seite -->
<!ELEMENT titel (#PCDATA)>

<!-- Textelement muss Element 'inhalt' enthalten -->
<!ELEMENT text (inhalt)*>
<!-- Attribute von Element 'text' -->
<!ATTLIST text
   ausrichtung   (links|mitte|rechts) #REQUIRED
   fett          (ja|nein)            #IMPLIED
   kursiv        (ja|nein)            #IMPLIED
   unterstrichen (ja|nein)            #IMPLIED

<!-- Element 'inhalt' fuer Text -->
<!ELEMENT inhalt (#PCDATA)>

<!-- Element 'grafik' fuer Grafiken -->
<!ELEMENT grafik EMPTY>
<!-- Attribute von Element 'grafik' -->
<!ATTLIST grafik
   pfad   CDATA     #REQUIRED
   text1  CDATA     #REQUIRED
   text2  CDATA     #REQUIRED
   hoehe  CDATA     #REQUIRED
   breite CDATA     #REQUIRED
   rahmen (ja|nein) #REQUIRED

<!-- Element 'alles' fuer verschiedene Daten -->
<!ELEMENT alles ANY>

Wie muss ich vorgehen um den Wert von titel in title zu bekommen?

Danke im Vorraus
Lars Regensburger

  1. setzt mal bitte noch die xml rein.

    1. Sorry!
      Habe sie vergessen.

      Hier die DTD die XSL und die XML:

      DTD:
      <!-- Hauptelement 'anfang' -->
      <!ELEMENT anfang (titel|text|grafik|alles)>
      <!-- Attribute von Element 'anfang' -->
      <!ATTLIST anfang
         titel CDATA #REQUIRED

      <!-- Element 'titel' fuer den Titel der Seite -->
      <!ELEMENT titel (#PCDATA)>

      <!-- Textelement muss Element 'inhalt' enthalten -->
      <!ELEMENT text (inhalt)*>
      <!-- Attribute von Element 'text' -->
      <!ATTLIST text
         ausrichtung   (links|mitte|rechts) #REQUIRED
         fett          (ja|nein)            #IMPLIED
         kursiv        (ja|nein)            #IMPLIED
         unterstrichen (ja|nein)            #IMPLIED

      <!-- Element 'inhalt' fuer Text -->
      <!ELEMENT inhalt (#PCDATA)>

      <!-- Element 'grafik' fuer Grafiken -->
      <!ELEMENT grafik EMPTY>
      <!-- Attribute von Element 'grafik' -->
      <!ATTLIST grafik
         pfad   CDATA     #REQUIRED
         text1  CDATA     #REQUIRED
         text2  CDATA     #REQUIRED
         hoehe  CDATA     #REQUIRED
         breite CDATA     #REQUIRED
         rahmen (ja|nein) #REQUIRED

      <!-- Element 'alles' fuer verschiedene Daten -->
      <!ELEMENT alles ANY>

      XSL:
      <?xml version="1.0" encoding="iso-8859-1"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      <xsl:template match="/">
      <html>
       <head>
      <xsl:apply-templates />
       </head>
       <body>

      </body>
      </html>
      </xsl:template>

      <xsl:template match="anfang">
      <xsl:apply-templates />
      </xsl:template>

      <xsl:template match="titel">
        <title><xsl:value-of select="." /></title>
      </xsl:template>

      </xsl:stylesheet>

      XML:
      <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
      <!DOCTYPE CGI SYSTEM "cgi.dtd">
      <?xml-stylesheet type="text/xsl" href="cgi.xsl" ?>
      <anfang title="Meine">
      <title>titel</title>
      <text ausrichtung="mitte">
      <inhalt>inhalt</inhalt>
      </text>
      <alles>alles</alles>
      </anfang>

      MfG
      Lars Regensburger

      1. Hi,

        XSL:
        <xsl:template match="titel">

        ^^

        XML:
        <title>titel</title>

        ^^           ^^
        cu,
        Andreas

        --
        Der Optimist: Das Glas  ist halbvoll.  - Der Pessimist: Das Glas ist halbleer. - Der Ingenieur: Das Glas ist doppelt so groß wie nötig.
        1. Hallo Andreas,
          Vielen Dank
          Cu
          Lars

  2. Hallo,

    Wie bekomme ich den Text von dem titel Tag in die xsl in das Element title?

    Mal von deinem Tippfehler abgesehen ist es vielleicht besser so:

    <xsl:template match="/">
    <html>
     <head>

    <xsl:apply-templates select="title" />

    </head>
     <body>

    </body>
    </html>
    </xsl:template>

    Da du sonst alles, also auch alle andere templates auch im <head> aufrufst.

    Alternative:
    <head>
    <xsl:value-of select="/dokumentElement/ElementenPfadBisHinZu/title" />
    </head>

    Grüße
    Thomas

    1. Alternative:
      <head>
      <xsl:value-of select="/dokumentElement/ElementenPfadBisHinZu/title" />
      </head>

      sollte natürlich so sein:

      <head>
      </title>
      <xsl:value-of select="/dokumentElement/ElementenPfadBisHinZu/title" />
      </title>
      </head>

      Grüße
      Thomas

      1. Hi,
        Und ich habe meine DTD verändert.
        Jetzt steht der Titel in dem Element <seite titel="titel"> das Elemant titel und anfang gibt es nicht mehr!
        Wie mache ich jetzt das der Titel der des Attributes titel ist?
        MfG
        Lars

        1. Hallo,

          Und ich habe meine DTD verändert.
          Jetzt steht der Titel in dem Element <seite titel="titel"> das Elemant titel und anfang gibt es nicht mehr!
          Wie mache ich jetzt das der Titel der des Attributes titel ist?

          Ich verstehe deine Frage nicht.
          Wenn du meinst, dass du den Wert des "titel"-Attributes vom Element <seite> als HTML <title> ausgeben möchtest:

          z.B.
          <head>
          <title>
          <xsl:value-of select="/dokumentElement/ElementenPfadBisZu/seite/@titel" />
          </title>
          </head>

          Grüße
          Thomas