我试图让xincludes在现有系统中工作,该系统在xercesc中使用XercesDOMParser来解析来自客户端的传入xml。我正在使用Apache Xercesc v3.0.1,从输入流中读取的传入XML是:
<?xml version="1.0" encoding="UTF-8"?>
<VisionServer xmlns:xi="http://www.w3.org/2001/XInclude">
<CompositeObject>
<xi:include href="testguioutput.xml" />
而testguioutput.xml包含
<?xml version="1.0" encoding="UTF-8"?>
<GUIOutput>
<Input>Input</Input>
<Title>IDC2_1</Title>
</GUIOutput>
现有代码使用XercesDOMParser周围的包装器来解析XML,并且在使用setDoNamespaces和setDoXInclude为true之后,它正在尝试解析XInclude,但是我得到了一个持久的“致命:包含失败而没有在文档“{0}”中找到的回退元素错误,无论我在目录结构中的哪个位置放入testguioutput.xml。
我在visualstudio 2008下工作,我的工作目录是默认的,并且用完了/ project / debug,但无论目标文件是在/ project /还是/ project / debug /中,include都会失败。
答案 0 :(得分:0)
我能够使用Xerces应用程序附带的XInclude.exe示例应用程序扩展xinclude标记。为此,我使用上面的文件创建了两个文件:
test1.xml:
<?xml version="1.0" encoding="UTF-8"?>
<VisionServer xmlns:xi="http://www.w3.org/2001/XInclude">
<CompositeObject>
<xi:include href="test2.xml"/>
</CompositeObject>
</VisionServer>
test2.xml:
<?xml version="1.0" encoding="UTF-8"?>
<GUIOutput>
<Input>Input</Input>
<Title>IDC2_1</Title>
</GUIOutput>
在我执行的命令行中:
“XInclude.exe test1.xml test1_expanded.xml”没有引号。
生成的test1_expanded.xml文件:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<VisionServer xmlns="" xmlns:xi="http://www.w3.org/2001/XInclude">
<CompositeObject>
<GUIOutput xml:base="test2.xml">
<Input>Input</Input>
<Title>IDC2_1</Title>
</GUIOutput>
</CompositeObject>
</VisionServer>