【发布时间】:2010-12-10 12:35:27
【问题描述】:
我通过模式生成器运行了一个 xml 文件,生成的所有内容都符合预期,但一个节点除外:
<xs:element name="office" type="xs:NCName"/>
xs:NCName 到底是什么?为什么要使用它,而不是xs:string?
【问题讨论】:
标签: xml xsd xml-namespaces
我通过模式生成器运行了一个 xml 文件,生成的所有内容都符合预期,但一个节点除外:
<xs:element name="office" type="xs:NCName"/>
xs:NCName 到底是什么?为什么要使用它,而不是xs:string?
【问题讨论】:
标签: xml xsd xml-namespaces
NCName 是非殖民化名称,例如“姓名”。与 QName 相比,QName 是限定名称,例如“ns:名称”。如果你的名字不应该被不同的命名空间限定,那么它们就是 NCNames。
xs:string 对你的名字没有任何限制,但 xs:NCName 基本上不允许“:”出现在字符串中。
【讨论】:
xs:NCName中也不允许使用空字符串
http://books.xmlschemata.org/relaxng/ch19-77215.html
没有空格或冒号。允许“_”和“-”。
您可以使用它而不是字符串,以便验证该值是否限制在允许的范围内。它很好地映射到名称/标识符的某些约定,例如 django 的“slug”概念。
我为[\i-[:]][\c-[:]]* 为我们翻译成英文的人点赞。
【讨论】:
[\i-[:]][\c-[:]]* 翻译成英文的答案。正如你所承诺的那样继续投票;)
@skyl 实际上激怒了我写这个答案,所以请注意冗余。
NCName 代表“非殖民化名称”。 NCName 可以定义为 XML Schema 正则表达式[\i-[:]][\c-[:]]*
\i 和 \c 是 XML 模式定义中定义的多字符转义。
http://www.w3.org/TR/xmlschema-2/#dt-ccesN\i 是初始 XML 名称字符集的转义,\c 是XML 名称字符集。 [\i-[:]] 表示由集合\i 组成的集合,不包括由冒号字符: 组成的集合。所以用简单的英语来说,它的意思是“任何初始字符,但不是:”。整个正则表达式读取为“一个初始 XML 名称字符,但不是冒号,后跟零个或多个 XML 名称字符,但不是冒号。”
NCName 的实际限制是它不能包含多个符号字符,如:、@、$、%、&、/、+、,、@ 987654344@,空白字符或不同的括号。此外,NCName 不能以数字、点或减号字符开头,尽管它们可以稍后出现在 NCName 中。
在符合命名空间的 XML 文档中,所有名称都必须是限定名称或 NCName。 以下值必须是 NCNames(非限定名称):
【讨论】:
实际上...
允许的字符: -、.、0、1、2、3、4、5、6、7,8,9,A,B,C,D,E,F,G,H,I,J ,K,L,M,N,O,P,Q,R,S,T,T,U,@9876 987654355 @,X,Y,Z,_,a,b,c,d,e,f,g,h ,i,j,k,l,m,n,o,p,q,r,s,s,@987654378 987654380@、v、w、x、y、z
另外,- 和 . 不能用作值的第一个字符。
不允许使用的字符: 、!、"、#、$、%、&、'、(、),,,;,>,?,?,?,?,? 、\、]、^、`、{、|、}、~
【讨论】: