Wie haben xsl:function-return einen string-Wert, einschließlich der html-tags

Ich bin versucht zu transponieren, die eine java-Funktion, xsl:function-spec.
Die Funktion, die im Grunde Orte, die html-tags um Teilstrings.
Ich habe jetzt stoßen auf Schwierigkeiten: mit dem java-inline-code-dieser funktioniert perfekt, aber ich bin nicht in der Lage, um herauszufinden, wie um zu verhindern, dass das output escaping bei der Verwendung des xsl:function.
Wie kann ich erreichen den Ausgang enthalten, der wollte html-tags?

Ein Vereinfachtes Beispiel, was ich versuche zu erreichen, ist das folgende:
input-parameter mit dem Wert "AB" sollte dazu führen, dass ein string Ein<b>B</b>, dargestellt im html-browser alsB natürlich.

Beispiel-Funktion habe ich versucht, ist die unten, aber dann ist der resultierende string Ein&lt ;b&gt ;B&lt ;/b&gt ; (beachten Sie, dass ich hatte, um Leerstellen zu verhindern, dass die Entitäten immer so interpretiert, dieser editor), was natürlich zeigt sich im Browser als<b>B</b>.

Beachten Sie, dass die xsl:element kann nicht verwendet werden, die in der xsl:function code, denn das hat keine Wirkung; ich möchte den string Ergebnis des Funktionsaufrufs enthalten, < und > Zeichen, und dann fügen Sie die Zeichenfolge Ergebnis in das output-Ergebnis-Datei.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
    version="2.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:custom="http://localhost:8080/customFunctions">

    <xsl:output method="html" version="4.0" encoding="UTF-8" indent="yes"/>

    <xsl:function name="custom:test">
        <xsl:param name="str"/> 

        <xsl:value-of select="substring($str,1,1)"/>
        <xsl:text disable-output-escaping="yes"><![CDATA[<b>]]></xsl:text>
        <xsl:value-of select="substring($str,2)"/>
        <xsl:text disable-output-escaping="yes"><![CDATA[</b>]]></xsl:text>
    </xsl:function>

    <xsl:template match="/">
        <xsl:element name="html">
            <xsl:element name="body">
                <xsl:value-of select="custom:test('AB')"/>
            </xsl:element>
        </xsl:element>
    </xsl:template>

</xsl:stylesheet>

InformationsquelleAutor Maestro13 | 2012-01-29

Schreibe einen Kommentar