스키마 생성기를 통해 내 xml 파일 중 하나를 실행했는데 생성 된 모든 것이 하나의 노드를 제외하고 예상했던 것입니다.
<xs:element name="office" type="xs:NCName"/>
정확히 무엇입니까 xs:NCName
? 그리고 왜 그것을 사용 xs:string
하겠습니까?
답변
NCName 은 콜론 화 되지 않은 이름입니다 (예 : “name”). 정규화 된 이름 인 QName (예 : “ns : name”)과 비교됩니다. 이름이 다른 네임 스페이스로 한정되지 않아야하는 경우 NCName입니다.
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
제외한 집합으로 구성된 집합을 의미합니다 :
. 따라서 일반 영어에서는 “모든 초기 문자가 아니라 :
“를 의미합니다. 전체 정규식은 “1 개의 초기 XML 이름 문자 (콜론이 아님), 뒤에 0 개 이상의 XML 이름 문자가 나오지만 콜론은 아님”으로 읽습니다.
NCName의 실제 제한
의 NCName의 실제적인 제한이 같은 여러 가지 기호 문자를 포함 할 수있다 :
, @
, $
, %
, &
, /
, +
, ,
, ;
, 공백 문자 또는 다른 괄호. 또한 NCName은 나중에 NCName에 나타날 수 있지만 숫자, 점 또는 마이너스 문자로 시작할 수 없습니다.
NCNames가 필요한 곳
네임 스페이스 준수 XML 문서에서 모든 이름은 정규화 된 이름이거나 NCName이어야합니다. 다음 값은 NCNames (정규화 된 이름 아님) 여야합니다.
- 네임 스페이스 접두사
- ID를 나타내는 값
- 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-[:]]*
우리를 위해 영어 로 번역 하는 사람을 찬성합니다 .