2017-02-19 9 views
0

は、私は、テーブルにいくつかの値を選択する必要がありますが、値がXMLファイルにグループ化されていない、構造は以下の通りです:データがグループ化されていない場合の値の選択方法は?

<a Name><v index="1">Lawrence</v> 
<a Surname><v index="1">Karlton</v> 
<a Name><v index="2">Ana</v> 
<a Surname><v index="2">Karlton</v>. 
<a Avarage><v>75</v> 

私は、データのようなものがグループ化されたときにループを作成する方法を知っています。ファイルを取得すると、最大インデックスは認識されません。 私はグループの例だけを見つけましたが、おそらく正しいキーワードがありません。

答えて

0

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タグを書き込む)。
+0

Dziękuję!!! :-) – flowerpower

関連する問題