我有一个输出
HTML的XSL转换.在头元素中我有一个CSS文件参考.
<link rel="stylesheet" type="text/css" href="css/styles.css"/>
我想创建一个独立的HTML结果没有外部引用,因此我想包括外部CSS引用.为了防止代码重复,我不想将样式硬编码到XSLT模板中,所以我正在寻找一些XSLT命令来复制CSS文件的文件内容.我知道xsl:include或xsl:import将不起作用,因为他们期望XSLT文件.也没有
<xsl:copy-of select="document('css/styles.css')"/>
因为它希望符合XML标准.
我也有一些JavaScript函数声明,我也想复制.
解决方法
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><!--*/-->
XSLT
<style type="text/css"> <xsl:value-of select="document('test.css')" disable-output-escaping="yes" /> </style>