首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >XInclude不和撒克逊合作吗?

XInclude不和撒克逊合作吗?
EN

Stack Overflow用户
提问于 2017-07-07 19:32:03
回答 2查看 725关注 0票数 1

我有一个XSLT样式表xinclude-test.xsl

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xi="http://www.w3.org/2001/XInclude">
  <xsl:output method="text"/>
  <xi:include href="xinclude-test-included.xml"/>

  <!-- <xsl:param name="test"> -->
  <!--   aaa -->
  <!-- </xsl:param> -->

  <xsl:template name="main">
    <xsl:value-of select="$test"/>
  </xsl:template>
</xsl:stylesheet>

包含的文件xinclude-test-included.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<xsl:param name="test" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
aaa
</xsl:param>

当我计算样式表时

代码语言:javascript
复制
saxon -xi -xsl:xinclude-test.xsl -it:main -t

印出来

代码语言:javascript
复制
Saxon-HE 9.8.0.1J from Saxonica
Java version 1.8.0_31
Static error at char 5 in xsl:value-of/@select on line 13 column 35 of xinclude-test.xsl:
  XPST0008: Variable test has not been declared (or its declaration is not in scope)
Errors were reported during stylesheet compilation

我希望它能打印出"aaa“。

但是,如果我使用另一个样式表加载第一个XSLT:

代码语言:javascript
复制
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                version="2.0">
  <xsl:template name="main">
    <xsl:copy-of select="document('xinclude-test.xsl')"/>
  </xsl:template>
</xsl:stylesheet>

它正确地执行XInclude处理。

那么,我在第一个XSLT中做错了什么呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-07 20:29:08

我相信你会得到一个关于撒克逊的答案或评论,但作为对你问题的一个更一般的回答,

那么,我在第一个XSLT中做错了什么呢?

我将注意到XSLT2.0不包含任何要求处理器对样式表文档执行XInclude处理的规定。由于规范定义了样式表文档的形式和语义,我倾向于将这一遗漏视为处理器不应对样式表文档执行XInclude处理的指示。也没有指定document()函数是否执行XInclude处理,但我不认为这是指示性的。

无论是好是坏,XSLT都有包含外部样式表片段的自己的机制。语义与XInclude略有不同:xsl:includexsl:import用于引入外部样式表模块,而不是任意的XML片段。

票数 3
EN

Stack Overflow用户

发布于 2017-07-07 22:08:01

恐怕文档与代码不匹配: Saxon没有尝试将-xi选项应用于样式表文档。我们将不得不决定是否将代码或文档视为正确的。

作为一个bug在这里引发:https://saxonica.plan.io/issues/3343

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44978437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档