正确的 xs:ID 允许的 ID 名称是什么?

问题描述 投票:0回答:1

我正在尝试为其中一个标签的

id
属性定义一个 ID。文档和 xsd 模式要求使用
xs:id
确认 id 集。

我尝试了

"ID_123"
,但当我尝试
"123"
时,却没有。我在谷歌上搜索了很多选项和一些例子,但除了here写的文字之外找不到任何东西。

请在此提供一些示例以及允许使用哪些字符?据我了解,任何字母数字字符都应该有效,但似乎应该是字母(或单词

ID
?)和数字的组合。

xml xsd xsd-validation w3c xml-validation
1个回答
4
投票

W3C XML 架构定义语言 (XSD) 1.1 第 2 部分:数据类型 定义

xs:ID
:

3.4.8 ID

[定义:]

ID
表示来自[
XML
] 的 ID 属性类型。 ID 的“值空间”是与“匹配”的所有字符串的集合
NCName
[XML 中的命名空间] 中的生成。 ·词汇空间· ID 是与
NCName
匹配的所有字符串的集合 [XML 中的命名空间] 中的生成。 ID 的·基本类型·是
NCName
.

NCName 制作限制了可以使用的字符:

[4] NCName ::= NCNameStartChar NCNameChar*    /* An XML Name, minus the ":" */
[5] NCNameChar ::= NameChar - ':'
[6] NCNameStartChar ::= NameStartChar - ':'
[4] NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | [#xC0-#xD6] | [#xD8-#xF6] |
                      [#xF8-#x2FF] | [#x370-#x37D] | [#x37F-#x1FFF] | 
                      [#x200C-#x200D] | [#x2070-#x218F] | [#x2C00-#x2FEF] |
                      [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] |
                      [#x10000-#xEFFFF]
[4a] NameChar ::= NameStartChar | "-" | "." | [0-9] | #xB7 | 
                  [#x0300-#x036F] | [#x203F-#x2040]

在众多限制中,请特别注意,

xs:ID
s 名称中的任何位置都不能有
:
字符,并且不能将数字作为名称的第一个字符。

因此,您的

ID_123
是正确的
NCName
,但
123
不是,因为它以数字开头。

© www.soinside.com 2019 - 2024. All rights reserved.