문제

내가 말할 수있는 한, 기본적으로 JAXP는 Java 6에서 W3C XML 스키마 및 allelyng를 지원합니다..

나는 대부분 실험적이거나 불완전한 몇 가지 API를 볼 수 있습니다. schematron.com 링크 페이지.

Java의 Schematron 검증에 대한 접근 방식이 완전하고 효율적이며 JAXP API와 함께 사용할 수 있습니까?

도움이 되었습니까?

해결책

ISO 이전의 Schematron 검증을 지원합니다 (Jing의 구현은 XSLT를 기반으로합니다).

Java에서 매우 쉽게 호출 할 수있는 XSLT 구현도 있습니다. 관심있는 Schematron 버전을 결정한 다음 해당 스타일 시트를 가져와야합니다. 모두 Schematron.com에서 사용할 수 있어야합니다. 프로세스는 기본적으로 2 단계를 포함하는 매우 간단합니다.

  • Schematron 스키마에 Skeleton XSLT를 적용하려면 XSLT에서 Schematron 스키마를 나타내는 새로운 XSLT 스타일 시트를 얻으십시오.
  • 인스턴스 문서 또는 문서에 얻은 XSLT를 적용하여 유효성을 확인하십시오.

JAXP는 API 일 뿐이며 구현에서 Relax NG를 지원할 필요가 없습니다. 휴식 NG를 지원하는지 여부를 확인하기 위해 사용하는 특정 구현을 확인해야합니다.

다른 팁

순수한 Java Schematron 구현이 있습니다 https://github.com/phax/ph-schematron/XSLT 접근 방식과 순수한 Java 접근 방식을 모두 지원합니다.

체크 아웃 할 수 있습니다 스키드로 ansert (공개 : 내 코드). 주로 단위 테스트를위한 것이지만 일반 코드에도 사용할 수도 있습니다. XSLT를 사용하여 구현됩니다.

단위 테스트 예 :

ValidationOutput result = in(booksDocument)
    .forEvery("book")
    .check("author")
    .validate();
assertThat(result).hasNoErrors();

독립형 검증 예 :

StreamSource schemaSource = new StreamSource(... your schematron schema ...);
StreamSource xmlSource = new StreamSource(... your xml document ... );
StreamResult output = ... here your SVRL will be saved ... 
// validation 
validator.validate(xmlSource, schemaSource, output);

SVRL의 객체 표현으로 작업 :

ValidationOutput output = validator.validate(xmlSource, schemaSource);
// look at the output
output.getFailures() ... 
output.getReports() ...
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top