문제

Apache Xerces 3.0.1 XinClude를 사용하고 있습니다. xinclude 메커니즘을 사용하여 XML 파일을 포함하고 싶습니다. 동일한 디렉토리에 3 개의 XML 파일이 있습니다. test_a.xml xincludes test_b.xml xincludes test_c.xml. test_a.xml xinclude test_b.xml 만 있으면 작동합니다. 그러나 test_b.xml xinclude test_c.xml이 있으면 다음 명령 행 오류가 발생합니다.

C : digital_receiver test> xinclude.exe test_a.xml test_z.xml parse test_a.xml 파일의 치명적인 오류 c : digital_receiver test_a.xml, 36 행 34 메시지 : 구성표 찾기 없음 Uri에서 끝났습니다.

test_a.xml :

<?xml version="1.0" encoding="ISO-8859-1"?>
<test_a xmlns:xi="http://www.w3.org/2001/XInclude">
  <xi:include href="test_b.xml"/>
</test_a>

test_b.xml :

<?xml version="1.0" encoding="ISO-8859-1"?>
<test_b xmlns:xi="http://www.w3.org/2001/XInclude">
  <ch>5</ch>
  <xi:include href="test_c.xml"/>
</test_b>

test_c : xml :

<?xml version="1.0" encoding="ISO-8859-1"?>
<test_c>
  <channel>1</channel>
</test_c>

모든 도움이 감사하겠습니다.

도움이 되었습니까?

해결책

내가 알 수있는 한, 당신의 XML은 괜찮지 만, 나는 이것에 대한 마지막 단어라고 주장하지 않을 것입니다.

그건 내 추측 Xerces의 XinClude 처리에서 버그를 쳤다는 것입니다. 이 코드는 거의 3 살이지만 분명히 Xerces 3.0까지 출시되었습니다, 따라서 비교적 테스트되지 않았을 수 있습니다. (그리고 그 길을 감안할 때 포함 된 문서의 기본 uris xinclude에서 처리되면 여기서 버그의 가능성은 0보다 큰 것 같습니다.)

해결 방법으로 오류 메시지가 제안한 내용을 수행하는 것이 좋습니다. 포함 된 파일의 URI에 체계를 추가하십시오. 불행히도 파일 URI의 경우 절대 URI를 사용해야합니다.

test_a.xml :

<?xml version="1.0" encoding="ISO-8859-1"?>
<test_a xmlns:xi="http://www.w3.org/2001/XInclude">
  <xi:include href="file://path/to/directory/test_b.xml"/>
</test_a>

test_b.xml :

<?xml version="1.0" encoding="ISO-8859-1"?>
<test_b xmlns:xi="http://www.w3.org/2001/XInclude">
  <ch>5</ch>
  <xi:include href="file://path/to/directory/test_c.xml"/>
</test_b>

업데이트 : 실제로 있습니다 비슷한 버그 Apache.org에서. (나는 그것이 같은 문제를 묘사하고 있다고 생각하지만 보고서의 문구는 그것을 하나의 상대 경로를 사용할 때 포함 층이 실패합니다.)

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