Respuestas:
NCName es un nombre no colonizado, por ejemplo, "nombre". Comparado con QName, que es un nombre calificado, por ejemplo, "ns: nombre". Si se supone que sus nombres no deben estar calificados por diferentes espacios de nombres, entonces son NCNames.
xs: string no impone ninguna restricción a sus nombres, pero xs: NCName básicamente no permite que ":" aparezca en la cadena.
@skyl prácticamente me provocó a escribir esta respuesta, así que ten cuidado con la redundancia.
NCNamesignifica "nombre no colonizado". NCName se puede definir como una expresión regular de esquema XML[\i-[:]][\c-[:]]*
\iy \cson escapes de varios caracteres definidos en la definición del esquema XML.
http://www.w3.org/TR/xmlschema-2/#dt-ccesN
\i es el escape para el conjunto de caracteres de nombre XML iniciales y \ces el conjunto de caracteres de nombre XML. [\i-[:]]significa un conjunto que consta del conjunto \iexcluyendo un conjunto que consta del carácter de dos puntos :. Entonces, en inglés simple significaría "cualquier carácter inicial, pero no :". La expresión regular completa se lee como "Un carácter de nombre XML inicial, pero no dos puntos, seguido de cero o más caracteres de nombre XML, pero no dos puntos".
Las restricciones prácticas de NCName son que no puede contener varios caracteres de símbolos como :, @, $, %, &, /, +, ,, ;, espacio en blanco o caracteres diferentes entre paréntesis. Además, un NCName no puede comenzar con un número, un punto o un carácter menos, aunque pueden aparecer más tarde en un NCName.
En documentos XML compatibles con el espacio de nombres, todos los nombres deben ser nombres calificados o NCNames. Los siguientes valores deben ser NCNames (no nombres calificados):
Hablando practicamente...
Los caracteres permitidos: - , ., 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
Además, -y .no se puede utilizar como primer carácter del valor.
Caracteres no permitidos: , !, ", #, $, %, &, ', (, ), *, +, ,, /, :, ;, <, =, >, ?, @, [, \, ], ^, `, {, |, },~
http://books.xmlschemata.org/relaxng/ch19-77215.html
Sin espacios ni dos puntos. Permite "_" y "-".
Usaría esto en lugar de una cadena para poder validar que el valor está limitado a lo permitido. Se asigna bien a ciertas convenciones para el nombre / identificador como el concepto de "slug" de django, por ejemplo.
Voto a la persona que [\i-[:]][\c-[:]]*traduce al inglés para nosotros.
[\i-[:]][\c-[:]]*al inglés. Continúe y vote, como prometió;)
xs:NCName