2013-07-29 52 views
5

Tôi muốn chọn tất cả các nút con từ phần tử adviceRow (xem dữ liệu xml dưới đây) trong mỗi vòng lặp.Làm thế nào để chọn mỗi nút con của một phụ huynh trong một tuyên bố xslt cho mỗi?

Tôi muốn tránh phải viết một tập tin XSLT như thế này:

<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> 

Bởi vì liên tiếp có thể có nhiều tế bào (và tôi có rất nhiều tương tự nhưng bảng contentwise khác nhau)

Tôi có thể làm việc với vòng lặp lồng nhau cho mỗi vòng lặp? Một cái gì đó như:

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> 

Cảm ơn bạn

Trả lời

8

Có, bạn có thể làm tổ for-each vòng.

Hãy thử điều này

<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> 

Các xpath "" đề cập đến nút hiện tại (a.k.a là "nút bối cảnh"), "/ *" chọn tất cả các nút con của nút ngữ cảnh.