由于一个...有趣的...实现遗留系统的方式,XSLT 用于从输入的 XML 文档生成 HTML。页面 POST 回服务器时需要的部分输出是原始 XML 文档。例如,如果这是来源:
<page>
<head>Hello</head>
</page>
输出可能如下所示:
<html>
<head></head>
<body>
<script type='text/javascript'>
document.sourceXml = '<page><head>Hello</head></page>';
</script>
</body>
</html>
(XML 直到最近才被发送到 HTML 中,这是我能想到的最好的解决方法,而无需过多地修改遗留系统)。
这让我想到了一个实际问题:现有的 XSLT 使用专有<msxml:script>
标签将源 XML 输出到输出中:
<msxsl:script language="JScript" implements-prefix="user">
<![CDATA[
function fnGetXML(oRootList)
{
var sXML=oRootList.item(0).documentElement.xml
return sXML;
}
]]>
</msxsl:script>
<script type="text/javascript">
document.pageXml = '<xsl:value-of disable-output-escaping="yes" select="user:fnGetXML(.)" />';
</script>
这在所有其他 XSLT 引擎以及较新版本的 MSXML 中都会中断(没有打开特殊标志以允许运行脚本)。有没有办法用直接的 XSLT 完成同样的任务?