次の XML があります。
<xml version="1.0" encoding="UTF-8">
<query>
<row>
<Name>Ed</Name>
<ID>11</ID>
</row>
<row>
<Name>Chad</Name>
<ID>12</ID>
</row>
<row>
<Name>Jason</Name>
<ID>13</ID>
</row>
</query>
</xml>
XSLT を使用して次のことを行いたいと考えています。
<create a variable that is a copy of the entire XML document>
<append an additional node to the XML in the variable>
<loop through each <row> inside the new variable and output the name and ID>
変数の内部では、この XML で終了したいと考えています。
<xml version="1.0" encoding="UTF-8">
<query>
<row>
<Name>Ed</Name>
<ID>11</ID>
</row>
<row>
<Name>Chad</Name>
<ID>12</ID>
</row>
<row>
<Name>Jason</Name>
<ID>13</ID>
</row>
<row>
<Name>Mark</Name>
<ID>14</ID>
</row>
</query>
</xml>
そして、この出力で終わります:
Ed
11
Chad
12
Jason
13
Mark
14
変数を使用する理由は、Oracle BI Publisher 用の Microsoft Word プラグインを使用しているためです。このプラグインを使用すると、クエリから XML の結果を取得して PDF ファイルを生成する XSLT を使用してテンプレートを作成できます。その基本的には派手な差し込み印刷です。ただし、データをループ処理する前に XML ドキュメントに追加する必要がある、クエリによって返されない行がいくつかあります。
テンプレートの性質上、XML を処理する前に外部 XSL ファイルを使用して XML を変更することはできないと思います。したがって、私が考えることができる唯一のことは、すべての XML で変数を作成し、クエリによって返されない追加のノードを変数の XML に追加し、その変数をループして値を出力することです。私は SO を検索していて、このような投稿を見つけましたが、結果を変更された XML ファイルにしたくありません。変数のようにテンプレート内ですぐに使用できるものにしたいのです。