Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
匹配行集值的XML循环_Xml_Foreach_Xsl Fo_Rowset - Fatal编程技术网

匹配行集值的XML循环

匹配行集值的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

我有一个XML数据表,如下所示。在ROWSET1_行中,有一个ID列表。每个ID对应于ROWSET2_行中的一部分数据。我在循环并匹配行集合2_行与行集合1_行中的ID时遇到问题。最终,将创建一份pdf报告,其中应显示三个不同的数据部分。从我的循环中,我不断获取要打印的行集合2_行数据的第一部分。换句话说,我将ROWSET2_行数据的第一部分打印了三次,这是错误的。我希望我的解释是正确的

<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]"/>
还没有检查这个语法