2

试图在这里帮助一个朋友......有一些输出是由一个将xml节点输出到文件中的外部工具生成的。他需要使这个 xml 格式正确并在其上应用 xsl 样式表。

所以我们有 b.xml(由该工具生成)和 Encomp.xml,它们将 b.xml 的内容作为这样的 XML 外部实体导入(如果您想尝试,请在同一文件夹中创建 3 个 xml 文件)

压缩文件

<?xml version="1.0"  encoding="utf-8"?>

<!DOCTYPE document [ <!ENTITY data SYSTEM 'b.xml'>]>
<Root-Element xmlns:log="http://log4net.sourceforge.net/">
    &data;
</Root-Element>

b.xml

<log:MyNode Name="Node1"/>
<log:MyNode Name="Node2"/>
<log:MyNode Name="Node3"/>

一个.xml

<MyNode Name="Node1"/>
<MyNode Name="Node2"/>

现在的问题是这种方法适用于 a.xml 之类的内容(其中节点没有使用名称空间限定),但不适用于 b.xml。

我的猜测是,命名空间可能在 DOCTYPE 行未定义,它仅在下一行声明。我怎样才能让它工作?

4

1 回答 1

2

b.xml 需要包含属性xmlns:log="http://log4net.sourceforge.net/"

编辑:实际上这并不能真正解决任何问题,底线是 DTD 无论如何都不理解 xmlns 声明和别名。因此,您最终会遇到其他错误。

于 2009-04-16T13:50:45.023 回答