0
を使用してフラットな構造にツリーデータ構造を持つXMLを変換します。私はこのような出力を必要とするは、私はフラットなリストにツリー構造を持つXMLを変換しようとしていますXSLT
<category_list>
<category>
<id>12</id>
<name>Forks</name>
<sub_categories>
<category>
<id>15</id>
<name>26"</name>
<sub_categories />
</category>
<category>
<id>16</id>
<name>27,5"</name>
<sub_categories />
</category>
<category>
<id>19</id>
<name>27,5+"</name>
<sub_categories />
</category>
<category>
<id>17</id>
<name>29"</name>
<sub_categories />
</category>
</sub_categories>
</category>
<category>
<id>13</id>
<name>Shocks</name>
<sub_categories />
</category>
<category>
<id>14</id>
<name>Springs</name>
<sub_categories />
</category>
</category_list>
:
<categories>
<category>
<id>12</id>
<name>Forks</name>
<parent_category>0</parent_category>
<order_by>1</order_by>
</category>
<category>
<id>15</id>
<name>26"</name>
<parent_category>12</parent_category>
<order_by>1</order_by>
</category>
<category>
<id>16</id>
<name>27,5"</name>
<parent_category>12</parent_category>
<order_by>2</order_by>
</category>
<category>
<id>19</id>
<name>27,5+"</name>
<parent_category>12</parent_category>
<order_by>3</order_by>
</category>
<category>
<id>17</id>
<name>29"</name>
<parent_category>12</parent_category>
<order_by>4</order_by>
</category>
<category>
<id>13</id>
<name>Shocks</name>
<parent_category>0</parent_category>
<order_by>2</order_by>
</category>
<category>
<id>14</id>
<name>Springs</name>
<parent_category>0</parent_category>
<order_by>3</order_by>
</category>
</categories>
私はそれを行う方法を見当がつかないこれは私が変換しようとしている入力XMLのごく一部です。最初の問題は、ツリー構造をフラットリストに変更することです.2番目の問題は、カテゴリカウントで増分するorder_byタグを追加することです。
あなたがアドバイスをしてくださいことはできますか?
それが動作しているが、1つの問題があります。親カテゴリは、常にリスト内の最初のカテゴリのIDです。カテゴリShockがForksの前にある場合、Forkのすべてのサブカテゴリには12ではなくparent_category = 13があります。 – sajushko
したがって、私はそれを理解するように見えます。 ../../categoryの代わりにancestor :: categoryを使用し、value-ofのancestor :: category/idを使用しました。それが今、私が必要とするように動作するように見えます。 Thxはマーティンのためにたくさんあります。 – sajushko
@ sajushko、問題について申し訳ありませんが、間違ったXPathがありましたが、修正されました。 –