我有一个xml文件,它可以是动态的(意味着在下面的xml示例中行数可以是0,1,2或许多)。 xsl(或xsl-fo)如何处理这种情况?任何例子或指针都将不胜感激。
<form>
<table>
<row>
<date>2012-02-10</date>
<departure>Boston</departure>
<arrival>NYC</arrival>
<typeOfTransport>Flight</typeOfTransport>
<estimatedCost>$300.00</estimatedCost>
</row>
<row>
<date>2012-02-12</date>
<departure>NYC</departure>
<arrival>Boston</arrival>
<typeOfTransport>Flight</typeOfTransport>
<estimatedCost>$200.00</estimatedCost>
</row>
</table>
</form>
答案 0 :(得分:1)
它将使用XSL for-each(用于重用多个匹配的XML元素等):
<xsl:for-each select="form/table/row">
<!-- Content -->
</xsl:for-each>
它使用XPath表达式指定要处理的节点集 - 在本例中row
和form
下的table
。
函数分配的内容将对每个(因此名称)匹配的节点执行/重复。
如果没有(0 row
s)则不会被叫。对于两个row
,它会被调用两次。
许多人会将其称为for-each&#34; loop&#34; - 但这是一个误称(因为它不是一个循环,因此无法从XSL中break
出来 - 因为它不是一个循环)。
参见W3Schools教程:
http://www.w3schools.com/xsl/el_for-each.asp
另见这个问题,它可以帮助您了解您正在做的事情的范围/背景: