我有一个父样式表定义如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:import href="external/webcommon/WebappTransform.xsl" />
<xsl:variable name="webAppFinalName">rf</xsl:variable>
</xsl:stylesheet>`
导入的样式表WebappTransform.xsl
包含一些内联CSS包含在某些模板中:
@import url("/{$webAppFinalName}/external/webcommon/css/print.css");
转换发生在Java servlet过滤器中,我无法准确地看到输出HTML,但是从最终结果中可以清楚地看出变量未正确插入。
如果我手动插入变量并尝试使用完整的XSL,那么一切都很好。
有人可以解释一下这里有什么问题吗?咨询一些在线资源表明这种方法应该有效。
真诚的谢谢。
答案 0 :(得分:1)
根据http://www.w3.org/TR/xslt#import任何“xsl:import元素只允许作为顶级元素.xsl:import元素子元素必须位于xsl:stylesheet元素的所有其他元素子元素之前”所以你的代码片段带有{前面xsl:variable
的{1}}顺序错误,我希望XSLT处理器引发错误信息。
答案 1 :(得分:0)
此:
@import url("/{$webAppFinalName}/external/webcommon/css/print.css");
只是一个普通的字符串。转型过程中不会发生变量替换。
请改为尝试:
<xsl:value-of select="concat('@import url("/', $webAppFinalName,
'/external/webcommon/css/print.css");')"/>