Announcement

Collapse
No announcement yet.

output-escaping obwohl disabled?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • output-escaping obwohl disabled?

    Hallo,

    ich habe auf der Seite http://blog.thekid.me.uk/archive/200...sing-xslt.aspx ein gutes Template zum Entfernen von html-Tags gefunden, das Problem ist nun das Folgende :
    Die Tags werden wunderbar entfernt, jedoch werden Sonderzeichen (z.B. """) escaped, sodass dann im Text direkt """ etc. steht (Im HTML-Code """). Also dachte ich mir, schalte ich output-escaping aus und das Problem ist erledigt - klappt aber nicht Vielleicht weiß ja jemand wieso?

    Danke und Grüße,
    Compu

    P.S.: Die Problematik findet im MS SharePoint statt.

    Code:
    <xsl:attribute name="title">
    	<xsl:call-template name="removeHtmlTags">
    		<xsl:with-param name="html" select="@Question" />
    	</xsl:call-template>
    </xsl:attribute>
    Code:
    <!-- http://blog.thekid.me.uk/archive/2007/05/17/stripping-html-tags-when-using-xslt.aspx-->
    <xsl:template name="removeHtmlTags">
        <xsl:param name="html"/>
        <xsl:choose>
            <xsl:when test="contains($html, '&lt;')">
                <xsl:value-of disable-output-escaping="yes" select="substring-before($html, '&lt;')"/>
                <!-- Recurse through HTML -->
                <xsl:call-template name="removeHtmlTags">
                    <xsl:with-param name="html" select="substring-after($html, '&gt;')"/>
                </xsl:call-template>
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of disable-output-escaping="yes" select="$html"/>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
    Zuletzt editiert von Compufreak; 29.10.2010, 14:59.

  • #2
    Siehe http://www.w3.org/TR/xslt#disable-output-escaping, "It is an error for output escaping to be disabled for a text node that is used for something other than a text node in the result tree. Thus, it is an error to disable output escaping for an xsl:value-of or xsl:text element that is used to generate the string-value of a comment, processing instruction or attribute node; it is also an error to convert a result tree fragment to a number or a string if the result tree fragment contains a text node for which escaping was disabled. In both cases, an XSLT processor may signal the error; if it does not signal the error, it must recover by ignoring the disable-output-escaping attribute."
    Innerhalb eines Attributknoten sollte es also entweder eine Fehlermeldung geben oder aber das Ignorieren von disable-output-escaping="yes".

    Comment


    • #3
      Danke für den Hinweis, das erklärt schonmal das Problem.

      Gibt es trotzdem irgend eine Möglichkeit, die Ausgabe wie gewünscht hinzukriegen, möglichst ohne Gefahr zu laufen, durch ein unescaped " o.ä. das wohlgeformte HTML zu zerstören?

      Comment


      • #4
        Erkläre bitte genauer, was du erreichen willst, indem du ein Beispiel des XML gibst, das du mit XSLT verarbeiten willst, und das zugehörige XML oder HTML, das XSLT erzeugen soll. Dann poste das Resultat, was du im Moment bekommst. Bis jetzt ist mir noch nicht klar, was genau du erreichen willst und wo genau es "klemmt".

        Comment

        Working...
        X