Réponses:
NCName est un nom non colonisé, par exemple "nom". Comparé à QName qui est un nom qualifié, par exemple "ns: nom". Si vos noms ne sont pas censés être qualifiés par différents espaces de noms, alors ce sont des NCNames.
xs: string ne met aucune restriction sur vos noms, mais xs: NCName interdit fondamentalement ":" d'apparaître dans la chaîne.
@skyl m'a pratiquement incité à écrire cette réponse, alors faites attention à la redondance.
NCName
signifie "nom non colonisé". NCName peut être défini comme une expression régulière de schéma XML[\i-[:]][\c-[:]]*
\i
et \c
sont des échappements multi-caractères définis dans la définition de schéma XML.
http://www.w3.org/TR/xmlschema-2/#dt-ccesN
\i
est l'échappement de l'ensemble des caractères du nom XML initial et \c
est l'ensemble des caractères du nom XML. [\i-[:]]
désigne un ensemble composé de l'ensemble à l' \i
exclusion d'un ensemble composé du caractère deux-points :
. Donc, en anglais simple, cela signifierait "n'importe quel caractère initial, mais pas :
". L'expression régulière entière se lit comme suit: «Un caractère de nom XML initial, mais pas de deux-points, suivi de zéro ou plusieurs caractères de nom XML, mais pas de deux-points».
Les restrictions pratiques de NCName sont qu'il ne peut pas contenir plusieurs caractères de symboles tels que :
, @
, $
, %
, &
, /
, +
, ,
, ;
, les espaces ou caractères différents entre parenthèses. De plus, un NCName ne peut pas commencer par un nombre, un point ou un signe moins bien qu'ils puissent apparaître plus tard dans un NCName.
Dans les documents XML conformes aux espaces de noms, tous les noms doivent être des noms qualifiés ou des NCNames. Les valeurs suivantes doivent être NCNames (noms non 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
En outre, -
et .
ne peut pas être utilisé comme premier caractère de la valeur.
Les caractères non admis: ,
!
, "
, #
, $
, %
, &
, '
, (
, )
, *
, +
, ,
, /
, :
, ;
, <
, =
, >
, ?
, @
, [
, \
, ]
, ^
, `
, {
, |
, }
,~
http://books.xmlschemata.org/relaxng/ch19-77215.html
Pas d'espaces ni de deux-points. Autorise "_" et "-".
Vous utiliseriez ceci au lieu de string afin de pouvoir valider que la valeur est limitée à ce qui est autorisé. Il correspond bien à certaines conventions pour le nom / identifiant comme le concept de django de "slug", par exemple.
J'apprécie la personne qui [\i-[:]][\c-[:]]*
traduit en anglais pour nous.
[\i-[:]][\c-[:]]*
en anglais. Allez-y et votez, comme vous l'avez promis;)
xs:NCName