Thomas J.S.: XSL-Transformation klappt offensichtlich nicht!

Beitrag lesen

Hallo,

»» Das ist genau das, was dein XSLT machen soll.
»»

Das müsste dann aber auch als Quelltext im Browser angezeigt werden, oder nicht? Weil das tut es nicht, wenn ich mir den Quelltext ansehe, steht da der Code von der XML-Datei

Das ist völlig normal. Die eigentliche quell ist das XML. Das HTML ist nur das Ergebnis der Transformation. Mache im FF STRG+A dann Rechtsklick und im Kontextmenü dann "Auswahl-Quelltext anzeigen" dann bekommst du das HTML zu sehen.

»» ~~~xml

»» <xsl:template match="brief">
»»         <p>
»»                 <xsl:value-of select="ueberschrift" /><br />
»»                 <xsl:value-of select="textkoerper" /><br />
»»                 <xsl:value-of select="u1" /><br />
»»                 <xsl:value-of select="absatz" /><br />
»»                 Erstellungsdatum:<xsl:value-of select="@erstellungsdatum" />
»»         </p>
»» </xsl:template>
»»


> »»  
> »» In deinem XML gibt es aber keinen "brief/u1" oder "brief/absatz" sondern "textkoerper/u1" und "textkoerper/absatz" was du ja nicht ausgibts.  
>   
> Ja ich denk das hab ich verstanden, weiß aber nicht worauf du hinaus willst... muss ich "textkoerper/u1" und "textkoerper/absatz" extra dahin schreiben?  
  
Das kommt darauf an was du und wie du es ausgeben willst.  
Wenn du nach u1 und nach absat ein <br> ausgeben willst dann muss du an der stelle <xsl:value-of select="textkoerper/u1" /><br /> und  
<xsl:value-of select="textkoerper/absatz" /><br /> schreiben.  
  
Du bist nämlich im Template für <brief>, daher muss du zu dem Elementen "navigieren" die du ausgeben willst.  
  
  

> »» <xsl:value-of select="textkoerper" /> macht auch was es soll: gibt den Textinhalt von <textkoerper> aus und das ist  "ueb1 [zeilenumbruch] absatz".  
>   
> Wenn ich textkoerper ausgeben lasse, brauch ich dann u1 und absatz nicht extra ausgeben lassen?  
  
Nein. Vereinfacht: "value-of" gibt dir den reinen Textinhalt eines Elements aus, inkl. den Textinhalt dessen Kind- und Kindeskindelemente.  
<xsl:value-of select="textkoerper" /> liefert dir also nur den reinen Textinhalt, die in dem Fall genau gesagt aus einem Zeilenumbruch, Leerzeichen, aus "ub1", einem Zeilenumbruch, Leerzeichen und schießlich aus "absatz" besteht.  
Da kannst du auch nichts mehr formatieren mit <br> oder so. Das sind dann aus sich des XSL-Prozessors dann nur iterale Zeichen, die er genau so in dem Ergebnis der Transformation schreib.  
  
Grüße  
Thomas