如何在XSLT中复制外部CSS和JavaScript

GrG*_*rGr 12 javascript css xslt debugging include

我有一个输出HTML的XSL转换.在head元素中我有一个CSS文件引用.

<link rel="stylesheet" type="text/css" href="css/styles.css"/>
Run Code Online (Sandbox Code Playgroud)

我想创建一个没有外部引用的独立HTML结果,因此我想包含外部CSS引用.为了防止代码重复,我不想将样式硬编码到XSLT模板中,所以我正在寻找一些XSLT命令来复制CSS文件的文件内容.我知道xsl:includexsl:import不会工作,因为他们期望XSLT文件.也没有

<xsl:copy-of select="document('css/styles.css')"/>
Run Code Online (Sandbox Code Playgroud)

因为它期望符合XML标准.

我也有一些JavaScript函数声明,我也想复制.

这可能是纯XSLT,还是我必须对XSLT文件进行一些预处理(或者对HTML文件进行后处理)?

Dou*_*eny 12

XSLT 2.0提供了unparsed-text()函数,用于通过非XML的URL读取文档.

在XSLT 1.0中,如果您不需要关于CSS的脚本,可以使用以下内容使CSS文件与XML兼容.而且,幸运的是,浏览器可以容忍HTML注释.

CSS

<!--/*--><root><![CDATA[<!--*/--> 
body
{
    margin: 0;
}
div > p
{
    background-color: yellow;
}
<!--/*-->]]></root><!--*/--> 
Run Code Online (Sandbox Code Playgroud)

XSLT

<style type="text/css">
    <xsl:value-of select="document('test.css')" disable-output-escaping="yes" />
</style>
Run Code Online (Sandbox Code Playgroud)

  • 这适合我.<>和字符存在问题.我最终得到了<! - /* - > <root> <![CDATA [<! - */ - >和<! - /* - >]]> </ root> <! - - */ - >也适用于JavaScript. (4认同)