"disable-output-escaping" für Html-Attribute
Henning
- xsl
0 Thomas Meinike0 fjh
Ich möchte ein Bild mit einem Alt-Tag in der Form:
<img src="xy.gif" alt=""Text"">
versehen. Das könnte in XSL z.B. so aussehen:
<img src="xy.gif">
<xsl:attribute name="alt">
<xsl:value-of disable-output-escaping="yes" select="AltText"/>
</xsl:attribute>
</img>
Problem ist, daß ein "disable-output-escaping" für Html-Attribute nicht zulässig ist. Es wird vom Parser (im meinem Fall Sablotron, php) ignoriert.
Kennt jemand einen Trick, wie das trotzdem zu realisieren ist?
Henning
Hallo,
Ich möchte ein Bild mit einem Alt-Tag in der Form:
<img src="xy.gif" alt=""Text"">
versehen. Das könnte in XSL z.B. so aussehen:
<img src="xy.gif">
<xsl:attribute name="alt">
<xsl:value-of disable-output-escaping="yes" select="AltText"/>
<xsl:value-of select="concat('"',AltText,'"')"/>
sollte helfen.
MfG, Thomas
Hallo Henning,
Ich möchte ein Bild mit einem Alt-Tag in der Form:
<img src="xy.gif" alt=""Text"">
versehen. Das könnte in XSL z.B. so aussehen:
<img src="xy.gif">
<xsl:attribute name="alt">
<xsl:value-of disable-output-escaping="yes" select="AltText"/>
</xsl:attribute>
</img>
Wenn das <AltText>-Element so aussieht:
<AltText>"Text"</AltText>
dann benötigst du kein disable-output-escaping="yes". Im Gegenteil du brauchst "no" bzw. gar kein solches Attribut, da ein XSLT-konformer Prozessor standardmäßig Markup-Symbole maskiert.
Bei mir klappt das auch ohne Probleme in Saxon.
Problem ist, daß ein "disable-output-escaping" für Html-Attribute nicht zulässig ist.
Generell nicht für Attribut-Knoten. Mit HTML hat das nix zu tun.
Gruß
Franz
Auf das Xml habe ich wenig Einflußmöglichkeiten. Im Moment bekomme ich es in der Form
<AltText>"Test"</AltText>
Ich habe Deinen Tip trotzdem mal mit Sablotron getestet. Leider werden Umlaute nicht umgewandelt. Also:
" wurde " , aber
ä blieb ä
und ist daher nicht ganz korrekt. Ist das mit Saxon nicht so?
Henning
Hallo Henning,
Ich habe Deinen Tip trotzdem mal mit Sablotron getestet. Leider werden Umlaute nicht umgewandelt. Also:
" wurde " , aber
ä blieb ä
<xsl:output method="html"/> als Top-Level-Element (direkt unter xsl:stylesheet) sollte das beseitigen
Siehe auch: http://selfhtml.teamone.de/xml/darstellung/xsltelemente.htm#output
und ist daher nicht ganz korrekt. Ist das mit Saxon nicht so?
Ist das erste literale Ergebniselement ein <html>-Element, so kann ein XSLT-Prozessor standardmäßig als Ausgabeformat HTML annehmen. Saxon tut das. Für Sablotron weiss ich es nicht. Explizites Setzen von xsl:output ist immer besser.
Gruß
Franz
Henning