-1

我有一个这样定义的父样式表:

<?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,那么一切都很好。

有人可以解释一下这里有什么问题吗?咨询一些在线资源表明这种方法应该有效。

真诚的感谢。

4

2 回答 2

2

根据http://www.w3.org/TR/xslt#import任何“xsl:import 元素只允许作为顶级元素。xsl:import 元素子元素必须在 xsl:stylesheet 的所有其他元素子元素之前element”,因此您xsl:variable前面的代码段xsl:import的顺序错误,我希望 XSLT 处理器会引发错误消息。

于 2012-04-16T15:52:58.473 回答
0

这个:

@import url("/{$webAppFinalName}/external/webcommon/css/print.css");

只是一个普通的字符串。在转换过程中不会发生变量替换。

试试这个:

<xsl:value-of select="concat('@import url(&quot;/', $webAppFinalName, 
                     '/external/webcommon/css/print.css&quot;);')"/>
于 2012-04-16T16:12:51.223 回答