XSLT 1.0 在第一个单元格中查找包含特定值的行,然后仅读取后续行



我正在尝试编写XSLT代码,该代码在识别出"真实标题"行后开始读取行:"真正的标题"是在其第一列中包含单词"模板名称"的行。

以下是使 XML 变得棘手的原因(因为并非每个传入的 XML 看起来都相同(: - 传入的 XML 文件可以包含任何小的、可变数量的元标题行(如下面 XML 示例中的第一个(;和 - 传入的 XML 文件可以包含任何小的、可变数量的"空白"行

这意味着"真正的标题"的位置可以从第 3 行到第 10 行的任何地方变化(再次取决于"元标题"和"空格"行的数量(。

以下是我对 XSLT 代码的片段(不太有效(:

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes" />
<xsl:template match="/">
<Payments>
<xsl:if test="contains(column1, 'Template')" />
<xsl:for-each select="data/row[position()&gt;1 and position()&lt;last()]">
<Record>
...

XML 可能如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<root>
<row>
<t1>HeaderOne</t1>
<t2>(All)</t2>
<t3></t3>
<t4></t4>
<t5></t5>
</row>
<row>
<t1></t1>
<t2></t2>
<t3></t3>
<t4></t4>
<t5></t5>
</row>
<row>
<t1>Template name</t1>
<t2>Currency<t2>
<t3>Sum of Currency Amount</t3>
<t4>Sum of Settlement Amount- always USD</t4>
<t5>Reference</t5>
</row>
<row>
<t1>Jerry Smith</t1>
<t2>CAD</t2>
<t3>232.00</t3>
<t4>176.00</t4>
<t5>ABCHoldings</t5>
</row>

生成的转换应该开始在以"Jerry Smith"开头的行上拾取

这听起来像是following-sibling轴的工作。就这样...

<xsl:for-each select="root/row[t1 = 'Template name']/following-sibling::row">

相关内容

  • 没有找到相关文章

最新更新