我对 xslt、js 和 html 实体有一个小问题,例如。在模板中:
<script type="text/javascript">
<xsl:value-of select="/some/node"/>
for (var i = 0; i < 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 <
}
// ]]>
</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('<')"/> 5; i++) {
// works of course
}
</script>
有谁知道我的问题可能来自哪里?我一直认为 xslt 处理器在使用 html 输出方法时会保留 <script/> 元素的内容未转义 ...
我在使用 macportsports 安装的 OSX 上运行 libxslt2 版本 1.1.24 ...
最佳答案
好的。长话短说:
似乎对于某些 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>
关于javascript - xslt、javascript 和未转义的 html 实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/435005/