Odpowiedzi:
NCName to nazwa nieskolonizowana, np. „Nazwa”. W porównaniu do QName, która jest nazwą kwalifikowaną, np. „Ns: name”. Jeśli twoje nazwiska nie mają być kwalifikowane przez różne przestrzenie nazw, to są to NCNames.
xs: string nie nakłada żadnych ograniczeń na twoje nazwy, ale xs: NCName zasadniczo zabrania ":" pojawienia się w ciągu.
@skyl praktycznie sprowokował mnie do napisania tej odpowiedzi, więc proszę pamiętać o redundancji.
NCName
oznacza „nazwę nieskolonizowaną”. NCName można zdefiniować jako wyrażenie regularne schematu XML[\i-[:]][\c-[:]]*
\i
i \c
są wieloznakowymi znakami ucieczki zdefiniowanymi w definicji schematu XML.
http://www.w3.org/TR/xmlschema-2/#dt-ccesN
\i
jest ucieczką dla zestawu początkowych znaków nazwy XML i \c
jest zbiorem znaków nazwy XML. [\i-[:]]
oznacza zbiór składający się z zestawu z \i
wyłączeniem zestawu składającego się ze znaku dwukropka :
. Więc w prostym języku angielskim oznaczałoby to „dowolny znak początkowy, ale nie :
”. Całe wyrażenie regularne ma postać „Jeden początkowy znak nazwy XML, ale bez dwukropka, po którym następuje zero lub więcej znaków nazwy XML, ale nie dwukropek”.
Praktyczne ograniczenia NCName są takie, że nie może ona zawierać kilka znaków symboli, takich jak :
, @
, $
, %
, &
, /
, +
, ,
, ;
, białych znaków lub inny nawias. Ponadto nazwa NCName nie może zaczynać się od cyfry, kropki ani znaku minus, chociaż mogą pojawić się później w NCName.
W dokumentach XML zgodnych z przestrzenią nazw wszystkie nazwy muszą być nazwami kwalifikowanymi lub nazwami NCNames. Następujące wartości muszą być nazwami NCNames (nie nazwami kwalifikowanymi):
Praktycznie mówiąc ...
Dozwolone znaki: -
, .
, 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
Ponadto -
i .
nie może być używany jako pierwszy znak wartości.
Niedozwolone znaki: ,
!
, "
, #
, $
, %
, &
, '
, (
, )
, *
, +
, ,
, /
, :
, ;
, <
, =
, >
, ?
, @
, [
, \
, ]
, ^
, `
, {
, |
, }
,~
http://books.xmlschemata.org/relaxng/ch19-77215.html
Bez spacji i dwukropków. Zezwala na „_” i „-”.
Użyłbyś tego zamiast łańcucha, abyś mógł sprawdzić, czy wartość jest ograniczona do tego, co jest dozwolone. Dobrze odwzorowuje pewne konwencje nazwy / identyfikatora, jak na przykład koncepcja "slug" w django.
Głosuję za osobę, która [\i-[:]][\c-[:]]*
tłumaczy dla nas na język angielski.
[\i-[:]][\c-[:]]*
na angielski. Śmiało i zagłosuj, tak jak obiecałeś;)
xs:NCName