匹配行集值的XML循环
我有一个XML数据表,如下所示。在ROWSET1_行中,有一个ID列表。每个ID对应于ROWSET2_行中的一部分数据。我在循环并匹配行集合2_行与行集合1_行中的ID时遇到问题。最终,将创建一份pdf报告,其中应显示三个不同的数据部分。从我的循环中,我不断获取要打印的行集合2_行数据的第一部分。换句话说,我将ROWSET2_行数据的第一部分打印了三次,这是错误的。我希望我的解释是正确的匹配行集值的XML循环,xml,foreach,xsl-fo,rowset,Xml,Foreach,Xsl Fo,Rowset,我有一个XML数据表,如下所示。在ROWSET1_行中,有一个ID列表。每个ID对应于ROWSET2_行中的一部分数据。我在循环并匹配行集合2_行与行集合1_行中的ID时遇到问题。最终,将创建一份pdf报告,其中应显示三个不同的数据部分。从我的循环中,我不断获取要打印的行集合2_行数据的第一部分。换句话说,我将ROWSET2_行数据的第一部分打印了三次,这是错误的。我希望我的解释是正确的 <DOCUMENT> <DATA> <ROWSET1> <RO
<DOCUMENT>
<DATA>
<ROWSET1>
<ROWSET1_ROW>
<INSPECTION_FEATURE_ID>2084</INSPECTION_FEATURE_ID>
</ROWSET1_ROW>
<ROWSET1_ROW>
<INSPECTION_FEATURE_ID>2081</INSPECTION_FEATURE_ID>
</ROWSET1_ROW>
<ROWSET1_ROW>
<INSPECTION_FEATURE_ID>2113</INSPECTION_FEATURE_ID>
</ROWSET1_ROW>
</ROWSET1>
<ROWSET2>
<ROWSET2_ROW>
<INSPECTION_FEATURE_ID>2084</INSPECTION_FEATURE_ID>
<SECONDARY_FEATURE_ID>0018-LAF-01</SECONDARY_FEATURE_ID>
<INSPECTION_FEATURE>Embankment</INSPECTION_FEATURE>
</ROWSET2_ROW><ROWSET2_ROW>
<INSPECTION_FEATURE_ID>2081</INSPECTION_FEATURE_ID>
<SECONDARY_FEATURE_ID>0119-LAF-67</SECONDARY_FEATURE_ID>
<INSPECTION_FEATURE>Sand Boil</INSPECTION_FEATURE>
</ROWSET2_ROW><ROWSET2_ROW>
<INSPECTION_FEATURE_ID>2113</INSPECTION_FEATURE_ID>
<SECONDARY_FEATURE_ID>2009-WAC-99</SECONDARY_FEATURE_ID>
<INSPECTION_FEATURE>Seepage</INSPECTION_FEATURE>
</ROWSET2_ROW>
</DOCUMENT>
</DATA>
我已经尝试了以下代码,但是我一直得到一个错误->fo:flow缺少子元素。我已经尝试过这段代码的一些变体,比如删除when语句或更改循环,但是如果我没有收到错误,我只会将第一节或ROWSET2_行数据打印三次
<xsl:for-each select=".//ROWSET1_ROW/INSPECTION_FEATURE_ID">
<xsl:for-each select="//ROWSET2_ROW/INSPECTION_FEATURE_ID">
<xsl:when test="//ROWSET1_ROW//INSPECTION_FEATURE_ID = //ROWSET2_ROW//INSPECTION_FEATURE_ID">
<fo:table>
<fo:table-column column-width="3in"/>
<fo:table-column column-width="4.5in"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell padding-top="0.02in">
<fo:block>
<fo:table>
<fo:table-column column-width="1in"/>
<fo:table-column column-width="1.85in"/>
<fo:table-body>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="cell cell-label">
<fo:block>
Inspection Feature Id
</fo:block>
</fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="cell" font-weight="bold">
<fo:block>
<xsl:value-of select="//ROWSET2_ROW/INSPECTION_FEATURE_ID"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="cell cell-label">
<fo:block>
Site Id
</fo:block>
</fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="cell" font-weight="bold">
<fo:block>
<xsl:value-of select="//ROWSET2_ROW/SECONDARY_FEATURE_ID"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
<fo:table-row>
<fo:table-cell xsl:use-attribute-sets="cell cell-label">
<fo:block>
Feature
</fo:block>
</fo:table-cell>
<fo:table-cell xsl:use-attribute-sets="cell">
<fo:block>
<xsl:value-of select="//ROWSET2_ROW/INSPECTION_FEATURE"/>
</fo:block>
</fo:table-cell>
</fo:table-row>
</fo:table-body>
</fo:table>
</xsl:when>
</xsl:for-each>
</xsl:for-each>
在此方面的任何帮助都将不胜感激。提前感谢当您构建表格时,该行
<xsl:value-of select="//ROWSET2_ROW/INSPECTION_FEATURE_ID"/>
获取它找到的第一个匹配项,这就是rowset2数据重复的原因
您必须为以下各项删除嵌套项:
<xsl:for-each select="//ROWSET2_ROW/INSPECTION_FEATURE_ID">
for each尝试为每个Rowset2元素运行循环,但您真正想要的是处理Rowset1元素并向每个元素添加一些数据
在该表中,您需要一条语句,说明find the rowset2 data,该数据具有与我当前正在处理的节点的ID相匹配的检查特征ID
因此,一些类似于
<xsl:value-of select="sibling::ROWSET2_ROW[INSPECTION_FEATURE_ID = ./INSPECTION_FEATURE_ID]"/>
还没有检查这个语法