XSLT を使用して XML ファイルを変換する必要がありますが、この作業はややこしいものです。
名前の属性がありますがattr_1000_a
、番号とサフィックスは動的であるため、それattr_2000_b
も有効です。
また、<row>
関連するデータを組み合わせる要素もあります。同じ番号の属性 (つまりattr_1000_a
とattr_1000_b
) が同じ要素に配置されるように、それらを変換する必要があります。
例を挙げましょう。次の入力 XML:
<root>
<row id="1">
<foo attr_1000_a="true">1</foo>
<foo attr_1000_b="true">2</foo>
<foo attr_1000_c="true">3</foo>
</row>
<row id="2">
<foo attr_1000_a="true" attr_1000_b="true" attr_1000_c="true">10</foo>
<foo attr_2000_a="true" attr_2000_b="true" attr_2000_c="true">20</foo>
</row>
<row id="3">
<foo attr_1000_a="true" attr_2000_a="true" attr_3000_a="true">100</foo>
<foo attr_1000_b="true" attr_2000_b="true" attr_3000_b="true">200</foo>
<foo attr_1000_c="true" attr_2000_c="true" attr_3000_c="true">300</foo>
</row>
</root>
属性をいくつかの方法で組み合わせることができるため、変換が難しくなっていることがわかります。各属性はそれぞれに固有ですが<row>
、任意の要素に配置できます <foo>
。また、それぞれ<foo>
が任意の数の属性を持つことができます。
望ましい結果:
<result>
<row id="1">
<field attr="1000">
<a>1</a>
<b>2</b>
<c>3</c>
</field>
</row>
<row id="2">
<field attr="1000">
<a>10</a>
<b>10</b>
<c>10</c>
</field>
<field attr="2000">
<a>20</a>
<b>20</b>
<c>20</c>
</field>
</row>
<row id="3">
<field attr="1000">
<a>100</a>
<b>200</b>
<c>300</c>
</field>
<field attr="2000">
<a>100</a>
<b>200</b>
<c>300</c>
</field>
<field attr="3000">
<a>100</a>
<b>200</b>
<c>300</c>
</field>
</row>
</result>
行内のすべての数字 (たとえば、1000、2000、3000) のリストを何らかの方法で取得し、そのような属性を持つすべての要素を反復処理する必要があると思います。
XSLTを使用してこれを行うにはどうすればよいですか? これは可能ですか?