处理动态xml的xsl或xsl fo

处理动态xml的xsl或xsl fo,xml,xslt,dynamic,xsl-fo,Xml,Xslt,Dynamic,Xsl Fo,我有一个可以是动态的xml文件(在下面的xml示例中,行数可以是0、1、2或多行)。xsl(或xsl fo)如何处理这种情况?如有任何示例或提示,将不胜感激 <form> <table> <row> <date>2012-02-10</date> <departure>Boston</departure> <ar

我有一个可以是动态的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>

2012-02-10
波士顿
纽约市
航班
$300.00
2012-02-12
纽约市
波士顿
航班
$200.00

将为每个元素使用XSL(用于与多个匹配的XML元素等重用):


它使用XPath表达式指定要处理的节点集—在本例中,是
表单
下的

函数分配的内容将针对每个匹配的节点(因此命名)执行/重复

如果没有(0
s),则不会调用它。对于两个
s,它将被调用两次

许多人将其称为for-each“循环”-但这是一个用词不当的说法(因为它不是循环,所以没有办法从XSL for-each中突破

请参阅W3Schools教程:

另外,请看这个问题,它将帮助您了解您所做工作的范围/背景:


你的问题太宽泛了,你到底在问什么?xsl和xsl fo语言能否处理琐碎的xml对普通xslt和xsl fo处理器可以完成它们的工作吗?->是。@DeChar-如果输入数据很简单并且将来不需要扩展XSLT,我只建议对每个
(拉类型转换)使用
xsl:。否则,如果使用推式转换,即使用
xsl:apply templates
并覆盖内置模板来处理转换,那么扩展样式表就容易得多。许多人发现每个
比模板更容易阅读(这也带来了一些不太明显/隐含的功能)。如果他的需求发生变化,那么很容易进行重构。
<xsl:for-each select="form/table/row">
  <!-- Content -->
</xsl:for-each>