共用方式為


<xsl:for-each> 元素

重複套用範本,亦即針對節點集內的每個節點重複套用。

<xsl:for-each
  select = Expression
</xsl:for-each>

屬性

  • select
    必要項。 在目前內容上評估的 Expressions (XSLT),用以決定要重複作業的節點集。

項目資訊

發生次數

無限制

父項目

xsl:attributexsl:commentxsl:copyxsl:elementxsl:fallback、xsl:for-each、xsl:ifxsl:messagexsl:otherwisexsl:paramxsl:processing-instructionxsl:templatexsl:variablexsl:whenxsl:with-param、輸出項目

項目子系

xsl:apply-importsxsl:apply-templatesxsl:attributexsl:call-templatexsl:choosexsl:commentxsl:copyxsl:copy-ofxsl:elementxsl:fallback、xsl:for-each、xsl:ifxsl:messagexsl:numberxsl:processing-instructionxsl:sortxsl:textxsl:value-ofxsl:variable

備註

<xsl:for-each> 項目可建立要重複作業的內容。 此迴圈中的 XSLT 轉換指令將會套用到選取的節點上。 <xsl:for-each> 所選取的每個來源項目都會成為新的內容,做為 <xsl:for-each> 中產生模式比對的依據。

範例

此範例中的 XSLT 檔案會定義輸出文件的結構。 輸出是最上層 HTML 項目,其中包含 <BODY> 與 <TABLE> 項目。 資料表中的每個客戶都有重複的資料列。 XSLT 檔案也可以使用範本,為姓名、地址與電話等來源項目建立 <TD> 項目。

XML 檔 (customers.xml)

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="foreach.xsl" ?>
<customers>
   <customer>
      <name>John Smith</name>
      <address>123 Oak St.</address>
      <state>WA</state>
      <phone>(206) 123-4567</phone>
   </customer>
   <customer>
      <name>Zack Zwyker</name>
      <address>368 Elm St.</address>
      <state>WA</state>
      <phone>(206) 423-4537</phone>
   </customer>
   <customer>
      <name>Albert Aikens</name>
      <address>368 Elm St.</address>
      <state>WA</state>
      <phone>(206) 423-4537</phone>
   </customer>
   <customer>
      <name>Albert Gandy</name>
      <address>6984 4th St.</address>
      <state>WA</state>
      <phone>(206) 433-4547</phone>
   </customer>
   <customer>
      <name>Peter Furst</name>
      <address>456 Pine Av.</address>
      <state>CA</state>
      <phone>(209) 765-4321</phone>
   </customer>
   <customer>
      <name>Dan Russell</name>
      <address>9876 Main St.</address>
      <state>PA</state>
      <phone>(323) 321-7654</phone>
   </customer>
</customers>

XSLT 檔 (foreach.xsl)

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >

  <xsl:template match="/">
    <HTML>
      <BODY>
        <TABLE>
          <xsl:for-each select="customers/customer">
            <xsl:sort select="state" order="descending"/>
            <xsl:sort select="name"/>
            <TR>
              <TD><xsl:value-of select="name" /></TD>
              <TD><xsl:value-of select="address" /></TD>
              <TD><xsl:value-of select="phone" /></TD>
            </TR>
          </xsl:for-each>
        </TABLE>

      </BODY>
    </HTML>
  </xsl:template>

</xsl:stylesheet>

輸出

此為格式化輸出:

格式化輸出

此為處理器輸出:

<HTML>
<BODY>
<TABLE>
<TR>
<TD>Albert Aikens</TD>
<TD>368 Elm St.</TD>
<TD>(206) 423-4537</TD>
</TR>
<TR>
<TD>Albert Gandy</TD>
...
</TR>
</TABLE>

</BODY>
</HTML>