xs : ncname 유형이란 무엇이며 언제 사용해야합니까?
-
06-07-2019 - |
문제
스키마 생성기를 통해 XML 파일 중 하나를 실행했으며 하나의 노드를 제외하고 생성 된 모든 것이 예상되었습니다.
<xs:element name="office" type="xs:NCName"/>
정확히 무엇입니까 xs:NCName
? 왜 오히려 그것을 사용할 것입니다 xs:string
?
해결책
ncname 콜로네스 이름이 아닌 이름 예를 들어 "이름"입니다. 자격을 갖춘 이름 인 Qname과 비교하여 "ns : name". 이름이 다른 네임 스페이스에 의해 자격을 갖추지 않아야한다면 NCNAME입니다.
XS : String은 이름에 전혀 제한을 제한하지 않지만 XS : NCName은 기본적으로 불만을 제기합니다. ":"String에 나타납니다.
다른 팁
@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에 나타날 수 있지만 숫자, dot 또는 마이너스 문자로 시작할 수 없습니다.
NCNAME가 필요한 곳은 어디입니까?
네임 스페이스 준수 XML 문서에서 모든 이름은 자격을 갖춘 이름 또는 NCNAME이어야합니다. 다음 값은 NCNAME (자격이없는 이름이 아님)이어야합니다.
- 네임 스페이스 접두사
- 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의 "슬러그"개념과 같은 이름/식별자에 대한 특정 규칙에 잘 매핑됩니다.
나는 그 사람을 끌어 올렸다 [\i-[:]][\c-[:]]*
우리를 위해 영어로 번역합니다.