Antworten:
NCName ist ein nicht kolonisierter Name, z. B. "Name". Im Vergleich zu QName, bei dem es sich um einen qualifizierten Namen handelt, z. B. "ns: name". Wenn Ihre Namen nicht durch unterschiedliche Namespaces qualifiziert werden sollen, handelt es sich um NCNames.
xs: string schränkt Ihre Namen überhaupt nicht ein, aber xs: NCName lässt grundsätzlich nicht zu, dass ":" in der Zeichenfolge angezeigt wird.
@skyl hat mich praktisch dazu gebracht, diese Antwort zu schreiben. Bitte beachten Sie die Redundanz.
NCName
steht für "nicht kolonisierter Name". NCName kann als regulärer Ausdruck eines XML-Schemas definiert werden[\i-[:]][\c-[:]]*
\i
und \c
sind Escapezeichen mit mehreren Zeichen, die in der XML-Schemadefinition definiert sind.
http://www.w3.org/TR/xmlschema-2/#dt-ccesN
\i
ist das Escape für den Satz von anfänglichen XML-Namenszeichen und \c
ist der Satz von XML-Namenszeichen. [\i-[:]]
bedeutet eine Menge, die aus der Menge besteht, mit \i
Ausnahme einer Menge, die aus dem Doppelpunkt besteht :
. Im Klartext würde es also "jedes Anfangszeichen, aber nicht :
" bedeuten . Der gesamte reguläre Ausdruck lautet "Ein anfängliches XML-Namenszeichen, aber kein Doppelpunkt, gefolgt von null oder mehr XML-Namenszeichen, aber kein Doppelpunkt."
Die praktischen Einschränkungen von NCName sind , dass es nicht mehrere Symbolzeichen wie enthalten kann :
, @
, $
, %
, &
, /
, +
, ,
, ;
, Leerzeichen oder andere Klammer. Außerdem kann ein NCName nicht mit einer Zahl, einem Punkt oder einem Minuszeichen beginnen, obwohl sie später in einem NCName erscheinen können.
In Namespace-konformen XML-Dokumenten müssen alle Namen entweder qualifizierte Namen oder NCNames sein. Die folgenden Werte müssen NCNames sein (keine qualifizierten Namen):
Praktisch gesprochen...
Erlaubte Zeichen: -
, .
, 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
Auch -
und .
kann nicht als erstes Zeichen des Werts verwendet werden.
Nicht zulässige Zeichen: ,
!
, "
, #
, $
, %
, &
, '
, (
, )
, *
, +
, ,
, /
, :
, ;
, <
, =
, >
, ?
, @
, [
, \
, ]
, ^
, `
, {
, |
, }
,~
http://books.xmlschemata.org/relaxng/ch19-77215.html
Keine Leerzeichen oder Doppelpunkte. Ermöglicht "_" und "-".
Sie würden dies anstelle einer Zeichenfolge verwenden, damit Sie überprüfen können, ob der Wert auf das zulässige Maß beschränkt ist. Es passt gut zu bestimmten Konventionen für Namen / Bezeichner, wie zum Beispiel Djangos Konzept der "Schnecke".
Ich stimme der Person zu, die [\i-[:]][\c-[:]]*
für uns ins Englische übersetzt.
[\i-[:]][\c-[:]]*
ins Englische übersetzt wird. Gehen Sie voran und stimmen Sie ab, wie Sie versprochen haben;)
xs:NCName