xslt,javascript和未转义的html实体

Pie*_*ing 1 javascript xslt html-entities

我对xslt,js和html实体有一个小问题,例如.在模板中:

<script type="text/javascript">
    <xsl:value-of select="/some/node"/>
    for (var i = 0; i &lt; 5; i++) {
        //            ^^^ js error
    }
</script>

<script type="text/javascript">
    <xsl:value-of select="/some/node"/>
    for (var i = 0; i < 5; i++) {
        //            ^ xslt error
    }
</script>

<script type="text/javascript">
    <xsl:value-of select="/some/node"/>
    // <![CDATA[
    for (var i = 0; i < 5; i++) {
        //            ^ becomes &lt;
    }
    // ]]>
</script>


<script type="text/javascript">
    <xsl:value-of select="/some/node"/>
    for (var i = 0; i <xsl:value-of disable-output-escaping="yes" select="string('&lt;')"/> 5; i++) {
        // works of course
    }
</script>
Run Code Online (Sandbox Code Playgroud)

有没有人知道我的问题可能来自哪里?我一直以为xslt处理器会在使用html输出方法时保留<script />元素的内容未转义...

我在OSX上运行libxslt2版本1.1.24,使用macportsports安装...

Pie*_*ing 11

好.长话短说,简答:

似乎对于一些libxslt版本,xslt处理器在使用html输出方法时保留了<script />元素的内容,而其他人没有 ...因此建议采用以下方法:

<script type="text/javascript">
    <xsl:value-of select="/some/node"/>
    <xsl:text disable-output-escaping="yes">
        // ^ does the trick ...
        for (var i = 0; i < 5; i++) {
            //            ^ works
        }
    </xsl:text>
</script>
Run Code Online (Sandbox Code Playgroud)

  • 这在我的情况下不起作用.我得到了XSLT错误`元素的内容必须由格式良好的字符数据或标记组成.它指向带有`<`的行 (2认同)