3

W3C XSD 1.0 第 2 部分:数据类型规范参考了用于定义 ID 和 IDREF 类型的W3C XML 1.0规范,但是这些文档都没有定义对这些类型的值长度的任何约束。

但是,似乎某些 XML 编辑器对这些类型实施了长度限制。

此外,一些 Web 浏览器似乎实现了长度限制,例如 HTML Hx 元素的“id”属性(在 HTML 4 和 XHTML 1.1 中定义为 XML ID 类型)。

  1. W3C 规范或其他规范定义的 ID/IDREF 类型的长度是否有任何限制?

  2. XML 编辑器实现的典型长度限制是什么?

  3. Web 浏览器(用于 HTML)实现的典型长度限制是什么?

4

1 回答 1

3

实际上,很明显,现在存在的每个 XML 解析器对类型 ID 和 IDREF 的值都有长度限制,因为现在存在的每个 XML 解析器都运行在具有有限存储量的机器上(通常解析器的存储容量要小得多)限制它准备用于解析文档的存储量)。

我知道的唯一模式(基于我有限的经验)是,有效限制不是由预定义的数量而是由运行时关键时刻可用的内存量给出的,这并不罕见。

我相信有些用户只是下令他们不会使用超过 32 个字符的标识符;我怀疑大多数 XML 编辑器会接受长度比它大一到两个数量级的标识符。

并回答您的第一个问题:我知道的任何 W3C 规范中定义的 ID/IDREF(或 XML 规范中的任何其他内容)的长度都没有限制。所有实现都必然有限制,但据我所知,没有任何规范为这些限制设定最低水平,我怀疑任何为这些限制定义设定水平的尝试都会立即遭到一连串的蔑视。(XSD 1.1 确实为某些无限数据类型的支持设置了最小限制,但对 ID 和 IDREF 的最小长度限制只字未提;严格来说,这些类型的值和词法空间总是有限的,因此第 5.4 节的重点可能是无限数据类型使它们看起来超出了范围。)

于 2013-01-23T16:28:47.690 回答