XMLを適切な形にすることから始めましょう。
タグ(あなたのケースではa
)に属性が含まれている場合、この属性は値(「=」の後に)を持つ必要があります。 各a
タグはalse「>」(最後の前に「/」文字が含まれている閉じなければならない
だから、(おそらく)トップレベルのタグを含むソースXMLは、次のようになります。
<main>
<a attr="Name"/><v index="1">Lawrence</v>
<a attr="Surname"/><v index="1">Karlton</v>
<a attr="Name"/><v index="2">Ana</v>
<a attr="Surname"/><v index="2">Karlton</v>
<a attr="Average"/><v>75</v>
</main>
は、各ソース「レコードは」<a attr="Name"/>
で始まり、次の<a attr="Name"/>
までか、いずれか早い方の親タグ、 の最後まで続けること、のは、別の仮定を作ってみましょう
することができますこのような場合には:。
main
タグと一致するテンプレートを作成します。
- で
xsl:for-each-group
ループを使用します。
select="*"
- 、
group-starting-with="a[@attr='Name']"
をすべての子タグを取る - 各グループが<a attr="Name"/>
から始まります。各グループの内容に基づいて、そして
、次のことができ例えば:
- スタート現在の行(
tr
タグを開く書き込み) - 私はあなたが HTML table
を生成する、と仮定する。各出力列について
- :
- は、特定の値または
attr
属性(出力列名に 等しい)とソースa
タグを取得します。
- この列の値は、次の兄弟
v
タグから取得します。
- 現在の行を閉じます(
tr
タグを書き込む)。
「」というマークアップが構文上正しいものではないことに恐れています。処理に関しては、データがどのように関連しているか、どのデータを関連させたいのかを示して説明していません。 'index'属性が要素が一緒に属していることを前提とすれば、XSLT 2.0/3.0の' for-each-group'やXSLT 1.0のMuenchianグループを使って要素をグループ化することはもちろん可能です。したがって、サンプルを修正して整形式XMLを表示した後、どの出力をしたいのかを説明し、XSLTが役立つと確信しています。 –