8

for each ループで、adviceRow 要素 (以下の xml データを参照) からすべての子ノードを選択したいと考えています。

次のような xslt ファイルを作成する必要はありません。

<xsl:for-each select="Tables/routeAdviceTable/routeAdviceRows/adviceRow">
   <xsl:value-of select="cog" />
   <xsl:value-of select="current" />
   <xsl:value-of select="distance" />
   <xsl:value-of select="dtg" />
   etc..
</xsl:for-each>

行には多くのセルを含めることができるため(そして、似ているが内容が異なるテーブルがたくさんあります)

ネストされた for-each ループを使用できますか? 何かのようなもの:

for-each advice row:
    for-each child of advicerow?

<Tables>
<routeAdviceTable>
    <routeAdviceRows>
        <adviceRow>
            <cog>313</cog>
            <current>0.3</current>
            <distance>58.8</distance>
            <dtg>1374786000000</dtg>
            <latitude>????</latitude>
            <longitude>????</longitude>
            <pressure>22.300001</pressure>
            <sea>0.2</sea>
            <sog>14.7</sog>
            <stw>???</stw>
            <swell>1.7</swell>
            <waves>1.711724324567694</waves>
            <wind>0.8</wind>
        </adviceRow>
    </routeAdviceRows>
</routeAdviceTable>

ありがとうございました

4

1 に答える 1

17

はい、for-each ループをネストできます。

これを試して

<xsl:for-each select="Tables/routeAdviceTable/routeAdviceRows/adviceRow">
  <xsl:for-each select="./*">
    <!-- 
      Your code i.e.
      <td class="{name(.)}">
        <xsl:value-of select="."></xsl:value-of>
      </td>
    -->
  </xsl:for-each>
</xsl:for-each>

xpath「。」現在のノード (別名「コンテキスト ノード」) を参照し、"/*" はコンテキスト ノードのすべての子ノードを選択します。

于 2013-07-29T08:52:40.460 に答える