문제

나는 누군가가 내 XML 검증 코드를 한 번만 줄 수 있는지 궁금해했다. 다음은 나에게 문제를주는 코드의 일부입니다 ...

SAXParserFactory factory = SAXParserFactory.newInstance();

SchemaFactory schemaFactory = SchemaFactory
    .newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

// *** CODE FAILS ON THE BELOW LINE **/
factory.setSchema(schemaFactory
    .newSchema(new Source[] { new StreamSource(schemaStream) }));

SAXParser parser = factory.newSAXParser();

SAXReader reader = new SAXReader(parser.getXMLReader());
reader.setValidation(false);
reader.setErrorHandler(new ResultProducingErrorHandler());
reader.read(content);

위의 코드를 실행할 때마다 다음은 다음과 같은 줄을 따라 오류가 발생합니다.

src-resolve: Cannot resolve the name 'ns:myStructure' to a(n) 'type definition' component.

오류 메시지에 언급 된 요소는 모두 호출을 통해 스키마로 가져온 요소입니다.u003Cxs:import /> . 스키마는 W3C XML 스키마 유효성 검사기.

이러한 각 스키마의 개별적으로 포함해야합니까? 나는 뉴스 스키마 호출에 전달 된 배열에 추가하려고 시도했지만 아무런 차이가 없었습니다.

나는 스키마에 대한 링크를 줄 수 없다고 생각합니다. 그래서 나는 내 코드가 적어도 허용되는지에 대해 예 또는 아니오를 찾고 있습니다.

도움이 되었습니까?

해결책

XS : 가져 오기 명령문이 응용 프로그램의 현재 디렉토리에서 도달 할 수있는 경로를 가리 킵니다. 현재 디렉토리는 당신이 생각하는 것이 아닐 수도 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top