XSLT 2.0、XPath 2.0 和 XQuery 1.0 特定于实现的行为

表 1. 定义了实现的行为.

此表列出针对 API 的 XSLT 2.0、XPath 2.0 和 XQuery 1.0 特定于实现的行为

功能部件 描述 规范 错误代码 记录的行为
匹配的多 preserve-strip-space 如果源文档中的元素同时匹配 xsl:strip-space 和 xsl:preserve-space 声明,那么这是可恢复的动态错误。 XSLT 2.0

Section 4.4

XTRE0270 处理器不会返回错误,并可通过选择在声明顺序中最后发生的 xsl:strip-space 或 xsl:preserve-space 声明进行恢复。
模式求值 针对特定节点对模式进行求值期间发生的任何动态错误或输入错误均可视为可恢复错误,即使在其他情况下此错误不可恢复也是如此。可选恢复操作是将该模式视为不匹配此节点。 XSLT 2.0

Section 5.5.4

处理器不会返回错误,并通过将该模式视为不匹配该节点进行恢复。
匹配多个模板 如果模板规则的冲突解决算法保留了多个匹配的模板规则,那么这是可恢复的动态错误。可选恢复操作是从保留的匹配模板规则选择声明顺序中最后出现的模板。 XSLT 2.0

Section 6.4

XTRE0540 处理器不会返回错误,并可通过选择在声明顺序中最后出现的模板进行恢复。
无效的 value-xml 空间 如果已构造属性的名称为 xml:space,且值既不是缺省值也不是预留值,那么这是可恢复的动态错误。可选恢复操作是根据请求使用值来构造属性。 不管此属性是使用字面值结果元素进行构造的还是使用 xsl:attribute、xsl:copy 或 xsl:copy-of 指令进行构造的,这都适用。 XSLT 2.0

Section 11.1.2

XTRE0795 处理器不会返回错误,并根据请求使用值构造属性。
文档 URI 中的分段无效 document 函数的提供的 URI 引用包含分段标识,如果以下任何一项为 true,那么这是可恢复的错误:
  • 介质类型不是处理器识别的介质类型
  • 分段标识不符合此介质类型的分段标识的规则
  • 如果分段标识未选择一串节点而选择了其他项(例如,如果它在文本节点中选择多个字符)
可选恢复操作是忽略分段标识,并返回文档节点。(注意,此恢复选项不同于 XSLT 1.0 中的恢复选项)
XSLT 2.0

Section 16.1

XTRE1160 处理器忽略分段标识并返回文档节点。不会返回警告。
相同资源,多个结果 对于生成具有标识相同物理资源的 URI 的两个或多个最终结果树的变换,这是可恢复的动态错误。由于处理器不可能检测到错误,因此可选恢复操作是独立于实现的。 XSLT 2.0

Section 19.1

XTRE1495 处理器返回错误。
对相同资源进行读取和写入 如果单个变换期间针对样式表写入外部资源并从相同资源进行读取,那么不管在这两种情况是否使用相同 URI 访问资源,这都是不可恢复的动态错误。 可选恢复操作独立于实现;不需要实现即可检测错误情况。 XSLT 2.0

Section 19.1

XTRE1500 处理器不会尝试检测此错误情况。
不支持禁用输出转义 如果 xsl:value-of 或 xsl:text 指令指定要禁用输出转义但实现不支持此功能,那么这是不可恢复的动态错误。可选恢复操作是忽略 disable-output-escaping 属性。 XSLT 2.0

Section 20.2

XTRE1620 处理器不提供禁用输出转义的功能,且会忽略 disable-output-escaping 属性而不会出现警告。
为非序列化项禁用输出转义 如果 xsl:value-of 或 xsl:text 指令指定在写入未序列化的最终结果树时要禁用输出转义,那么这是不可恢复的动态错误。可选恢复操作是忽略 disable-output-escaping 属性。 XSLT 2.0

Section 20.2

XTRE1630 处理器不提供禁用输出转义的功能,且会忽略 disable-output-escaping 属性而不会出现警告。
整数溢出 xs:integer 算术运算期间发生溢出和下溢情况时,支持有限精度整数运算的实现必须从以下选项进行选择:
  • 始终引发错误 (FOAR0002)
  • 提供定义了实现的机制,此机制允许用户在引发错误和返回以最近可表示的整数值为模的结果之间进行选择。
XQuery 1.0 和 XPath 2.0 函数和运算符

Section 6.2

FOAR0002 处理器提供以下机制:通过 com.ibm.xml.xapi.XStaticContext.setIntegerMathMode(int) 方法启用整数运算的溢出检测,可使用常量 INTEGER_MATH_MODE_OVERFLOW_DETECTIONINTEGER_MATH_MODE_LIMITED_PRECISION(在 XStaticContext 接口上定义)调用此方法以在两个选项之间进行选择。 提供第三个选项 INTEGER_MATH_MODE_ARBITRARY_PRECISION 以允许任意精度整数。
双精度值溢出 对于 xs:float 和 xs:double 算术运算,溢出行为必须符合 IEEE 754-1985,此规范允许以下选项:
  • 使用溢出陷阱时引发错误 (FOAR0002)
  • 返回 INF 或 -INF
  • 返回最大(正数或负数)有限数
XQuery 1.0 和 XPath 2.0 函数和运算符

Section 6.2

  处理器返回 INF 或 -INF。
双精度值下溢 对于 xs:float 和 xs:double 算术运算,下溢行为必须符合 IEEE 754-1985,此规范允许以下选项:
  • 使用下溢陷阱时引发错误 (FOAR0002)
  • 返回 INF 或 -INF
  • 返回 0.0E0、+/- 2**Emin 或不规范的值,其中 Emin 是可能的最小 xs:float 或 xs:double 指数
XQuery 1.0 和 XPath 2.0 函数和运算符

Section 6.2

  处理器返回 0.0E0。
使用 doctype-system 或 standalone 属性无效 如果数据模型的实例包含文本节点或多个元素节点作为根节点的子节点,那么指定具有的值不是 omit 的 doctype-system 参数或 standalone 参数是序列化错误。串行器必须发出错误,或通过忽略输出文档类型声明的请求或 standalone 参数进行恢复。 SR

Section 5

SEPM0004 处理器返回序列化错误。
无效的 xml 输出编码 如果输出方法为 XML 且请求了非 UTF-8 或 UTF-16 的输出编码,而串行器不支持此编码,那么会发生序列化错误。串行器必须返回错误 (SESU0007) 或改为使用 UTF-8 或 UTF-16 来进行恢复。 SR

Section 5.1.2

SESU0007 处理器返回序列化错误。
错误或恢复 某些动态错误归类为可恢复的错误。发生可恢复的错误时,处理器可以通过报告错误情况和终止执行来发出错误,或采取定义的恢复操作并继续处理。 XSLT 2.0

Section 2.9

在某些情况下,处理器从多个可恢复的错误恢复,但仍会发出错误。请参阅此表以确定每种可恢复错误类型的定义了实现的行为。
静态发出类型错误 针对是否静态发出了类型错误定义了实现。 XSLT 2.0

Section 2.9

处理器在可能的时候静态检测类型错误;但存在编译时无法检测错误的情况。在这些情况下,在运行时检测错误。
处理序列化错误 针对处理序列化错误定义了实现。 XSLT 2.0

Section 20

错误消息会发送到 com.ibm.xml.xapi.XMessageHandler 实现,已使用 com.ibm.xml.xapi.XDynamicContext 接口上的 setXMessageHandler 方法注册此实现。
基本输出 URI 针对建立基本输出 URI 的方式定义了实现。 XSLT 2.0

Section 2.3

用户可使用 com.ibm.xml.xapi.XDynamicContext 接口上的 setBaseOutputURI 方法设置基本输出 URI。
扩展属性 实现可允许扩展属性修改扩展函数和扩展指令的行为,或影响序列化方法 xml、xhtml、html 或文本的行为,影响程度为序列化方法的行为定义了实现或独立于实现。 XSLT 2.0

Section 3.3

处理器识别 xsl:output 声明上的 indent-amount 属性,以指定启用缩进时用于每个缩进级别的空间。该属性必须来自以下其中一个名称空间:
  • http://www.ibm.com/xmlns/prod/xltxe-j
  • http://xml.apache.org/xalan
  • http://xml.apache.org/xslt
请参阅此表中后面部分中的其他序列化参数项。
用户定义的数据元素 实现可以将定义了实现的意义附加到特定名称空间中显示的用户定义的数据元素中。针对此类数据元素识别的一组名称空间定义了实现。 XSLT 2.0

Section 3.6.2

处理器不会识别任何用户定义的数据元素。
用户定义的类型 针对其他用户定义的类型或定义了实现的类型的支持定义了实现。 XPath 2.0 数据模型

Section 2.6

不支持模式感知处理器。
未定义的类型行为 数据模型中某些输入的值未定义。尝试访问未定义的属性始终是一个错误。这些情况下的行为定义了实现,且主语言负责确定结果。 XPath 2.0 数据模型

Section 2.5.2, Bullet 4.d

FOTY0012 处理器返回错误。错误消息会发送到 com.ibm.xml.xapi.XMessageHandler 实现,已使用 com.ibm.xml.xapi.XDynamicContext 接口上的 setXMessageHandler 方法注册此实现。
名称空间节点表示 名称空间的表示(即是否将它们表示为节点)独立于实现。 XPath 2.0 数据模型

Section 6.4

不支持名称空间轴。
定位样式表模块 针对基本 URI 进行解析后,针对以下方式定义了实现:使用URI 引用(来自 xsl:include 或 xsl:import 声明的 href 属性)定位样式表模块表示的方式,以及从该表示构造样式表模块的方式。尤其是,针对支持哪些 URI 模式、是否支持分段标识以及支持哪些介质类型均定义了实现。 XSLT 2.0

Section 3.10.1

用户可以提供 com.ibm.xml.xapi.XSourceResolver 实现(通过 com.ibm.xml.xapi.XStaticContext. setSourceResolver(XSourceResolver) 方法)。 处理器使用 XSourceResolver 以解析来自 xsl:include 和 xsl:import 声明的 URI(因此,用户可以决定要支持的 URI),且其 getSource(String, String) 方法必须返回 JAXP 源对象。

如果未提供 XSourceResolver,那么处理器会处理文件 URI 模式以及 java.net.URL.openConnection() 方法支持的那些模式。可以使用 URI 分段以在源 XML 文档中选择嵌入式样式表模块。分段必须通过使用其以下任一属性的值,标识文档中的 xsl:stylesheet 元素:xml:id 属性、DTD 中定义的用作类型标识的属性,或模式中定义的用作类型 xs:ID 的属性。针对非 XML 介质类型,没有内置支持,但用户可以使用 XSourceResolver 实现为非 XML 数据的 XML 表示提供处理器。

扩展函数 扩展函数

XSLT 2.0 规范定义如何调用扩展指令和扩展函数,但针对用于创建新扩展指令和新扩展函数的工具定义了实现。

XSLT 2.0

Section 18.1

通过处理器的 XStaticContext.declareFunctionXDynamicContext.bindFunction 方法支持扩展函数。 或者,还可以直接在样式表或查询中声明扩展函数。解析器和处理器中支持的旧样式的扩展函数还支持向后兼容;但是旧样式仅支持 1.0 类型。请参阅 API 文档以了解更多信息。建议您尽可能直接在样式表中或通过扩展函数的 API 声明扩展函数,而不是使用旧样式。
扩展指令 扩展指令

XSLT 2.0 规范定义如何调用扩展指令和扩展函数,但针对用于创建新扩展指令和新扩展函数的工具定义了实现。

XSLT 2.0

Section 18.2

XTDE1450 不支持用户定义的扩展指令。必须使用回退指令保护扩展指令;否则无法编译样式表。重定向扩展支持向后兼容;但是,建议您使用 XSLT 2.0 xsl:result-document 指令,因为此指令更易于移植。
向后兼容 针对特定 XSLT 2.0 实现是否支持向后兼容的行为定义了实现。 XSLT 2.0

Section 3.8

支持 XSLT 2.0 规范中描述的向后兼容功能部件。
针对 use-when 的 in-scope 整理 针对 use-when 表达式的 in-scope 整理 XSLT 2.0

Section 3.12

仅在 use-when 求值为 Unicode code-point 整理期间的整理可用。
针对 use-when 的当前日期时间 针对 use-when 表达式的当前日期和时间Current® XSLT 2.0

Section 3.12

当前日期时间为通过调用 java.util.GregorianCalendar getInstance() 方法检索到的系统当前日期时间。
针对 use-when 的隐式时区 针对 use-when 表达式的隐式时区 XSLT 2.0

Section 3.12

隐式时区为通过调用 java.util.TimeZone getDefault() 方法检索到的系统时区。
最大小数位数 针对小数位数的最大总数字数目定义了实现,但它们必须至少为 18 个数字。 XSLT 2.0

Section 4.6

实现使用 java.math.BigDecimal 类,此类支持近乎无限制的精度,除了小数位右侧的数字数目限制为 Integer.MAX_VALUE。仅当进行除法运算时需要截断,在此情况下,可能存在无穷小数。结果的小数部分的精度限制为 18 个数字。在这种情况下,四舍五入的方式为 ROUND_HALF_UP,其中会取 0.5 或更大值的废弃小数(从零算起),舍去较小的小数。
年份组件值 针对 xs:date、xs:time、xs:dateTime、xs:gYear 和 xs:gYearMonth 类型:年份组件的值的范围(必须至少为 +0001 到 +9999)以及最大小数秒位数(必须至少为 3) XSLT 2.0

Section 4.6

xs:date、xs:dateTime、xs:gYear 和 xs:gYearMonth 类型的年份组件具有的范围为 (10^9-1) 到 (10^9)-1。xs:time 和 xs:dateTime 类型支持的最大小数秒位数为 3。
duration 对于 xs:duration 类型:年份、月份、天、小时、分钟和秒组件的最大绝对值 XSLT 2.0

Section 4.6

持续时间组件的最大绝对值为:
  • 年份:178956970
  • 月份:2147483647
  • 天:106751991167
  • 小时:2562047788015
  • 分钟:153722867280912
  • 秒:9223372036854775
毫秒支持三个数字的精度。
年份月份持续时间 针对 xdt:yearMonthDuration 类型:表示为月份整数的最大绝对值 XSLT 2.0

Section 4.6

xs:yearMonthDuration 类型的最大绝对值为 2147483647 个月。
天时间持续时间 针对 xdt:dayTimeDuration 类型:表示为秒的小数位数的最大绝对值 XSLT 2.0

Section 4.6

xs:dayTimeDuration 类型的最大绝对值为 9223372036854775 秒。
值最大长度 针对 xs:string、xs:hexBinary、xs:base64Binary、xs:QName、xs:anyURI 和 xs:NOTATION 类型以及派生自这些类型的类型:值的最大长度 XSLT 2.0

Section 4.6

理论最大长度为 2^31 - 1;但是,系统很可能在到达此限制之前很早就耗尽内存。
序列长度 序列中最大项数 XSLT 2.0

Section 4.6

理论最大项数为 2^31 - 1;但是,系统很可能在到达此限制之前很早就耗尽内存。
静态已知整理 一组 in-scope 整理 XSLT 2.0

Section 5.4.1

XPath 2.0

Section 2.1.1

XQuery 1.0

Section 2.1.1

任何 URI 将被视为位于 in-scope 整理集合中。用作整理 URI 的每个 URI 必须在执行时与 Java™ 整理器关联。
隐式时区 隐式时区 XSLT 2.0

Section 5.4.3.2

XPath 2.0

Section 2.1.2

XQuery 1.0

Section 2.1.2

可以在处理器中使用 XDynamicContext.setImplicitTimeZone(Duration) 方法设置隐式时区。如果未设置隐式时区,那么将使用通过 java.util.TimeZone.getDefault() 方法检索到的系统时区。
缺省集合 缺省集合

这是可通过调用无自变量的 fn:collection 函数生成的节点序列。实现可以初始化缺省集合的值。

XSLT 2.0

XPath 2.0

Section 2.1.2

FODC0004 缺省集合由向 XDynamicContext 注册的 XCollectionResolver 确定。如果没有注册 XCollectionResolver,那么会返回错误,且会使用空序列。有关 XCollectionResolver 接口的更多信息,请参阅 API 文档。
stylesheet 参数 执行变换时提供 stylesheet 参数值

顶级 xsl:param 元素声明 stylesheet 参数。stylesheet 参数是具有其他属性的全局变量,启动变换时调用者可提供此属性的值。

XSLT 2.0

Section 9.5

如果 XDynamicContext 中绑定了参数的值,那么会使用此值;否则,会使用此参数的样式表中指定的缺省值。

要将值绑定到参数,请使用 XDynamicContext.bind() 方法。

样式表函数改写机制 将样式表函数改写为实施者提供的函数;属于 xsl:function 元素

可选 override 属性定义此函数具有与实施者提供的函数相同的名称和元数或使用定义了实现的机制使此函数在静态上下文中可用的情况下,所发生的事情。如果 override 属性具有值 yes,那么会在首选项中使用此函数;如果 override 属性具有值 no,那么会在首选项中使用其他函数。缺省值为 yes。指定 override="yes" 将确保可互操作的行为 - 将使用所有处理器执行同一代码。当写入某些处理器中提供而其他处理器中不提供的函数的回退实现时,指定 override="no" 会很有用:这允许优先使用该函数的供应商实现(或作为扩展函数编写的用户实现),而非样式表实现。

XSLT 2.0

Section 10.3

如果 override 属性具有值 yes,那么样式表函数可改写以下内容:
  • 使用 XDynamicContext 方法在 XStaticContext 中声明的并使用 XDynamicContext.bindFunction() 方法在 XDynamicContext 中绑定的扩展函数
  • XSLT4J 和 XL TXE-J 1.0 中支持的旧样式扩展函数

    请参阅 Using extension functions

  • 处理器实现的 EXSLT 扩展函数

无法使样式表函数改写 XSLT 2.0 规范或 XQuery 1.0 和 XPath 2.0 函数和运算符规范中定义的任一核心函数。

标准化已复制的 XML 标识 当使用 xsl:copy 或 xsl:copy-of 指令复制 xml:id 属性时,实现定义了该属性的值是否经过属性值标准化;即,有效应用 normalize-space XQuery 1.0 和 XPath 2.0 函数和运算符函数。 XSLT 2.0

Section 11.9

xsl:copy 和 xsl:copy-of 指令均不会在 xml:id 属性上应用 normalize-space 函数;因此会保留所有空格。
支持编号序列 支持编号序列

针对支持哪些先前列出的编号序列的额外编号序列定义了实现。如果实现不支持给定令牌表示的编号序列,那么必须使用令牌 1 的格式。

XSLT 2.0

Section 12.3

处理器仅支持编号序列的标准集合。
编号的范围界限 编号范围的下限和上限

对于标准编号序列,实现强加的任何上限不得小于 1000(一千),任何下限不得大于 1。不在此范围内的数字将使用令牌 1 的格式进行格式化。与令牌 1 的格式关联的编号序列具有下限 0(零)。

XSLT 2.0

Section 12.3

  • 字母值:处于任意整数精度方式的任意精度,否则为 0 到 2^63 - 1
  • 数字值:处于任意整数精度方式的任意精度,否则为 0 到 2^63 - 1
  • 罗马体值:0 - 9999
  • 字数:0 - 19999
用于编号的缺省语言 用于编号的缺省语言

lang 属性指定要使用哪些语言转换;此属性具有与 xml:lang 相同的值范围(请参阅 XML 1.0 规范)。如果未指定 lang 值,那么会针对使用的语言定义实现。

针对支持用于哪种编号的语言集合定义了实现。如果请求的语言不受支持,那么处理器会使用忽略 lang 属性的情况下将使用的语言。

XSLT 2.0

Section 12.3

编号格式化的缺省语言始终设置为 zh-CN。
用于编号的语言 用于编号的语言集合

很多编号序列都与语言相关。

XSLT 2.0

Section 12.3

受支持的语言基于 International Component Unicode (ICU) 和 JVM 支持的语言。
用于编号的组合 用于编号的 format token、language 和 ordinal 属性的值的组合 XSLT 2.0

Section 12.3

处理器仅支持 ordinal 值 yes。如果未指定 ordinal 属性,那么会忽略 ordinal 属性的任何其他值。
用于排序的 data-type xsl:sort 的 data-type 属性的影响

如果此属性具有有效值文本,那么在比较前将原子化排序键值转换为字符串。如果此属性具有有效值编号,那么在比较前将原子化排序键值转换为双精度值。在适当的情况下,通过使用 string-FO 或 number-FO 函数执行转换。如果 data-type 属性具有任何其他有效值,那么此值必须为具有非空前缀的文字 QName,且针对此属性的影响定义了实现。

XSLT 2.0

Section 13.1.2

data-type 属性的受支持值为“text”和“number”。对于任何其他有效值,会发出警告消息,且忽略 data-type 属性。
整理 URI URI 与实际整理规则或算法关联的方式

如果存在整理属性,那么会忽略 lang 和 case-order 属性。但是,如果缺少整理属性,那么这些属性提供定义了实现的算法的输入以定位合适的整理。

要求对字符串进行排序的 XSLT 2.0 和 XPath 2.0 中的工具依赖于指定整理的概念。整理为一组规则,用于确定两个字符串是否相等,如果不相等,确定这两个字符串的排序顺序。 整理由 URI 标识,但针对此 URI 与实际规则或算法关联的方式定义了实现

XSLT 2.0

Section 13.1.3

整理 URI 使用其中一个 XDynamicContext.bindCollation 方法通过 API 与 Java 整理器关联。
lang case-order 确定整理 哪些 lang 和 case-order 属性确定用于排序的整理算法 XSLT 2.0

Section 13.1.3

处理器基于 lang 属性的值检索语言环境。然后使用 java.text.Collator.getInstance(Locale) 方法创建 Java 整理器。改写整理器的比较方法以处理 case-order 属性(如果指定)。如果未指定 lang 属性,那么处理器会按照以前继续使用 Java 方法 Locale.getDefault() 返回的缺省语言环境。
用于排序的缺省整理 用于排序的缺省整理

如果 xsl:sort 中不存在 collation、lang 或 case-order 属性,那么会以定义了实现的方式选择整理。用于排序的缺省整理不需要与对 XPath 表达式进行求值时使用的缺省整理相同。 (请参阅 Section 5.4.1: Initializing the Static Context 和 Section 3.6.1: The default-collation attribute)

XSLT 2.0

Section 13.1.3

处理器使用 Java 方法 Locale.getDefault() 返回的缺省语言环境,从而通过使用 java.text.Collator.getInstance(Locale) 方法创建 Java 整理器。
识别的介质类型 处理器识别的介质类型集合 XSLT 2.0

Section 16.1

处理器仅支持 XML 文件。
日期格式的图片回退 日期格式函数中的图片字符串的回退表示;指示组件的值的格式令牌 n、N 或 Nn 将按名称输出(分别以小写、大写或标题大写)

可按名称输出的组件包含(但不限于)月份、一周中的天、时区和世纪。 如果处理器无法按名称输出所选日历和语言的这些组件,那么它将使用定义了实现的回退表示。

XSLT 2.0

Section 16.5.1

处理器会将 [Calendar: AD] 作为回退输出。
在日期格式函数中支持的集合 在日期格式函数中支持的语言、日历和国家或地区 XSLT 2.0

Section 16.5.2, first paragraph

  • 受支持的日历为:AD、ISO、BE
  • 受支持的语言和语言环境:java.util.Locale.getAvailableLocales() 返回的语言和语言环境
日期格式函数中的缺省值 如果自变量已忽略或为空,那么为日期格式函数中的缺省语言、日历和国家或地区 XSLT 2.0

Section 16.5.2, first paragraph

  • 缺省日历:AD
  • 缺省语言和语言环境:java.util.Locale.getDefault() 指定的语言和语言环境
日期格式函数中的缺省语言 日期格式函数中的缺省语言

如果忽略了 language 自变量,且设置为空序列或设置为无效值或实现无法识别的值,那么处理器会使用定义了实现的语言。

XSLT 2.0

Section 16.5.2, fourth paragraph

请参阅日期格式函数中的缺省值
日期格式函数中的语言中的名称缩写 日期格式函数中的名称和缩写 XSLT 2.0

Section 16.5.2, seventh paragraph

International Components for Unicode (ICU) Web 站点具有包含指向每个受支持语言环境的表的链接的 Locale Explorer。 处理器将这些表中指定的一周中的天以及月份的短名称用作缩写格式,将长名称用作非缩写格式。
日期格式函数中的日历行为 日期格式函数中的日历行为 XSLT 2.0

Section 16.5.2, tenth paragraph

处理器不支持具有非空名称空间 URI 的任何日历。如果提供的 QName 具有前缀,那么将使用 AD 日历。
日期格式函数中的缺省日历 日期格式函数中的缺省日历 XSLT 2.0

Section 16.5.2, eleventh paragraph

请参阅日期格式函数中的缺省值
日期格式函数中支持的日历 日期格式函数中支持的日历集合 XSLT 2.0

Section 16.5.2, first paragraph following table of calendars

请参阅日期格式函数中支持的集合。
系统属性值 从系统属性返回的实际值 XSLT 2.0

Section 16.5.5, second paragraph following the bulleted list

系统属性的值:
  • xsl:version 为 2.0
  • xsl:vendor 为 IBM® Corporation
  • xsl:vendor-url 为 http://www.ibm.com/
  • xsl:product-name 为 XL Transform and Query Engine for Java
  • xsl:product-version 为 2.0
  • xsl:is-schema-aware 为 yes
  • xsl:supports-serialization 为 yes
  • xsl:supports-backwards-compatibility 为 yes
  • xsl:supports-namespace-axis 为 yes
系统属性的集合 系统属性的集合 XSLT 2.0

Section 16.6.5Erratum XT.E14

处理器支持以下内容:
  • XSLT 2.0 规范的第 16.6.5 部分中定义的所有系统属性
  • XSLT Erratum XT.E14 中定义的新的可选 xsl:supports-namespace-axis 属性
xslmessage xsl:message 指令发送消息的方式 XSLT 2.0

Section 17, first paragraph

根据 XSLT 2.0 规范的第 17 部分,xsl:message 会以定义了实现的方式将消息发送到定义了实现的目标。 处理器将 xsl:message 指令创建的文档节点的字符串值用作消息。

如果用户未在 com.ibm.xml.xapi.XDynamicContext 上提供 com.ibm.xml.xapi.XMessageHandler 的实例以进行变换,那么消息会写入到 System.err 输出流;且如果 terminate 属性的有效值为 yes,那么变换会抛出异常。如果用户提供了 com.ibm.xml.xapi.XMessageHandler 的实例,那么会将消息传递到此对象的 report() 方法上。 请参阅 API 文档以了解更多信息。

xslmessage 目标 xsl:message 指令创建的文档的输出目标 XSLT 2.0

Section 17, first paragraph

请参阅 xslmessage。
ext 函数中的错误处理 扩展函数发生错误的结果是返回包含不是 XML 字符的字符串 XSLT 2.0

Section 18.1.2, paragraph following the third note

XSLT 2.0 规范的 18.1.2 节允许在扩展函数返回包含 XML 中不允许的字符的字符串时进行若干行为,其中对这些字符进行处理,如同它们是允许的字符。这是处理器实现的行为。
外部对象 在类型系统中表示外部对象的方式 XSLT 2.0

Section 18.1.3, second paragraph

不支持其值为未映射到将 XML 类型映射至 Java 类型中描述的内置类型的类型的数据对象。
最终结果树传递 将最终结果树交付到应用程序的方式 XSLT 2.0

Section 19, third paragraph

如 XSLT 2.0 规范的第 19.1 部分中所述,实现可允许对最终结果树进行序列化,或提供用于对它们进行处理的其他机制。
在此处理器中,可以对最终结果树进行序列化,或可以将其以 java.xml.transform.Result 对象或 com.ibm.xml.xapi.XSequenceCursor 对象格式传递到应用程序。如果最终结果树的 URI 不是 base output URI,且:
  • 用户在 com.ibm.xml.xapi.XDynamicContext 上提供了 com.ibm.xml.xapi.XResultResolver,那么会将结果树以 com.ibm.xml.xapi.XResultResolver.getResult() 返回的 javax.xml.transform.Result 对象格式传递到应用程序;
  • 否则,会使用 java.net.URL.openConnection() 将结果树序列化为 URI 指定的位置。

    其 URI 为基本输出 URI 的最终结果树会使用用于调用变换的 com.ibm.xml.xapi.XExecutable.execute 方法上指定的任何 javax.xml.transform.Result 对象传递到应用程序,或从作为从 com.ibm.xml.xapi.XExecutable.execute() 方法返回的 com.ibm.xml.xapi.XSequenceCursor 传递(如果此方法的签名不包含 javax.xml.transform.Result 自变量)。

    如果结果树以 javax.xml.transform.stream.StreamResult 格式传递,那么会将其序列化到 StreamResult 指定的位置;如果结果树作为 ResultXSequenceCursor 的任何其他子类的实例传递,那么会以适合此 API 的格式传递。

    请参阅 API 文档以获取更多信息。

URI 限制 针对 href 中使用的绝对 URI 格式的限制 XSLT 2.0

Section 19.1, third paragraph following the second note

如 XSLT 2.0 规范的第 19.1 部分中所述,实现可以对绝对 URI 应用定义了实现的限制,此 URI 为 xsl:result-document 指令上的 href 属性的值。 使用此处理器,
  • 如果用户提供 com.ibm.xml.xapi.XResultResolver on the com.ibm.xml.xapi.XDynamicContext,且在其中对样式表进行求值,那么不会对此类绝对 URI 的格式应用限制。
  • 如果没有用户提供的 XResultResolver,那么唯一限制为:如果 href 属性为绝对 URI:
    • 且使用文件协议,那么用户必须具有许可权以打开此文件的输出流
    • 且使用某个其他协议,那么用户必须具有许可权以使用 Java 等价新的 java.net.URL(href).openConnection().getOutputStream() 创建 URI 的输出流
最终结果树位置 序列化最终结果树的位置 XSLT 2.0

Section 2.3 see base output URI

缺省情况下,最终结果树 URI 将被解释为相对于主输出文档的基本 URI。如果需要其他位置,那么可以向动态上下文注册 XResultResolver 实现以实现用户定义的行为。使用 XDynamicContext.setResultResolver() 方法以注册 XResultResolver 实现。还可以通过调用 XDynamicContext.setBaseOutputURI() 方法更改所使用的基本 URI。
缺省输出编码 xsl:output 中的 encoding 属性的缺省值 XSLT 2.0

Section 20

缺省输出编码为 UTF-8。
针对 UTF-8 的 byte-order-mark 针对 UTF-8 的 Byte-order-mark XSLT 2.0

Section 20

缺省值为 no,表示在 UTF-8 文件开头不会引入 BOM。
其他规范化表单 其他用于序列化的标准化表单 XSLT 2.0 和 XQuery 1.0 序列化

Section 19.1

Section 20

Section 5.1.8

未提供定义了实现的标准化表单。
输出版本 xsl:output 中的 version 属性的许可值和缺省值 XSLT 2.0

Section 20

XML 或 XHTML 的缺省值为 1.0;用户可以明确指定 1.0 或 1.1。 对于 HTML,缺省值为 4.0。
样式表中的 static-typing XSLT 2.0 样式表与 XPath 2.0 的静态输入功能部件交互 XSLT 2.0 和 XPath 2.0

XSLT 2.0 Section 21

XPath 2.0 Section F.1

此 XSLT 处理器当前不具有用于请求其 XPath 执行静态输入的机制。
内置类型 样式表中提供的类型定义 XSLT 2.0

Section 3.13

此处理器为模式感知,如 XSLT 2.0 规范中第 3.13 部分中定义。
其他错误代码的名称空间 在实现定义了其他错误 QName 的情况下使用的名称空间 XSLT 2.0

Section 2.9

适当的时候,处理器在其消息文本中使用方括号包含指定错误代码。通常,会以相似的方式表示其他错误,但错误标识不具有规范前缀。

不会将错误情况表示为 QNames;希望以编程方式响应错误的应用程序必须解析错误消息字符串前的这些错误标识。

未解析的文本编码 用于确定外部源编码的机制 XSLT 2.0

Section 16.2

处理器不会实现任何其他启发式操作。编码解析将直接进行到步骤 5,且假定是 UTF-8。
可用的文档 用于在给定绝对 URI 的情况下获取文档节点和介质类型的机制 XSLT 2.0

Section 2.3

Section 16.1

使用 XPath fn:doc 函数加载的文档的缺省源解析行为是基于静态上下文中的基本 URI 解析相对 URI。如果基本 URI 不可用,那么会使用当前工作目录。使用绝对 URI 保持不变。使用 XSLT document 函数加载的文档的缺省源解析行为在 XSLT 2.0 规范的 Multiple Source Documents 中进行了描述。如果未提供基本 URI,那么会使用当前工作目录。如果应用程序需要约束或扩展这些行为,那么可以通过 setSourceResolver() 方法将 XSourceResolver 的实现插入到 XDynamicContext
其他输出方法 支持定义了实现的输出方法 XSLT 2.0 和 XQuery 1.0 序列化

Section 3

处理器不会实现任何其他输出方法。
其他序列化参数 其他序列化参数对于串行器输出的影响 XSLT 2.0 和 XQuery 1.0 序列化

Section 3

XSLT 2.0 Section 20

处理器实现以下其他序列化参数:
  • INDENT AMOUNT:

    指定启用缩进序列化参数时要使用的空间。使用 XOutputParameters.setIndentAmount() 方法或可使用 indent-amount 属性在 XSL 样式表的 xsl:output 元素中指定 xalan:indent-amount。

  • BC MODE:

    为串行器启用向后兼容方式。如果已启用此方式,且未指定输出方法,那么会将 XML 用作缺省值。如果已禁用此方式,那么在未指定输出方法的情况下将遵循 XSLT 2.0 的规则。使用 XOutputParameters.setBackwardsCompatible() 方法以启用此方式。缺省情况下,对于其版本低于 2.0 的 XSL 样式表,会启用向后兼容方式。

其他标准化表单 支持其他 Unicode 标准化表单 XSLT 2.0 和 XQuery 1.0 序列化

Section 5.1.8

未提供定义了实现的标准化表单。
编码阶段中的选项 允许跳过编码阶段以使序列化结果为 Unicode 字符流的选项的影响 XSLT 2.0 和 XQuery 1.0 序列化

Section 4

处理器未提供此类选项。
cdata sec 机制 用户请求的用于创建 CDATA 部分的备用机制 SR

Section 5.1.4 of XSLT 2.0 and XQuery 1.0 Serialization

此处理器未提供用于创建 CDATA 部分的备用机制。
unicode 版本 Unicode 的受支持的版本 XPath 2.0

Appendix D

XQuery 1.0

Appendix D

此处理器支持主机 JRE 支持的 Unicode 版本,即,Unicode Standard V4.0 for Java 6 和 Unicode Standard V6.0 for Java 7。
跟踪函数 跟踪函数

针对跟踪输出的目标定义了实现。

XQuery 1.0 和 XPath 2.0 函数和运算符

Section 4

使用 fn:trace() 函数时,会将结果传递到 com.ibm.xml.xapi.XMessageHandler(先前为 com.ibm.xml.xapi.XErrorHandler)。用户最多可以指定自己的 XMessageHandler 以对处理器报告的跟踪结果进行处理。XMessageHandler.TRACE 指示 Trace-message 类型。
针对下溢整数操作进行恢复 此机制允许用户在引发错误和在溢出或下溢算数运算期间返回以最近可表示的整数值为模的结果之间进行选择 XQuery 1.0 和 XPath 2.0 函数和运算符

Section 6.2

处理器提供以下机制:通过 com.ibm.xml.xapi.XStaticContext.setIntegerMathMode(int) 方法启用整数运算的溢出检测,可使用常量 INTEGER_MATH_MODE_OVERFLOW_DETECTION 或 INTEGER_MATH_MODE_LIMITED_PRECISION 进行调用以在两个选项之间进行选择。 提供第三个选项以允许任意精度整数。
数字截断 如果数字操作中生成的数字数目超出实现支持的数字数目,那么会截断结果,或以用户定义的实现方式将其四舍五入。 XQuery 1.0 和 XPath 2.0 函数和运算符

Section 6.2

Section 3.2.3 of XML Schema Part 2: Datatypes Second Edition

实现使用 java.math.BigDecimal 类,此类支持近乎无限的精度,除了小数位右侧的数字数目限制为 Integer.MAX_VALUE。仅当进行除法运算时需要截断,在此情况下,可能存在无穷小数。结果的小数部分的精度限制为 18 个数字。在这种情况下,四舍五入的方式为 ROUND_HALF_UP,其中会取 0.5 或更大值的废弃小数(从零算起),舍去较小的小数。
整理能力 指定整理将字符串取消组合到适用于子字符串匹配的整理单元中的能力是整理的定义了实现的属性。 XQuery 1.0 和 XPath 2.0 函数和运算符

Section 7.5

如果在对 XDynamicContext 接口的 bindCollation 方法的调用中指定的 Java 整理器是 RuleBasedCollator 类的实例,那么会将关联的整理 URI 与执行基于整理的子字符串匹配的其中一个函数一起使用。
年份值限制 年份值的最大数字数目。

所有最小程度符合的处理器必须支持具有最少 4 个数字的年份值 (YYYY) 和 1 毫秒或三个数字的最小小数秒精度 (s.sss);但是,在这两种情况下,符合的处理器可以对它们支持的最大数字数目设置更大的定义了实现的限制。

XQuery 1.0 和 XPath 2.0 函数和运算符

Section 10.1.1

年份组件 xs:date、xs:dateTime、xs:gYear 和 xs:gYearMonth 类型范围为 (10^9-1) 到 (10^9)-1。
小数秒精度 小数秒值的最大数字数目 XQuery 1.0 和 XPath 2.0 函数和运算符

Section 10.1.1

xs:time 和 xs:dateTime 类型支持的最大小数秒数字数目为 3。
doc 函数 针对 fn:doc 提供的处理的各个方面均定义了实现。实现可以提供外部配置选项,以允许用户控制处理的任何方面。 XQuery 1.0 和 XPath 2.0 函数和运算符

Section 15.5.4

用户可以提供 com.ibm.xml.xapi.XSourceResolver 实现(通过 com.ibm.xml.xapi.XDynamicContext)。setSourceResolver(XSourceResolver) 方法)。 fn:doc 实现使用 XSourceResolver 以解析 URI(因此,用户可以决定要支持的 URI),且其 getSource(String, String) 方法必须返回 JAXP 源对象。如果未提供 XSourceResolver,那么处理器会处理文件 URI 方案以及 java.net.URL.openConnection() 方法支持的那些方案。它不会处理 URI 片段。针对非 XML 介质类型,没有内置支持,但用户可以使用 XSourceResolver 实现为非 XML 数据的 XML 表示提供处理器。

可以根据验证设置,将 DTD 验证和模式验证应用到源文档。可以使用 setValidating 方法在 com.ibm.xml.xapi.XFactory 实例上设置验证设置,此设置由 XFactory 创建的对象继承。 如果将 com.ibm.xml.xapi.XDynamicContext 实例提供给 com.ibm.xml.xapi.XExecutable 实例的执行或 executeToList 方法,那么会使用其验证设置;否则,会使用 XExecutable 实例自己的设置。处理器未针对用于检索资源或者解析或验证其内容时发生的错误提供恢复机制。

处理器未提供降低 fn:doc 函数的需求以返回稳定结果的选项。

小数运算符精度 对于 xs:decimal 值,针对数字运算符返回的精度的数字数目定义了实现。 XQuery 1.0 和 XPath 2.0 函数和运算符

Section 6.2, last paragraph

精度的数字数目为表示精确的不进行四舍五入的结果所需的最小数,除了进行除法运算时结果的小数部分的精度数字数目限制为 18 个。
集合文档稳定性 用于对函数进行求值而不保证稳定性的用户选项,包括提供此类用户选项的方式 XQuery 1.0 和 XPath 2.0 函数和运算符

Sections 15.5.4 and 15.5.6

处理器未提供降低 fn:doc 函数或 fn:collection 函数的需求以返回稳定结果的选项。
小数位精度 xs:decimal 中支持的小数位数

针对当生成的值不会过大或过小但具有过多小数位数要精确表示时,将字符串强制类型转换为 xs:decimal 的结果,定义了实现。

XQuery 1.0 和 XPath 2.0 函数和运算符

Section 17.1.1

实现使用 java.math.BigDecimal 类,此类支持近乎无限制的精度,除了小数位右侧的数字数目限制为 Integer.MAX_VALUE。达到此限制之前将耗尽内存。
返回警告 返回警告的情况,以及处理警告的方式 XQuery 1.0 和 XPath 2.0 函数和运算符

Section 2.3

XPath 2.0

Section 2.3.1

XQuery 1.0

Section 2.3.1

用户可以针对静态警告和动态警告分别使用 com.ibm.xml.xapi.XStaticContextcom.ibm.xml.xapi.XDynamicContext 上的 setMessageHandler()(XMessageHandler) 方法提供 com.ibm.xml.xapi.XMessageHandler 的实现。针对每个警告调用 XMessageHandler 的 report(int, String, XSourceLocation, Exception) 方法,第一个自变量等于 XMessageHandler.WARNING

如果未提供 XMessageHandler,那么会将警告打印到标准错误输出流。

在处理器采取某项操作(例如将无效值替换为缺省值)以避免错误情况的情况中返回警告,用户可能希望将来纠正此情况。

报告错误 向外部处理环境报告错误的方法 XQuery 1.0 和 XPath 2.0 函数和运算符

Section 2.3

XPath 2.0

Section 2.3.2

XQuery 1.0

Section 2.3.2

用户可以针对静态错误和动态错误分别使用 com.ibm.xml.xapi.XStaticContextcom.ibm.xml.xapi.XDynamicContext 上的 setMessageHandler()(XMessageHandler) 方法提供 com.ibm.xml.xapi.XMessageHandler 的实现。针对每个错误调用 XMessageHandlerreport(int, String, XSourceLocation, Exception) 方法,第一个自变量等于 XMessageHandler.ERRORXMessageHandler.FATAL_ERROR

如果未提供 XMessageHandler,那么会将错误打印到标准错误输出流。

XML 1.0 或 XML 1.1 规则 处理器是否针对名称或受支持的字符基于 XML 1.0 或 XML 规则 XPath 2.0

Appendix D

XQuery 1.0

Appendix D

  处理器遵循用于 NCName 定义和受支持的字符,以及进行行尾处理以及属性值标准化的 XML 1.1 规则。
空序列的缺省顺序 “排序依据”中的空序列缺省处理是否为“最小空序列”或“最大空序列” XQuery 1.0

Section 3.8.3

  处理器使用 XStaticContext 方法 setDefaultOrderForEmptySequences 调用设置的缺省值。否则,缺省设置为“最大空序列”。
受支持的编译指示 受支持的任何 XQuery 扩展表达式(编译指示)的名称和语义 XQuery 1.0

Section 3.14

XQST0079 处理器不会识别或不会支持任何扩展表达式。
受支持的选项 任何受支持的 XQuery 选项声明的名称和语义 XQuery 1.0

Section 4.16

  处理器当前支持用于在查询中声明扩展函数的 java-extension 选项。请参阅 API 文档以了解更多信息。
外部函数参数传递 用于将参数从 XQuery 传递到外部函数以及返回结果的受支持协议 XQuery 1.0

Section 4.15

  通过处理器的 XStaticContext.declareFunctionXDynamicContext.bindFunction 方法支持扩展函数。 请参阅 API 文档以了解更多信息。
调用序列化 针对求值 XQuery 查询的结果调用序列化的方式 XQuery 1.0

Section 2.2.4

  如果对 XQueryExecutable 实例的求值方法提供了 javax.xml.transform.stream.StreamResult 接口的实例,那么处理器将序列化查询的结果。您还可以通过调用其中一种 exportSequence 方法对从对查询求值生成的 XSequenceCursor 进行序列化。
缺省序列化参数 byte-order-mark、encoding、media-type、normalization-form、mit-xml-declaration、standalone 和 version 序列化参数的缺省值 XQuery 1.0

Section 2.2.4

Appendix C.3

  可以在 XOutputParameters 接口的实例上指定序列化参数的设置。
  • 针对 UTF-16 编码,byte-order-mark 序列化参数的缺省设置为 yes,针对其他编码,此缺省设置为 no。
  • encoding 序列化参数的缺省设置为 UTF-8。
  • media-type 序列化参数的缺省设置为 text/xml(如果是 xml 输出方法)、text/html(如果是 html 和 xhtml 输出方法)和 text/plain(如果是文本输出方法)。
  • normalization-form 序列化参数的缺省设置为 none。
  • omit-xml-declaration 序列化参数的缺省设置为 no。
  • standalone 序列化参数的缺省设置为 no。
  • version 序列化参数的缺省设置为 1.0(针对 xml 和 xhtml 输出方法)和 4.01(针对 html 输出方法)。
不成功的外部函数调用 不成功的外部函数调用的影响 XQuery 1.0

Appendix D

  如果从 XQuery 到外部函数的调用由于以下原因(不限于以下原因)不成功,那么处理器会首先向提供的 XMessage 处理程序接口的任何实例报告错误,然后抛出异常:
  • 由于函数名称未使用 XDynamicContext.bindFunction 方法绑定到函数定义
  • 提供的自变量数目或类型与函数的实现预期的数目或类型不匹配
  • 函数的实现抛出某个错误或异常
定位模块导入 如果支持模块功能部件,那么会标识模块导入通过其导入特定模块的进程(包括处理存在的位置提示) XQuery 1.0

Section 4.11

  如果 XModuleResolver 向 XStaticContext 进行了注册,那么会将其用于获取模块的源对象。如果 XModuleResolver 未注册或如果它返回 NULL,那么处理器会尝试针对每个位置提示加载一个模块。针对来自静态上下文的基本 URI(如果有)解析相对 URI。如果未提供基本 URI,那么相对位置提示会解释为相对于当前工作目录的文件路径。按原样使用绝对位置提示。如果无法针对特定位置提示加载模块,那么处理器将移动到下一个提示。仅当无法为名称空间加载模块时忽略错误消息。
以下为与 XSLT 1.0 支持相关的特定于实现的信息:
  • system-property 函数不支持 Java 系统属性
  • 如果属性的值在 HTML 输出方法中包含选项卡、回车符或换行符,那么处理器将序列化实际字符,而不是作为属性值的一部分的字符引用。不管是由 XSLT 2.0 and XQuery 1.0 Serialization Recommendation 还是由 HTML 4.01 Recommendation 许可,IBM XSLT 处理器先前版本将在此类上下文中序列化作为字符引用的字符。

指示主题类型的图标 概念主题



时间戳记图标 最近一次更新时间: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=cins_xml_discretion
文件名:cins_xml_discretion.html