Відповіді:
NCName - неколонізована назва, наприклад, "ім'я". Порівняно з QName, яке має кваліфіковане ім'я, наприклад, "ns: name". Якщо ваші імена не мають бути кваліфіковані за різними просторами імен, то це NCNames.
xs: string взагалі не обмежує ваші імена, але xs: NCName в основному забороняє ":" відображатись у рядку.
@skyl практично змусив мене написати цю відповідь, тому, будь ласка, зауважте надмірність.
NCNameозначає "неколонізована назва". NCName може бути визначений як регулярний вираз XML-схеми[\i-[:]][\c-[:]]*
\iі \cє багатосимвольними втечами, визначеними у визначенні XML Schema.
http://www.w3.org/TR/xmlschema-2/#dt-ccesN
\i - це вихід для набору початкових символів імені XML і \cє набором символів імені XML. [\i-[:]]означає набір, що складається з множини, \iвиключаючи набір, що складається з символу двокрапки :. Так в звичайній англійській мові це означало б "будь-який початковий символ, але ні :". Весь регулярний вираз звучить як "Один початковий символ імені XML, але не двокрапка, за якою слідують нульові або більше символів імені XML, але не двокрапка".
Практичні обмеження NCName в тому , що він не може містити кілька символів символів , як :, @, $, %, &, /, +, ,, ;, пробільні символи або різні дужка. Крім того, NCName не може починатися з числа, крапки або мінуса, хоча вони можуть з’являтися пізніше в NCName.
У XML-документах, що відповідають простору імен, усі імена повинні бути або кваліфікованими іменами, або NCNames. Наступні значення повинні бути іменами NCN (не кваліфікованими іменами):
Практично кажучи ...
Символи: - , ., 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
Крім того , -і .не може бути використаний в якості першого символу значення.
Заборонені символи: , !, ", #, $, %, &, ', (, ), *, +, ,, /, :, ;, <, =, >, ?, @, [, \, ], ^, `, {, |, },~
http://books.xmlschemata.org/relaxng/ch19-77215.html
Ні пробілів, ні колонок. Дозволяє "_" та "-".
Ви б використовували це замість рядка, щоб можна було перевірити, що значення обмежене дозволеним. Це добре відображає певні умови для імені / ідентифікатора, як, наприклад, концепція django "slug".
Я схвалюю людину, яка [\i-[:]][\c-[:]]*перекладає на нас англійською.
[\i-[:]][\c-[:]]*англійською. Ідіть вперед і підкажіть, як ви і обіцяли;)
xs:NCName