2012-03-27 2 views
0

XSD 스키마에 대해 XML 메시지의 유효성을 검사해야하는 Java 프로그램이 있습니다. 여태까지는 그런대로 잘됐다. 그러나 지금은 유효성 검사의 일부가 XML 메시지의 내용에 따라 다른 새로운 요구 사항이 있습니다.XML 내용을 기반으로 XSD 유효성 확인

그래서 하나의 필드 (1)의 값에 따라 일부 필드는 nillable 또는 not이고 일부 열거 형은 다릅니다. 그러나 유효성 검사 전에 문서를 구문 분석 할 수 없습니다 ... 어떻게 대응해야합니까?

1) 두 개의 다른 XSD 파일을 가지고 XML을 텍스트 (= 못생긴)로 처리하고 하나의 필드를 추출하여 XSD를 사용해야하는지 결정하십시오.

2) 3 개의 다른 XSD 파일이 있습니다. 두 가지 옵션과 하나의 합집합을 사용하여 두 가지 옵션과 일치하는 방식으로 유효성을 검사 할 수 있습니까? XML을 올바르게 구문 분석하고, 필드를 추출하고, 추가 유효성 검사에 사용할 특정 XSD를 결정할 수 있을까요?

3) 다른 옵션은?

+0

'유효성 검사 전에 문서를 구문 분석 할 수 없다'는 것은 무엇을 의미합니까? – maximdim

+0

글쎄, 문서의 유효성을 검사하지 않으면 매우 잘못된 XML이 될 수 있으므로 구문 분석은 예외를 생성합니다. – hcpl

답변

1

JAXB와 구문 분석하지 말고 SAX/StAX 유형 구문 분석기 (또는 실제로 원한다면 SAX가 필요할 것입니다. 단 몇 개의 요소 만 있으면 더 빠를 수도 있지만)를 사용하여 요소를 찾고 분석하십시오. 당신은 사용해야 할 적절한 스키마를 결정하기 위해 필요합니다. 충분한 정보를 수집하고 구문 분석을 중단하고 적절한 스키마 유효성 검사를 다시 구문 분석합니다.

+0

Maxim, 고맙습니다. 먼저 유효성 검사를하지 않고 SAX를 사용하여 구문 분석 할 수 있다는 것을 알지 못했습니다. 이것은 내 문제를 해결합니다. – hcpl

0

당신은 당신의 자바 검증을 쓰고 있습니까? 오픈 소스 또는 유료 인증을 사용하는 것이 좋습니다 (XML Schema (XSD) validation tool?).

또한 특정 요소를 기반으로 두 개의 다른 스키마를 사용해야하므로 스키마가 더 이상 이전 버전과 호환되지 않는 것으로 들립니다. 요구 사항에 다시 응답하고 스키마가 될 수 있는지 확인하는 것이 좋습니다. 이전 버전과의 호환성을 유지하기 위해 변경 및 업데이트되었습니다. 이렇게하면 XML 파일에 대해 1 개의 스키마를 계속 사용할 수 있습니다.

관련 문제