95 xml xsd xml-namespaces
我通过模式生成器运行了一个xml文件,生成的所有内容都是预期的,除了一个节点:
<xs:element name="office" type="xs:NCName"/>
Run Code Online (Sandbox Code Playgroud)
到底是xs:NCName什么?为什么人们会使用它xs:string呢?
jas*_*sso 105
@skyl实际上激怒了我写这个答案所以请注意冗余.
NCName代表"非殖民名称".NCName可以定义为XML Schema正则表达式[\i-[:]][\c-[:]]*
\i并且\c是XML Schema定义中定义的多字符转义.
http://www.w3.org/TR/xmlschema-2/#dt-ccesN
\i是初始XML名称字符集的转义符,\c是XML名称字符集. [\i-[:]]表示由\i除了由冒号字符组成的集合的集合组成的集合:.所以用简单的英语来表示"任何初始角色,但不是:".整个正则表达式读作"一个初始XML名称字符,但不是冒号,后跟零个或多个XML名称字符,但不是冒号".
NCName来的实际限制是它不能包含像几个符号字符:,@,$,%,&,/,+,,,;,空白字符或不同括号.此外,NCName不能以数字,点或减号开头,尽管它们可以稍后出现在NCName中.
在符合命名空间的XML文档中,所有名称都必须是限定名称或NCNames.以下值必须是NCNames(非限定名称):
izi*_*tti 28
实际上......
允许的字符: -,.,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,U,V,W,X,Y,Z,_,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z
此外,-并.不能用作值的第一个字符.
不允许的字符: , !,",#,$,%,&,',(,),*,+,,,/,:,;,<,=,>,?,@,[,\,],^,`,{,|,},~
http://books.xmlschemata.org/relaxng/ch19-77215.html
没有空格或冒号。允许“ _”和“-”。
您可以使用它而不是字符串,以便可以验证该值是否限制在允许的范围内。例如,它很好地映射到名称/标识符的某些约定,例如django的“ slug”概念。
我支持[\i-[:]][\c-[:]]*为我们翻译成英语的人。