Qu'est ce qu'un type xs:NCName et quand doit-il être utilisé?
J'ai couru un de mes fichiers xml par le biais d'un schéma générateur et tout ce générée était ce qui était attendu, à l'exception d'un nœud:
<xs:element name="office" type="xs:NCName"/>
Qu'est-ce exactement xs:NCName
? Et pourquoi aurait-on l'utiliser, plutôt xs:string
?
Vous devez vous connecter pour publier un commentaire.
NCName est non-colonisés nom par exemple "nom". Par rapport à QName qui est qualifié de nom par exemple "ns:nom de". Si les noms ne sont pas censés être qualifié par les différents espaces de noms, alors qu'ils sont NCNames.
xs:string n'impose aucune restriction sur vos noms à tous, mais xs:NCName fondamentalement interdit ":" dans la chaîne.
xs:NCName
@skyl pratiquement qui m'ont incité à écrire cette réponse, donc merci de prendre en compte la redondance.
NCName
est synonyme de "non-colonisés nom". NCName peut être définie comme un Schéma XML expression régulière[\i-[:]][\c-[:]]*
...et ce n'est que l'expression rationnelle signifie?
\i
et\c
sont multi-caractère échappe défini dans la définition de Schéma XML.http://www.w3.org/TR/xmlschema-2/#dt-ccesN
\i
est la fuite de l'ensemble initial de caractères de nom XML et\c
est l'ensemble des caractères de nom XML.[\i-[:]]
désigne un ensemble qui se composent de l'ensemble\i
à l'exclusion d'un jeu qui consistent en un caractère deux-points:
. Donc, en clair, ça voudrait dire "le premier caractère, mais pas:
". L'ensemble de l'expression régulière se lit comme "Une première XML caractère du nom, mais pas les deux-points, suivi par zéro ou plusieurs caractères de nom XML, mais pas les deux-points."Restrictions pratiques d'un NCName
La pratique des restrictions de NCName sont qu'il ne peut pas contenir plusieurs caractères de symbole comme
:
,@
,$
,%
,&
,/
,+
,,
,;
, les espaces ou différents entre parenthèses. En outre, un NCName ne peut pas commencer par un nombre, le point ou le signe moins (même si elles peuvent apparaître plus tard dans un NCName.Où sont NCNames nécessaires
Dans l'espace de noms XML conforme des documents de tous les noms doivent être qualifiée noms ou NCNames. Les valeurs suivantes doivent être NCNames (pas de noms qualifiés):
Pratiquement parlant...
Caractères autorisés:
-
,.
,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
Aussi,
-
et.
ne peut pas être utilisé comme premier caractère de la valeur.Des caractères non autorisés:
,
!
,"
,#
,$
,%
,&
,'
,(
,)
,*
,+
,,
,/
,:
,;
,<
,=
,>
,?
,@
,[
,\
,]
,^
,`
,{
,|
,}
,~
http://books.xmlschemata.org/relaxng/ch19-77215.html
Pas d'espaces ni de virgules. Permet de "_" et "-".
Vous utilisez ceci à la place de la chaîne de sorte que vous pouvez vérifier que la valeur est limitée à ce qui est autorisé. Elle correspond bien à certaines conventions de nom/identificateur comme django du concept de "limace", par exemple.
Je upvote la personne qui
[\i-[:]][\c-[:]]*
traduit en anglais pour nous.[\i-[:]][\c-[:]]*
en anglais. Aller de l'avant et upvote, comme vous l'avez promis 😉