Henning: "disable-output-escaping" für Html-Attribute

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

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

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

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

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