Что такое тип xs:NCName и когда его следует использовать?



я запустил один из моих xml-файлов через генератор схем, и все сгенерированное было ожидаемым, за исключением одного узла:



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


что именно xs:NCName? И зачем его использовать, скорее xs:string?

1443   4  

4 ответов:

NCName не колонизировали имя например "имя". По сравнению с QName, который является квалифицированным именем, например "ns: name". Если ваши имена не должны быть квалифицированы различными пространствами имен, то они являются NCNames.

xs:string не накладывает никаких ограничений на ваши имена вообще, но xs:NCName в основном запрещает ":" появляться в строке.

@skyl практически спровоцировал меня написать этот ответ, поэтому, пожалуйста, обратите внимание на избыточность.

NCName означает "не колонизировали имя". NCName можно определить как регулярное выражение схемы XML [\i-[:]][\c-[:]]*

...и что означает это регулярное выражение?

\i и \c многосимвольные экранирования, определенные в определении схемы XML.
http://www.w3.org/TR/xmlschema-2/#dt-ccesN
\i является ли побег для набора начальные символы имени XML и \c - это набор символов имени XML. [\i-[:]] означает набор, состоящий из набора \i исключая набор, состоящий из символа двоеточия :. Так что на простом английском это будет означать " любой начальный символ, но не :". Все регулярное выражение читается как " один начальный символ имени XML, но не двоеточие, за которым следует ноль или более символов имени XML, но не двоеточие."

практические ограничения NCName

практические ограничения NCName заключаются в том, что он не может содержать несколько символов, таких как :,@,$,%,&,/,+,,,;, пробелы или другие скобки. Кроме того, NCName не может начинаться с числа, точки или символа минус, хотя они могут появиться позже в NCName.

где нужны NCNames

в пространстве имен соответствуют XML-документы все имена должны быть либо полные имена, либо NCNames. следующие значения должны быть NCNames (не полные имена):

  • префиксы пространства имен
  • значения, представляющие идентификатор
  • значения, представляющие IDREF
  • значения, представляющие нотацию
  • цели инструкции по обработке
  • имена сущностей

практически говоря...

допустимые символы:-,.,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-[:]]* переводится на английский язык для нас.

Comments

    Ничего не найдено.