Peter Thomassen: Leerstellen

Hallo!
Nachdem ich mich nun auch mal an die Themen XML/XSL(T) herange-
wagt habe, gibt's auch schon das erste Problem:

<h2><xsl:value-of select="@first" /> <xsl:value-of select="@last" /></h2>

Wie erreiche ich, dass im Ergebniscode (erzeugt durch Salbatron)
die Leerstelle zwischen den beiden xsl:value-of-Elementen erhalten
bleibt?

BTW: An Salbatron liegt es wohl nicht, da IE und Mozilla das
     gleiche Verhalten zeigen. Da musste ich allerdings erst
     das Attribut method von xsl:output von xhtml auf html setzen,
     da xhtml angeblich nicht erlaubt sei. Anscheinend können
     sie also nur XSLT 1.0. Weiß jemand, wann XSLT 2.0 unterstützt
     werden wird?

Danke euch!
Peter

  1. Hallo,

    Wie erreiche ich, dass im Ergebniscode (erzeugt durch Salbatron)
    die Leerstelle zwischen den beiden xsl:value-of-Elementen erhalten
    bleibt?

    <h2><xsl:value-of select="@first" />xsl:text </xsl:text><xsl:value-of select="@last" /></h2>

    sollte funktionieren.

    Schönen Gruß

    Rainer

    1. Hallo Rainer,

      Wie erreiche ich, dass im Ergebniscode (erzeugt durch Salbatron)
      die Leerstelle zwischen den beiden xsl:value-of-Elementen erhalten
      bleibt?

      <h2><xsl:value-of select="@first" />xsl:text </xsl:text><xsl:value-of select="@last" /></h2>

      sollte funktionieren.

      Tut es auch. Aber muss das wirklich so umständlich sein?
      Ich habe hier noch:

      <xsl:for-each select="contact[@type = 'phone']"><p>Telefon: <xsl:value-of select="@prefix" /> / <xsl:value-of select="@suffix" /></p></xsl:for-each>
        <xsl:for-each select="contact[@type = 'cellular']"><p>Handy: <xsl:value-of select="@prefix" /> / <xsl:value-of select="@suffix" /></p></xsl:for-each>
        <xsl:for-each select="contact[@type = 'mail']"><p>Mail: <xsl:value-of select="@prefix" />@<xsl:value-of select="@suffix" /></p></xsl:for-each>

      Da kommt ja auch zweimal der String " / " vor. Und da fallen die
      Leerzeichen ja nicht weg - wo ist denn da der Unterschied?

      Danke!
      Peter

      1. Hallo,

        Tut es auch. Aber muss das wirklich so umständlich sein?

        ich weiß es auch nicht so genau. Mit xsl:text wird halt die Ausgabe erzwungen,
        und alles andere könnte Auslegungssache des Parsers sein.
        Irgendetwas in der Richtung "preserve-whitespace" gab es auch noch, glaub ich.
        Jetzt muß halt jemand weiterhelfen, der sich damit auskennt...

        Schönen Gruß

        Rainer

  2. Hallo,

    Wie erreiche ich, dass im Ergebniscode (erzeugt durch Salbatron)
    die Leerstelle zwischen den beiden xsl:value-of-Elementen erhalten
    bleibt?

    Du meinst "Sablotron" ?!

    das Attribut method von xsl:output von xhtml auf html setzen,
         da xhtml angeblich nicht erlaubt sei.

    stimmt:
    <!-- Category: top-level-element -->
              <xsl:output
                method = "xml" | "html" | "text" | qname-but-not-ncname
                version = nmtoken
                encoding = string
                omit-xml-declaration = "yes" | "no"
                standalone = "yes" | "no"
                doctype-public = string
                doctype-system = string
                cdata-section-elements = qnames
                indent = "yes" | "no"
                media-type = string />

    Du kannst als Output HTML wählen und als doctyp die XHTML DTD angeben.

    »»Anscheinend können sie also nur XSLT 1.0.

    Wer sind "sie"?

    Weiß jemand, wann XSLT 2.0 unterstützt werden wird?

    Zur Zeit ist XSLT 1.0 die einzige gültige Version von XSLT.
    Saxon hat bereits Teile von XSLT 2.0 WD implementiert.

    Grüße
    Thomas

    1. Hi Thomas,
      danke für deine Antwort!

      Wie erreiche ich, dass im Ergebniscode (erzeugt durch Salbatron)
      die Leerstelle zwischen den beiden xsl:value-of-Elementen erhalten
      bleibt?

      Du meinst "Sablotron" ?!

      Genau :)
      Beschäftige mich etwa seit einem Tag mit dem Thema :)

      Du kannst als Output HTML wählen und als doctyp die XHTML DTD angeben.

      Habe ich dann nicht das Problem mit <br> und <br /> etc.?

      »»Anscheinend können sie also nur XSLT 1.0.

      Wer sind "sie"?

      IE, Mozilla.

      Weiß jemand, wann XSLT 2.0 unterstützt werden wird?

      Zur Zeit ist XSLT 1.0 die einzige gültige Version von XSLT.
      Saxon hat bereits Teile von XSLT 2.0 WD implementiert.

      Genau. Zum Beispiel die Möglichkeit, xhtml generieren zu lassen.
      Und ich fänd's schön, wenn IE und Mozilla das auch könnten.

      Hast du vielleicht auch eine Lösung für mein Problem?

      Danke!
      Peter

      1. Hallo Peter,

        Du meinst "Sablotron" ?!
        Genau :)
        Beschäftige mich etwa seit einem Tag mit dem Thema :)

        Ich habe beim Sablotron dieses Verhalten noch nicht beobeachtet.
        Wenn gar nicht andere geht:
        entweder xsl:value-of&#160;xsl:value-of  oder  mit &#x20;

        Du kannst als Output HTML wählen und als doctyp die XHTML DTD angeben.

        Habe ich dann nicht das Problem mit <br> und <br /> etc.?

        Müsste man testen.

        »»Anscheinend können sie also nur XSLT 1.0.
        Wer sind "sie"?
        IE, Mozilla.

        Aha. Ja, sie können nur XSL 1.0 da diese wie gesagt die zur Zeit einzige Gültige XSLT Version ist.

        Zur Zeit ist XSLT 1.0 die einzige gültige Version von XSLT.
        Saxon hat bereits Teile von XSLT 2.0 WD implementiert.

        Genau. Zum Beispiel die Möglichkeit, xhtml generieren zu lassen.
        Und ich fänd's schön, wenn IE und Mozilla das auch könnten.

        Das würde dir an sich auch nichts bringen, denn du müsstes xmlt auch als MIME "application/xhtml+xml" ausliefern http://www.w3.org/TR/xhtml1/#media, was kaum ein Browser versteht (IE und Moziall gehören nicht dazu).
        Also kannst nur HTML ausliefern. Da kannst du auch HTML erstellen.

        Grüße
        Thomas