如何在XSLT中复制外部CSS和JavaScript
我有一个输出HTML的XSL转换。在如何在XSLT中复制外部CSS和JavaScript,javascript,css,debugging,xslt,include,Javascript,Css,Debugging,Xslt,Include,我有一个输出HTML的XSL转换。在head元素中,我有一个CSS文件引用 <link rel="stylesheet" type="text/css" href="css/styles.css"/> 正如它所期望的那样,XML兼容 我还想复制一些JavaScript函数声明 对于纯XSLT,这是可能的,还是我必须对XSLT文件进行一些预处理(或对HTML文件进行后处理)?也许您可以欺骗它,让它认为样式表是XML styles.css /* <?xml version="1.
head
元素中,我有一个CSS文件引用
<link rel="stylesheet" type="text/css" href="css/styles.css"/>
正如它所期望的那样,XML兼容
我还想复制一些JavaScript函数声明
对于纯XSLT,这是可能的,还是我必须对XSLT文件进行一些预处理(或对HTML文件进行后处理)?也许您可以欺骗它,让它认为样式表是XML styles.css
/*
<?xml version="1.0" encoding="utf-8"?>
<style>
<![CDATA[
*/
... styles ...
/*
]]>
</style>
*/
/*
*/
这是一个黑客攻击,但如果没有其他方法,它可能就足够了(假设它能工作)。XSLT 2.0提供了unparsed-text()函数,可以通过非XML的URL读取文档 在XSLT1.0中,如果不需要对CSS编写太多脚本,可以使用以下方法使CSS文件与XML兼容。幸运的是,浏览器可以容忍HTML注释 CSS
身体
{
保证金:0;
}
div>p
{
背景颜色:黄色;
}
]]>
XSLT
使用处理指令包装CSS内容:
<?xml version="1.0" encoding="utf-8"?>
<root>
<?wrapper html
<html>
<link rel="stylesheet" type="text/css" href="css/styles.css"/>
</html>
?>
</root>
这将不起作用,因为CCS文本在任何情况下都不是有效的XML文本。例如,想想“div>p”选择器,或者字体声明中所有未替换的双引号。xsltproc不喜欢注释符号。它说:css/styles.css:1:parser error:Start-tag应该是'hmm。。我原以为在XML块前后都有文本节点仍然是合法的,毕竟,前后的空白是合法的。哦,好吧,这对我很有用。<>&字符存在问题。我最终得到了和]]>也适用于javascript。
<!--/*--><root><![CDATA[<!--*/-->
body
{
margin: 0;
}
div > p
{
background-color: yellow;
}
<!--/*-->]]></root><!--*/-->
<style type="text/css">
<xsl:value-of select="document('test.css')" disable-output-escaping="yes" />
</style>
<?xml version="1.0" encoding="utf-8"?>
<root>
<?wrapper html
<html>
<link rel="stylesheet" type="text/css" href="css/styles.css"/>
</html>
?>
</root>
<xsl:copy-of select="document('css/styles.css')//processing-instruction()"/>