Co to jest typ xs: NCName i kiedy należy go używać?

Przepuściłem jeden z moich plików xml przez generator schematów i wszystko wygenerowane było tym, czego oczekiwano, z wyjątkiem jednego węzła:

<xs:element name="office" type="xs:NCName"/>

Czym dokładnie jest xs:NCName? A dlaczego ktoś miałby go używać, raczej xs:string?

Author: jasso, 2009-10-27

4 answers

NCName jest nazwą niekolonizowaną, np. "name". W porównaniu do QName, które jest kwalifikowaną nazwą, np. "ns: name". Jeśli Twoje nazwy nie powinny być kwalifikowane przez różne przestrzenie nazw, to są to nazwy NCNames.

Xs: string nie nakłada żadnych ograniczeń na twoje nazwy, ale XS: NCName zasadniczo uniemożliwia ": "pojawianie się w łańcuchu.

 78
Author: Andrey Adamovich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-10-27 15:11:16

@skyl praktycznie sprowokował mnie do napisania tej odpowiedzi więc proszę o uwagę na redundancję.

NCName oznacza "nie-skolonizowaną nazwę". NCName może być zdefiniowane jako wyrażenie regularne XML Schema [\i-[:]][\c-[:]]*

...i co oznacza ten regex?

\i oraz {[3] } są wieloznakowymi Escape ' ami zdefiniowanymi w XML Schema definition.
http://www.w3.org/TR/xmlschema-2/#dt-ccesN
\i jest ucieczką dla zbioru początkowych znaków nazwy XML i \c jest zbiorem Znaki nazw XML. [\i-[:]] oznacza zbiór składający się ze zbioru \i z wyłączeniem zbioru składającego się ze znaku dwukropka :. Więc w prostym języku angielskim oznaczałoby to " dowolny początkowy znak, ale nie :". Całe wyrażenie regularne odczytuje jako " jeden początkowy znak nazwy XML, ale nie dwukropek, po którym następuje zero lub więcej znaków nazwy XML, ale nie dwukropek."

Praktyczne ograniczenia nazwy NCName

Praktyczne ograniczenia NCName są takie, że nie może zawierać kilku symboli postacie jak :, @, $, %, &, /, +, ,, ;, białe znaki lub inny nawias. Ponadto Nazwa NCName nie może zaczynać się cyfrą, kropką lub minusem, chociaż może pojawić się później w nazwie NCName.

Gdzie są potrzebne NCNames

W dokumentach XML zgodnych z przestrzenią nazw wszystkie nazwy muszą być nazwami kwalifikowanymi lub nazwami NCNames. następujące wartości muszą być NCNames (nazwy niekwalifikowane):

  • przestrzeń nazw przedrostki
  • wartości reprezentujące ID
  • wartości reprezentujące IDREF
  • wartości reprezentujące zapis
  • cele instrukcji przetwarzania
  • nazwy jednostek
 99
Author: jasso,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-28 01:00:05

Praktycznie rzecz biorą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

Również, - i . nie mogą być użyte jako pierwszy znak wartości.

Znaki niedozwolone: , !, ", #, $, %, &, ', (, ), *, +, ,, /, :, ;, <, =, >, ?, @, [, \, ], ^, `, {, |, }, ~

 23
Author: izilotti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-05 20:17:12

Http://books.xmlschemata.org/relaxng/ch19-77215.html

Brak spacji i dwukropków. Pozwala " _ "i" -".

Możesz użyć tego zamiast ciągu znaków, aby potwierdzić, że wartość jest ograniczona do dozwolonego. Dobrze odwzorowuje pewne konwencje dla nazwy/identyfikatora, jak na przykład koncepcja django "slug".

Głosuję na osobę, która [\i-[:]][\c-[:]]* tłumaczy dla nas na angielski.
 4
Author: Skylar Saveland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-05-26 16:54:56