2

ここで友人を助けようとしています... xml ノードをファイルに出力する外部ツールによって生成された出力があります。彼は、この xml を整形式にして、xsl スタイルシートを適用する必要があります。

したがって、b.xml (ツールによって生成される) と、b.xml の内容をこのような XML 外部エンティティとしてインポートする Encomp.xml があります (これを試してみたい場合は、同じフォルダーに 3 つの xml ファイルを作成してください)。

Encomp.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"/>

a.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 に答える