XForms/Repeat
外观
< XForms
以下是一个简单的示例,展示如何将重复数据元素列表输出到屏幕上。这是使用 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 格式化规则来实现这一点。