Risposte:
NCName è un nome non colonizzato, ad esempio "nome". Rispetto a QName che è un nome completo, ad esempio "ns: name". Se i tuoi nomi non dovrebbero essere qualificati da spazi dei nomi diversi, allora sono NCNames.
xs: string non pone alcuna restrizione sui tuoi nomi, ma xs: NCName fondamentalmente non consente a ":" di apparire nella stringa.
@skyl mi ha praticamente provocato a scrivere questa risposta, quindi per favore fai attenzione alla ridondanza.
NCName
sta per "nome non colonizzato". NCName può essere definito come un'espressione regolare di XML Schema[\i-[:]][\c-[:]]*
\i
e \c
sono escape multi-carattere definiti nella definizione dello schema XML.
http://www.w3.org/TR/xmlschema-2/#dt-ccesN
\i
è l'escape per il set di caratteri del nome XML iniziale ed \c
è il set di caratteri del nome XML. [\i-[:]]
indica un insieme che consiste nell'insieme \i
escludendo un insieme che consiste nel carattere dei due punti :
. Quindi, in un inglese semplice, significherebbe "qualsiasi carattere iniziale, ma non :
". L'intera espressione regolare si legge come "Un carattere di nome XML iniziale, ma non due punti, seguito da zero o più caratteri di nome XML, ma non due punti."
Le restrizioni pratiche di NCName sono che non può contenere diversi caratteri di simbolo, come :
, @
, $
, %
, &
, /
, +
, ,
, ;
, spazi bianchi o caratteri diversi parentesi. Inoltre un NCName non può iniziare con un numero, un punto o un carattere meno sebbene possano apparire in seguito in un NCName.
Nei documenti XML conformi allo spazio dei nomi tutti i nomi devono essere nomi qualificati o NCNames. I seguenti valori devono essere NCNames (nomi non qualificati):
In pratica ...
I caratteri consentiti: -
, .
, 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
Inoltre, -
e .
non può essere utilizzato come primo carattere del valore.
Caratteri non consentiti: ,
!
, "
, #
, $
, %
, &
, '
, (
, )
, *
, +
, ,
, /
, :
, ;
, <
, =
, >
, ?
, @
, [
, \
, ]
, ^
, `
, {
, |
, }
,~
http://books.xmlschemata.org/relaxng/ch19-77215.html
Nessuno spazio o due punti. Consente "_" e "-".
Lo useresti al posto della stringa in modo da poter convalidare che il valore è limitato a ciò che è consentito. Si associa bene a certe convenzioni per nome / identificatore come il concetto di django di "lumaca", per esempio.
Do un voto positivo alla persona che [\i-[:]][\c-[:]]*
traduce in inglese per noi.
[\i-[:]][\c-[:]]*
in inglese. Vai avanti e vota, come hai promesso;)
xs:NCName