Marko: Total blöde Dau + Anfängerfrage

Hallo Forum,

ich bin gerade beim Spielen mit XSL, funktioniert soweit ja auch ganz gut. Nur wie verdammt nochmal krieg ich den Processor dazu Ausgaben im Ziel Dokument (HTML) auch in Attribute von HTML Tags reinzuschreiben, Beispiel:

<td colspan="<xsl:value-of select="count(row[position()=1]/field)"/>">

Sollte ergeben:

<td colspan="5">

Der XSL Ausdruck geht, nur im Tag gibt es Probleme.

Danke und Gruss

Marko

  1. Hallo Forum,

    Hi Forumsleser!

    ich bin gerade beim Spielen mit XSL, funktioniert soweit ja auch ganz gut. Nur wie verdammt nochmal krieg ich den Processor dazu Ausgaben im Ziel Dokument (HTML) auch in Attribute von HTML Tags reinzuschreiben, Beispiel:

    <td colspan="<xsl:value-of select="count(row[position()=1]/field)"/>">

    Auf den ersten Blick sind die Anführungszeichen nicht richtig. Innerhalb von colspan="..." verwendest du wieder die gleichen doppelten Anführungszeichen. Somit hört für den Processor die Zeichenkette vorzeitig auf. Probier mal
    <td colspan="<xsl:value-of select='count(row[position()=1]/field)' />">

    Ob weitere Fehler enthalten sind, hab ich noch nicht probiert.

    Heiko

  2. hallo Marko,

    <td colspan="<xsl:value-of select="count(row[position()=1]/field)"/>">

    Da stimmt einiges mit der Verschachtelung nicht, wenn ich das richtig sehe. Ich lösche mal alle Zeichen, die korrekt sind und lasse nur das "Problem" stehen:
    <<"""">>
    Du siehst, was ich meine? Du hast innerhalb eines Tags ein weiteres notiert, und innerhalb von Anführungszeichen nochmals Anführungszeichen. Das beißt sich.
    Probiers einfach mit Maskierung (Backslash) oder versuche, eines der Anführungszeichen-Paare durch einfache Anführungszeichen zu ersetzen (Hochkomma) und eine der Klammern durch andere Klammern. Viuelleicht reicht es bereits, einmal Hochkommas zu setzen, ich habs jetzt auf die Schnelle nicht dfurchprobiert.

    Christoph S.

  3. Hallo,

    ich bin gerade beim Spielen mit XSL, funktioniert soweit ja auch ganz gut. Nur wie verdammt nochmal krieg ich den Processor dazu Ausgaben im Ziel Dokument (HTML) auch in Attribute von HTML Tags reinzuschreiben, Beispiel:

    <td colspan="<xsl:value-of select="count(row[position()=1]/field)"/>">

    Eben so nicht. ;-) In einem Attributwert darf weder " noch < unmaskiert vorkommen.

    <td>
       <xsl:attribut name="colspan">
          <xsl:value-of select="count(row[position()=1]/field)"/>
       </xsl:attribut>
    </td>

    Grüße
    Thomas

  4. Hallo,

    <td colspan="<xsl:value-of select="count(row[position()=1]/field)"/>">

    Tags innerhalb von Attributen sind in XML nicht zulässig. Du kannst, wenn du statt den " " schreibst, natürlich auch Markup in ein Attribut schreiben, es wird aber nicht als solches  interpretiert.
    <td><xsl:attribute name="colspan">count(row[position()=1]/field)</xsl:attribute></td>
    wäre wohl die Lösung des Problems.

    Grüße

    Daniel

    1. Hallo Daniel,

      <td><xsl:attribute name="colspan">count(row[position()=1]/field)</xsl:attribute></td>
      wäre wohl die Lösung des Problems.

      Sicher? Ganz sicher??

      Grüße
      Thomas

      1. Hallo,

        Sicher? Ganz sicher??

        Urx nein. Aber Du hast es ja zum Glück richtig gepostet.

        Grüße

        Daniel

  5. Hallo Forum,

    hallo.

    ...wie verdammt nochmal krieg ich den Processor dazu Ausgaben im Ziel Dokument (HTML) auch in Attribute von
    HTML Tags reinzuschreiben...

    es gibt einen zweiten weg, den ich meistens bevorzuge: schreib alles, was an html-code ausgegeben werden soll, in kommentaren <![CDATA[]]>. das hat den vorteil, dass alle zeichen erlaubt sind, also nix mit backslash und so.
    dein beispiel würde dann so aussehen:
    <![CDATA[<td colspan="]]><xsl:value-of select="count(row[position()=1]/field)"/><![CDATA[">]]>

    mfg, alex

    1. Hallo Alex,

      es gibt einen zweiten weg, den ich meistens bevorzuge: schreib alles, was an html-code ausgegeben werden soll, in kommentaren <![CDATA[]]>. das hat den vorteil, dass alle zeichen erlaubt sind, also nix mit backslash und so.

      Wo hast du bitte in XML Probleme mit backslash?
      Wo hast du in HTML-Code probleme mit Zeichen??

      dein beispiel würde dann so aussehen:
      <![CDATA[<td colspan="]]><xsl:value-of select="count(row[position()=1]/field)"/><![CDATA[">]]>

      Sorry, aber das ist wirklich furchtbar (IMHO)!
      Das macht keinen wirklichen Sinn und ist zudem extremst fehleranfällig.

      Grüße
      Thomas

  6. Hallo,

    vielen Dank, ich hab jetzt wieder etwas mehr an XSL verstanden. Ich muss sagen, dass auch die kleinen Erörterungen die in Folge solch einfacher Fragen entstehen sehr lehrreich sein können.

    Gruss

    Marko