【问题标题】:JSTL XML Transforms not working with nested XSL includesJSTL XML 转换不适用于嵌套 XSL 包括
【发布时间】:2010-06-06 10:24:54
【问题描述】:

我有一点 JSP 可以做到这一点:

<c:import url="/xsl/Transformer.xsl" var="xslt" />
<x:transform doc="${actionBean.dom}" xslt="${xslt}" xsltSystemId="/xsl/">

只要 Transformer.xsl 不包含 &lt;xsl:include&gt; 标记或它包含的任何文档不包含任何内容,它就会完全按照预期转换 XML。

但是,如果我使用的 XSL 包含一个文档,而该文档又包含另一个文档,则会收到以下错误:

错误:'无效的 URI'NestedInclude.xsl 无法解析实体引用:“NestedInclude.xsl”'。'

请注意,JSP 包含在 xsl 文档下面的目录中。如果我所有的 XSL 和 JSP 都在同一个目录中(并且我删除了 xsltSystemId 属性),那么一切都会正常工作,但我真的不想这样做。

任何人都可以看到我做错了什么,因为它现在有点像杀手,而且 JSTL 文档几乎没用。

【问题讨论】:

    标签: xml xslt jstl


    【解决方案1】:

    如果您为xsltSystemId 属性提供一个以“/”开头的值,我相信JSTL 将使用EntityResolver 来尝试定位:PageContext.getServletContext().getResourceAsStream(xsltSystemId)。因此,您可以尝试xsltSystemId="/xsl/Transformer.xsl",或者直接忽略该属性。

    【讨论】:

      【解决方案2】:

      我有同样的问题,我可以通过给出绝对路径来解决它。像这样:

      <c:import url="/WEB-INF/some-folders/xsl/Transformer.xsl"/>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-12
        相关资源
        最近更新 更多