このファイルがある場合: 入力 file1.xml:
<schema>
<sequence>
<nodeA id="a">
<fruit id="small">
<orange id="x" method="create">
<attributes>
<color>Orange</color>
<year>2000</year>
</attributes>
</orange>
</fruit>
<fruit id="small">
<apple id="x" method="create">
<attributes>
<color>Orange</color>
<year>2000</year>
</attributes>
</apple>
</fruit>
<fruit id="medium">
<orange id="x" method="create">
<attributes>
<color>Orange</color>
<year>2000</year>
</attributes>
</orange>
</fruit>
</nodeA>
<nodeB id="b">
<dog id="large">
<doberman id="x" method="create">
<condition>
<color>Black</color>
</condition>
</doberman>
</dog>
</nodeB>
</sequence>
</schema>
file2.xml:
<schema>
<sequence>
<nodeA id="a">
<fruit id="small">
<melon id="x" method="create">
<attributes>
<color>Orange</color>
<year>2000</year>
</attributes>
</melon>
</fruit>
</nodeA>
<nodeB id="b">
<dog id="small">
<poodle id="x" method="create">
<condition>
<color>White</color>
</condition>
</poodle>
</dog>
</nodeB>
</sequence>
</schema>
連結後: 出力: concate.xml
<schema>
<sequence>
<nodeA id="a">
<fruit id="small">
<orange id="x" method="create">
<attributes>
<color>Orange</color>
<year>2000</year>
</attributes>
</orange>
</fruit>
<fruit id="small">
<apple id="x" method="create">
<attributes>
<color>Orange</color>
<year>2000</year>
</attributes>
</apple>
</fruit>
<fruit id="medium">
<orange id="x" method="create">
<attributes>
<color>Orange</color>
<year>2000</year>
</attributes>
</orange>
</fruit>
<fruit id="small">
<melon id="x" method="create">
<attributes>
<color>Orange</color>
<year>2000</year>
</attributes>
</melon>
</fruit>
</nodeA>
<nodeB id="b">
<dog id="large">
<doberman id="x" method="create">
<condition>
<color>Black</color>
</condition>
</doberman>
</dog>
<dog id="small">
<poodle id="x" method="create">
<condition>
<color>White</color>
</condition>
</poodle>
</dog>
</nodeB>
</sequence>
</schema>
連結の場合、ファイルの順序に依存するため、file2.xml のノードは file1.xml のノードの下に配置されます (例を参照)。そして、私は最大5つのファイルを持っています。xsl変換のみを使用してこれを達成するにはどうすればよいですか。つまり、xsltは同時に5つのファイルを入力し、1つのファイルを出力しますか?
これは文書構造であり、マージするポイントです:
<schema>
<sequence>
<nodeA id="a">
<fruit id="small">
<orange id="x" method="create">
...
</orange>
</fruit>
<fruit id="small">
...
</fruit>
<fruit id="large">
...
</fruit>
<!-- we merge below this -->
</nodeA>
<nodeB id="b">
<dog id="large">
<doberman id="x" method="create">
...
</doberman>
</dog>
<dog id="small">
<doberman id="x" method="create">
...
</doberman>
</dog>
<!-- we merge below this -->
</nodeB>
<somenode id="any">
...
</somenode>
</sequence>
</schema>
注: 2 つのファイル入力のみを連結することができない場合は、他のファイルに対していつでも繰り返すことができるため、問題ありません。また、ファイルにはさまざまなノード名 (nodeA、nodeB、SomeNode など) があるため、この問題を一般化できるものが必要です。
xsl1.0 または 2.0 を使用できます。
どうもありがとう。ジョン