特定の「ID」の値が多数ある XML ファイルの XSLT に取り組んでいます。これらの値をデータベースに出力するコンバーターを介してこれを実行する必要がありますが、値を識別するために必要なのは ID だけです。値を識別するために必要なのは、別のファイルにある説明です。この説明は、私が現在使用しているものである ID ではなく、出力 XML の要素名になるはずです。同じカウンター ID が別のファイルにあり、要素名として使用する必要がある説明が含まれています。ここに例を示します。念のため、混乱させてしまいます。
<!-- XML with values -->
<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
<series>
<sampleInfo>
<timestamp>1/1/2013 12:00 AM</timestamp>
<timestamp>1/2/2013 12:00 AM</timestamp>
<timestamp>1/3/2013 12:00 AM</timestamp>
<timestamp>1/4/2013 12:00 AM</timestamp>
</sampleInfo>
<value>
<series>
<value>
<int>0</int>
<int>9</int>
<int>0</int>
<int>9</int>
</value>
<id>
<counterID>100</counterID>
.
.
</id>
</series>
<series>
<value>
<int>3</int>
<int>6</int>
<int>3</int>
<int>6</int>
</value>
<id>
<counterID>120</counterID>
.
.
.
</id>
</series>
</value>
</series>
</root>
基本的に、各タイムスタンプには、対応するカウンター ID ごとに独自の値があります。ここで、私が情報を取得している別の XML ファイルのサンプルを示します。
<!-- XML with descriptions -->
<?xml version="1.0" encoding="ISO-8859-1"?>
<root>
<counterInfo>
<id>100</id>
<description>Blah</description>
</counterInfo>
<counterInfo>
<id>120</id>
<description>Derp</description>
</counterInfo>
</root>
したがって、元のドキュメント (値を持つドキュメント) を変換すると、出力 (フラット) XML は次のようになります。
<root>
<element>
<timestamp>1/1/2013 12:00 AM</timestamp>
<C100>0</C100> <!-- Since XML doesn't allow numeric element fields, I add a C -->
<C120>3</C120>
</element>
<element>
<timestamp>1/2/2013 12:00 AM</timestamp>
<C100>9</C100>
<C120>6</C120>
</element>
<element>
<timestamp>1/3/2013 12:00 AM</timestamp>
<C100>0</C100>
<C120>3</C120>
</element>
<element>
<timestamp>1/4/2013 12:00 AM</timestamp>
<C100>9</C100>
<C120>6</C120>
</element>
</root>
次に、上記のように既にフラットな XML を変換して、代わりにこれを表示する必要があります。
<root>
<element>
<timestamp>1/1/2013 12:00 AM</timestamp>
<Blah>0</Blah>
<Derp>3</Derp>
</element>
<element>
<timestamp>1/2/2013 12:00 AM</timestamp>
<Blah>9</Blah>
<Derp>6</Derp>
</element>
<element>
<timestamp>1/3/2013 12:00 AM</timestamp>
<Blah>0</Blah>
<Derp>3</Derp>
</element>
<element>
<timestamp>1/4/2013 12:00 AM</timestamp>
<Blah>9</Blah>
<Derp>6</Derp>
</element>
</root>
私は少し検索を行い、ほとんどの結果はパラメータを示唆していますが、これらを変換する方法はこれを少し難しくするかもしれません. コンバーターの大規模なリポジトリーの一部である Java のコンバーターがあり、そのリポジトリーから XSLT をプルして、渡されたファイルを変換します。コンバーターでは、アーカイブから変換が必要なファイルを抽出し、それぞれを個別に実行します。だから私の問題は...コンバーターがリスト内のそのファイルに到達したときにXSLTにそのファイル名を与えるにはどうすればよいですか?また、そのファイル名をXSLTに渡すにはどうすればよいですか?
それで、私は物事を過度に複雑にしていますか?これを達成する簡単な方法はありますか?何かを片付ける必要がある場合はお知らせください。