跳转到内容

XForms/Repeat

来自维基教科书,开放的书籍,造福世界

以下是一个简单的示例,展示如何将重复数据元素列表输出到屏幕上。这是使用 repeat 标签和 nodeset 属性来实现的。使用 nodeset 指定要在模型中开始列出的位置。在本例中,我们只是使用嵌入在页面中的模型。

以下是该程序在 FireFox 浏览器下的输出

请注意,所有名称都会显示,而不仅仅是第一个名称。请注意,我们在 body 中混合了 HTML 标签和 XForms 标签。

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms">
   <head>
      <title>Phone List</title>
      <xf:model>
         <xf:instance xmlns="" id="phonebook">
            <PhoneList>
               <Person>
                  <Name>Peggy</Name>
                  <Phone>123</Phone>
               </Person>
               <Person>
                  <Name>Dan</Name>
                  <Phone>456</Phone>
               </Person>
               <Person>
                  <Name>John</Name>
                  <Phone>789</Phone>
               </Person>
               <Person>
                  <Name>Sue</Name>
                  <Phone>234</Phone>
               </Person>
            </PhoneList>
         </xf:instance>
      </xf:model>
   </head>
   <body>
      <fieldset>
         <legend>Company Phone List</legend>
         <p><b>Name, Phone</b>
         <xf:repeat nodeset="Person">
            <xf:output ref="Name"/>,
            <xf:output ref="Phone"/>
         </xf:repeat>
         </p>
      </fieldset>
   </body>
</html>

这里关键的语句是 repeat 语句

<xf:repeat nodeset="Person">

repeat 元素有一个名为 nodeset 的属性。它告诉你在你的模型中获取数据的位置。在本例中,我们将迭代所有 Person 记录并输出每个 Person 的 Name 和 Phone。

你也可以使用绝对路径引用

<xf:repeat nodeset="/PhoneList/Person">

作为替代,你也可以使用实例引用

<xf:repeat nodeset="instance('phonebook')/Person">

请注意,每个 repeat 都会为每个 Person 记录开始新的一行。这可以通过一个简单的样式表转换成整洁的表格布局。你可以通过将第二个输出与名为 "column2" 的类关联,然后在样式表中添加 column2 格式化规则来实现这一点。

下一页: 条件样式 | 上一页: 绑定到范围
首页: XForms
华夏公益教科书