首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >xerces xinclude错误

xerces xinclude错误
EN

Stack Overflow用户
提问于 2010-01-07 08:14:02
回答 1查看 1.2K关注 0票数 0

我使用的是Apache Xerces 3.0.1 XInclude。我想使用xinclude机制来包含XML文件。我在同一个目录中有三个XML文件。test_a.xml x包括test_b.xml,其中x包括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分析test_a.xml ...文件C:\digital_receiver\test/test_a.xml发生致命错误,第3行,char 34消息:在URI中找不到方案已完成。

test_a.xml:

代码语言:javascript
复制
<?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:

代码语言:javascript
复制
<?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:

代码语言:javascript
复制
<?xml version="1.0" encoding="ISO-8859-1"?>
<test_c>
  <channel>1</channel>
</test_c>

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-01-07 09:33:15

据我所知,您的XML是好的,但我不会声称这是最后的结论。

我猜您在Xerces的XInclude处理中遇到了一个bug。我注意到,虽然这段代码已经有近三年的历史了,但它显然不是released until Xerces 3.0,所以它可能相对未经测试。(考虑到在XInclude中处理base URIs of included documents的方式,这里出现错误的可能性似乎大于0。)

作为一种解决方法,我建议按照错误消息的建议进行操作:向包含的文件的URI中添加一个方案。不幸的是,对于文件URI,这也意味着您需要使用绝对URI。

test_a.xml:

代码语言:javascript
复制
<?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:

代码语言:javascript
复制
<?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上确实有a similar bug。(我认为它描述了同样的问题,但报告中的措辞听起来像是在使用相对路径时,即使是包含单个层也会失败。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2017318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档