ID、IDREF、IDREFS 是 XML 中用于定义和引用元素标识符的特殊属性类型,需在 DTD 或 Schema 中声明,分别实现唯一标识、单向引用和多引用功能,解析器仅在启用验证时校验其合法性与链接有效性。

ID、IDREF、IDREFS 是 XML 中用于定义和引用元素标识符的特殊属性类型,由 DTD(文档类型定义)或 XML Schema 声明,核心作用是实现元素间的内部链接——类似 HTML 中的 id 和 href="#xxx",但更严格、需提前声明。
每个 ID 属性值在整篇文档中必须全局唯一,且只能出现在一个元素上。它不是普通字符串,而是一种数据类型,XML 解析器会校验其合法性(如不能以数字开头、不能含空格等)。
用法示例(在 DTD 中声明):
<!ELEMENT person (name, email)><br><!ATTLIST person id ID #IMPLIED>
对应 XML 实例:
<person id="p1001"><br> <name>张三</name><br> <email>zhang@example.com</email><br></person>
IDREF 属性的值必须匹配文档中某个已声明的 ID 值,解析器会在加载时验证该引用是否存在。常用于表示“属于”“指向”关系。
DTD 声明示例:
<!ELEMENT order (product, customer)><br><!ATTLIST order customer_id IDREF #REQUIRED>
XML 使用示例:
<customer id="c205">李四</customer><br><order customer_id="c205"><br> <product>笔记本</product><br></order>
这里 order 通过 customer_id “链接”到 customer 元素。
IDREFS 是 IDREF 的复数形式,允许一个属性引用多个 ID,各值之间用空白符(空格、制表符、换行)分隔。所有被引用的 ID 都必须存在。
DTD 声明:
<!ATTLIST group members IDREFS #IMPLIED>
XML 示例:
<user id="u1">王五</user><br><user id="u2">赵六</user><br><user id="u3">钱七</user><br><group members="u1 u2 u3">开发组</group>
ID、IDREF 或 IDREFS
ID 值符合命名规则(字母或下划线开头,只含字母、数字、连字符、下划线、英文句点)IDREF 和 IDREFS 的值必须严格等于某个已存在的 ID 值(大小写敏感)DocumentBuilder 启用验证,Python 的 lxml)才能触发链接检查ID 属性不能出现在混合内容或仅含 PCDATA 的元素上(某些处理器有额外限制)基本上就这些。不复杂但容易忽略声明环节——没在 DTD 里说清楚,XML 就只把它们当普通字符串,链接逻辑不会生效。
以上就是XML中的ID, IDREF, IDREFS是什么 怎么创建内部链接的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号