2014-04-25 2 views
0

저는 처음으로 작업 프로젝트에서 XML 작업을하고 있습니다. 나는 기초를 가지고있는 것처럼 느낀다. 그러나 1 개의 물건은 아직도 나를 나의 머리에 긁히도록한다. using an schema to designate a namespace 인 경우 XML 파서는 스키마 파일을 찾을 위치를 어떻게 알 수 있으므로 스키마 파일에 입력되는 내용의 유효성을 검사 할 수 있습니까? 한 가지 중요한 점은, 유일하지 않은 이름을 가진 요소는 고유 한 네임 스페이스와 연결되지만 파서는 요소 태그가 실제로 네임 스페이스인지 여부를 알아야한다는 점입니다 회원? 네임 스페이스의 네이밍 규칙은 일반적으로 고유 한 문자열이 아닌 문제의 스키마와 관련이없는 URL 일 때 정확히 어떻게 발생합니까? 즉, XML 파일의 유효성을 검사해야하는 파서는 해당 파일과 관련된 스키마를 어떻게 찾을 수 있습니까?XML 파서는 스키마 파일을 어디에서 찾을 수 있는지 어떻게 알 수 있습니까?

답변

1

가능한 많은 메커니즘이 있으며 사용중인 스키마 프로세서에 따라 다릅니다. 스키마 처리는 XML 구문 분석과 통합되는 경우가 있지만 개념적으로 별도의 작업이므로 독립적으로 수행 할 수 있습니다.

많은 사람들이 사용하는 방식 중 하나가별로 좋지 않지만 xsi : schemaLocation 특성은 XML 인스턴스 문서 자체가 네임 스페이스 URI에서 스키마 위치로의 매핑을 정의합니다. 나는 그것이 맘에 들지 않습니다. 왜냐하면 당신이 문서를 검증하고 있다면 당신은 유효성 검사를 위해 어떤 스키마를 사용할지를 충분히 믿을 수 없기 때문입니다.

대부분의 스키마 프로세서에는 스키마 위치를 제공 할 수있는 일종의 API 또는 명령 줄 인터페이스가있을 수 있습니다. 당신은 색슨를 사용하는 경우 예를 들어, 다음은 schema.xsd이 /가 필요한 다른 스키마 문서를 가져 포함하는 최상위 스키마 문서가

...Validate -s:source.xml -xsd:schema.xsd 

입니다. 여기서 네임 스페이스에 대한 명시 적 바인딩은 없습니다. Saxon은 제공된 스키마 문서를 읽고 어떤 정의가 네임 스페이스에 적용되는지 확인합니다.

+0

neato-burrito! 좋습니다. XML 파일 자체가 스키마 파일을 가리킬 수도 있지만 바람직하지 않습니다. XML 파일의 네임 스페이스 태그를 읽을 때 스키마 파일의 'targetNamespace'태그와 일치시켜 유효성을 검사 할 수 있도록 파서를 파일 위치로 지정하는 것이 좋습니다. 나를 위해 그걸 정리 해줘서 고마워! 튜토리얼 문서는 이런 일이 어떻게 일어 났는지를 설명하는 데 도움이되지 못했습니다 : -p –

관련 문제