Я запустил один из своих xml-файлов через генератор схемы, и все сгенерированное оказалось ожидаемым, за исключением одного узла:
<xs:element name="office" type="xs:NCName"/>
Что именно xs:NCName
? А зачем лучше его использовать xs:string
?
xml
xsd
xml-namespaces
Жассо
источник
источник
xs:NCName
@skyl практически спровоцировал меня написать этот ответ, так что не забывайте об избыточности.
NCName
означает «неколонизированное имя». NCName можно определить как регулярное выражение схемы XML.[\i-[:]][\c-[:]]*
... и что означает это регулярное выражение?
\i
и\c
являются многосимвольными escape-символами, определенными в определении схемы XML.http://www.w3.org/TR/xmlschema-2/#dt-ccesN
\i
- это escape-последовательность для набора начальных символов имени XML и\c
набор символов имени XML.[\i-[:]]
означает набор, состоящий из набора,\i
за исключением набора, состоящего из символа двоеточия:
. Таким образом, на простом английском языке это будет означать «любой начальный символ, но не:
». Полное регулярное выражение читается как «Один начальный символ имени XML, но не двоеточие, за которым следует ноль или более символов имени XML, но не двоеточие».Практические ограничения NCName
Практические ограничения NCName в том , что он не может содержать несколько символов символов , как
:
,@
,$
,%
,&
,/
,+
,,
,;
, пробельные символы или разные скобка. Кроме того, NCName не может начинаться с числа, точки или символа минуса, хотя они могут появиться позже в NCName.Где нужны NCNames
В документах XML, соответствующих пространству имен, все имена должны быть либо полными именами, либо NCNames. Следующие значения должны быть 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
,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
Без пробелов и двоеточий. Допускает «_» и «-».
Вы должны использовать это вместо строки, чтобы вы могли проверить, что значение ограничено допустимым. Он хорошо согласуется с определенными соглашениями для имени / идентификатора, например, с концепцией «slug» в django.
Я голосую за человека, который
[\i-[:]][\c-[:]]*
переводит для нас на английский.источник
[\i-[:]][\c-[:]]*
на английский. Продолжайте и поддерживайте, как вы и обещали;)