2

別のxmlファイルからxmlファイルの内容を動的に書き込めるようにしたいと思います。

A.XMLには次のものが含まれます。

<?xml version="1.0"?>
<node>
-Include Contents of b.xml
</node>

B.XMLには次のものが含まれます。

<anode>
a
</anode>

xmlでこれを行う方法はありますか?

最終製品は次のようになります。

<?xml version="1.0"?>
<node>
  <anode>
    a
  </anode>
</node>

コメントからの更新

xmlのみ。ブラウザでxmlファイルを表示すると、正しくレンダリングされるようにします

4

2 に答える 2

2

外部 (解析済み) 一般エンティティを使用して から参照b.xmla.xmlます。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE node [
<!ENTITY b SYSTEM "b.xml">
]>
<node>
    &b;
</node>

XML パーサーは、解析した内容を動的にb.xml組み込みa.xml、必要な XML を生成します。

IE で読み込むa.xmlと、正しくレンダリングされます。

注:一部のブラウザには非常に厳格なセキュリティ ポリシーがあり、参照された XML ファイルをファイル システムからロードしてエンティティ参照を展開する際に問題が発生しますa.xml。 URL。

于 2011-04-29T02:33:02.477 に答える
1

この XML ドキュメントをブラウザで開くと、次のようになります。

<?xml-stylesheet type="text/xsl" href="stylesheet.xsl"?>
<node>
 -Include Contents of b.xml
</node>

この XSLT スタイルシート (他のXML ドキュメント) をstylesheet.xsl相対 URI で参照すると、次のようになります。

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="node()|@*">
        <xsl:copy>
            <xsl:apply-templates select="node()|@*"/>
        </xsl:copy>
    </xsl:template>
    <xsl:template match="node">
        <xsl:copy>
            <xsl:apply-templates select="@*"/>
            <xsl:copy-of select="document('B.xml')"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

次のようにレンダリングされます (スタイルなし、またはブラウザーの既定の XML スタイルシートを使用):

<node>
    <anode>a</anode>
</node>

: 処理命令。xsl:copy-of可能性のある無限再帰と混同したくなかったので、命令を使用しました...

于 2011-04-28T20:48:47.837 に答える