2016-10-17 6 views
1

궁극적 인 목표는 잘못된 xs:token 콘텐츠가 관련 요소에 대해 스키마 유효성 검사를 통과하지 못하게하여 유효성이 검사 된 XML 콘텐츠 풀에서 공백을 방지하는 것입니다. 스키마 유효하지 않은 인스턴스는 풀에 허용되지 않습니다.공백을 포함하는 xsd : token-type 요소가있는 인스턴스가 유효성 검사를 통과합니까?

XML 스키마 (1.1)에서 요소의 유형을 xsd:token으로 선언하고 xsd:token 유형의 요소에 거부 된 문자가 0 개 이상인이 스키마의 인스턴스를 확인하려고하면 (탭, LF, CR) 또는 이중, 선행 또는 후행 공백은 인스턴스가 유효성을 검사하는지 여부를 결정합니다.

다음과 같이 가정합니다. 콘텐츠에 다른 제한 사항 (말하자면)이 있으며, 단지 xsd:token이어야합니다.

그냥 완전히 확장 될 확장 기능 : "설정 xs : whiteSpace = collapse는 앞뒤 공백이 제거되고 공백이 하나의 x20 문자로 축소됨을 의미합니다."-이 항목은 "사전 유효성 검사/내부 "(말하자면) XML 유효성 검사기 단계; 그게 맞습니까?

답변

2

귀하의 질문은 공백 "제한"에 대한 이야기로 잘못된 가정을 드러냅니다. xs : whiteSpace 패싯은 제한을 정의하지 않으며 정규화를 정의합니다. 즉. 유효성 검사가 적용되기 전에 공백에 어떤 일이 발생하는지. 대부분의 경우 공백이 붕괴됩니다. 즉, 앞뒤 공백이 제거되고 내부 공백이 단일 공백 ​​문자로 축소됩니다. 패턴 패싯이 있으면이 공백 정규화가 수행 된 후 값에 적용됩니다.

xs : 토큰의 경우 형식 이름의 오해가 생길 수 있습니다. xs : token의 인스턴스는 공백을 포함 할 수 있습니다. 설정 xs : whiteSpace = collapse는 앞뒤 공백이 제거되고 내부 공백이 하나의 x20 문자로 축소됨을 의미합니다. 결과는 항상 xs : token의 유효한 인스턴스가됩니다.

(물론 유효성 검사 후 정규화 된 값은 스키마 인식 XSLT 또는 XQuery를 사용하여 사후 검증 정보 집합을 처리하는 경우에만 중요합니다. 유효성 검사를하고있는 경우 오류가 발생하는 경우에만 유효합니다. xs : token과 xs : string은 완전히 동일합니다.)

+0

고마워요! 이것은 - "유효하지 않은 경우 유효성 검사를 수행하는 경우 xs : token 및 xs : string은 완전히 동등합니다"- 내가 찾고있는 대답입니다! :-) "xs : whiteSpace = collapse 설정은 앞뒤 공백을 없애고 내부 공백을 하나의 x20 문자로 축소합니다."라는 질문을 수정했습니다. – Michael

+1

"xs : token 및 xs : string은 완전히 동등합니다"라는 문장을 정규화해야합니다. 패턴 패싯을 사용하여 제한에 의해 파생 된 유형을 생성하려는 경우에는 그렇지 않습니다. 패턴 패싯은 공백 정규화 후 값에 적용되므로 동일한 패턴이 두 경우에 서로 다른 효과를 줄 수 있습니다. –

+0

Mr. Kay - 다른 유스 케이스에 도움이되는 답변입니다. – Michael