+ -
当前位置:首页 → 问答吧 → 循环获取XML节点的问题

循环获取XML节点的问题

时间:2010-09-09

来源:互联网

XML结构如下:

  <Budget_Data>
  <INTERNAL_ORDER>S1001</INTERNAL_ORDER>
  <ACCOUNT>GENERAL_QUANTITY</ACCOUNT>
  <COST_CENTER>WH000010101001</COST_CENTER>
  <BUDGET_PERIOD>Month</BUDGET_PERIOD>
  <BUDGET_MONTH>1.0000000</BUDGET_MONTH>
  <BUDGET_QUATER/>
  <BUDGET_YEAR/>
  </Budget_Data>
  <Budget_Data>
  <INTERNAL_ORDER>S1001</INTERNAL_ORDER>
  <ACCOUNT>GENERAL_QUANTITY</ACCOUNT>
  <COST_CENTER>WH000010101001</COST_CENTER>
  <BUDGET_PERIOD>Quarter</BUDGET_PERIOD>
  <BUDGET_MONTH/>
  <BUDGET_QUATER>1.0000000</BUDGET_QUATER>
  <BUDGET_YEAR/>
  </Budget_Data>
  <Budget_Data>
  <INTERNAL_ORDER>S1001</INTERNAL_ORDER>
  <ACCOUNT>GENERAL_QUANTITY</ACCOUNT>
  <COST_CENTER>WH000010101001</COST_CENTER>
  <BUDGET_PERIOD>Year</BUDGET_PERIOD>
  <BUDGET_MONTH/>
  <BUDGET_QUATER/>
  <BUDGET_YEAR>1.0000000</BUDGET_YEAR>
  </Budget_Data>
  <Budget_Data>
  <INTERNAL_ORDER>S1001</INTERNAL_ORDER>
  <ACCOUNT>GENERAL_QUANTITY</ACCOUNT>
  <COST_CENTER>WH000011218001</COST_CENTER>
  <BUDGET_PERIOD>Month</BUDGET_PERIOD>
  <BUDGET_MONTH>2.0000000</BUDGET_MONTH>
  <BUDGET_QUATER/>
  <BUDGET_YEAR/>
  </Budget_Data>
  <Budget_Data>
  <INTERNAL_ORDER>S1001</INTERNAL_ORDER>
  <ACCOUNT>GENERAL_QUANTITY</ACCOUNT>
  <COST_CENTER>WH000011218001</COST_CENTER>
  <BUDGET_PERIOD>Quarter</BUDGET_PERIOD>
  <BUDGET_MONTH/>
  <BUDGET_QUATER>2.0000000</BUDGET_QUATER>
  <BUDGET_YEAR/>
  </Budget_Data>
  <Budget_Data>
  <INTERNAL_ORDER>S1001</INTERNAL_ORDER>
  <ACCOUNT>GENERAL_QUANTITY</ACCOUNT>
  <COST_CENTER>WH000011218001</COST_CENTER>
  <BUDGET_PERIOD>Year</BUDGET_PERIOD>
  <BUDGET_MONTH/>
  <BUDGET_QUATER/>
  <BUDGET_YEAR>2.0000000</BUDGET_YEAR>
  </Budget_Data>
  <Budget_Data>
  <INTERNAL_ORDER>S1001</INTERNAL_ORDER>
  <ACCOUNT>GENERAL_UNITPRICE</ACCOUNT>
  <COST_CENTER>WH000010101001</COST_CENTER>
  <BUDGET_PERIOD>Month</BUDGET_PERIOD>
  <BUDGET_MONTH>3.0000000</BUDGET_MONTH>
  <BUDGET_QUATER/>
  <BUDGET_YEAR/>
  </Budget_Data>
  <Budget_Data>
  <INTERNAL_ORDER>S1001</INTERNAL_ORDER>
  <ACCOUNT>GENERAL_UNITPRICE</ACCOUNT>
  <COST_CENTER>WH000010101001</COST_CENTER>
  <BUDGET_PERIOD>Quarter</BUDGET_PERIOD>
  <BUDGET_MONTH/>
  <BUDGET_QUATER>3.0000000</BUDGET_QUATER>
  <BUDGET_YEAR/>
  </Budget_Data>
  <Budget_Data>
  <INTERNAL_ORDER>S1001</INTERNAL_ORDER>
  <ACCOUNT>GENERAL_UNITPRICE</ACCOUNT>
  <COST_CENTER>WH000010101001</COST_CENTER>
  <BUDGET_PERIOD>Year</BUDGET_PERIOD>
  <BUDGET_MONTH/>
  <BUDGET_QUATER/>
  <BUDGET_YEAR>3.0000000</BUDGET_YEAR>
  </Budget_Data>
  <Budget_Data>
  <INTERNAL_ORDER>S1001</INTERNAL_ORDER>
  <ACCOUNT>GENERAL_AMOUNT</ACCOUNT>
  <COST_CENTER>WH000011218001</COST_CENTER>
  <BUDGET_PERIOD>Month</BUDGET_PERIOD>
  <BUDGET_MONTH>4.0000000</BUDGET_MONTH>
  <BUDGET_QUATER/>
  <BUDGET_YEAR/>
  </Budget_Data>
  <Budget_Data>
  <INTERNAL_ORDER>S1001</INTERNAL_ORDER>
  <ACCOUNT>GENERAL_AMOUNT</ACCOUNT>
  <COST_CENTER>WH000011218001</COST_CENTER>
  <BUDGET_PERIOD>Quarter</BUDGET_PERIOD>
  <BUDGET_MONTH/>
  <BUDGET_QUATER>4.0000000</BUDGET_QUATER>
  <BUDGET_YEAR/>
  </Budget_Data>
  <Budget_Data>
  <INTERNAL_ORDER>S1001</INTERNAL_ORDER>
  <ACCOUNT>GENERAL_COMMENT</ACCOUNT>
  <COST_CENTER>WH000010101001</COST_CENTER>
  <BUDGET_PERIOD>Month</BUDGET_PERIOD>
  <BUDGET_MONTH>5.0000000</BUDGET_MONTH>
  <BUDGET_QUATER/>
  <BUDGET_YEAR/>
  </Budget_Data>
  <Budget_Data>
  <INTERNAL_ORDER>T100000005</INTERNAL_ORDER>
  <ACCOUNT>GENERAL_QUANTITY</ACCOUNT>
  <COST_CENTER>WH000011218001</COST_CENTER>
  <BUDGET_PERIOD>Month</BUDGET_PERIOD>
  <BUDGET_MONTH>6.0000000</BUDGET_MONTH>
  <BUDGET_QUATER/>
  <BUDGET_YEAR/>
  </Budget_Data>
  <Budget_Data>
  <INTERNAL_ORDER>T100000005</INTERNAL_ORDER>
  <ACCOUNT>GENERAL_QUANTITY</ACCOUNT>
  <COST_CENTER>WH000011218001</COST_CENTER>
  <BUDGET_PERIOD>Quarter</BUDGET_PERIOD>
  <BUDGET_MONTH/>
  <BUDGET_QUATER>6.0000000</BUDGET_QUATER>
  <BUDGET_YEAR/>
  </Budget_Data>
  <Budget_Data>
  <INTERNAL_ORDER>T100000005</INTERNAL_ORDER>
  <ACCOUNT>GENERAL_QUANTITY</ACCOUNT>
  <COST_CENTER>WH000011218001</COST_CENTER>
  <BUDGET_PERIOD>Year</BUDGET_PERIOD>
  <BUDGET_MONTH/>
  <BUDGET_QUATER/>
  <BUDGET_YEAR>6.0000000</BUDGET_YEAR>
  </Budget_Data>



问题:
  以每一种颜色标记的子节点值为每一组关键字,循环整个XML获取子节点值与关键字相同的所有子节点。该如何获取???

  意思即为:以第一个Budget_Data节点中的INTERNAL_ORDER、ACCOUNT、COST_CENTER子节点值为关键字遍历整个XML找到所有相同的Budget_Data节点。接着以下一个Budget_Data节点中的INTERNAL_ORDER、ACCOUNT、COST_CENTER子节点值为关键字遍历剩余的XML继续找到所有相同的Budget_Data节点。。。以此不断循环 只至整个XML遍历完毕。

作者: wolf2064   发布时间: 2010-09-09

答案为:
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <html>
  <body>
  <h2>答案</h2>
  <table border="1">
  <tr bgcolor="#9acd32">
  <th>INTERNAL_ORDER</th>
  <th>ACCOUNT</th>
  <th>COST_CENTER</th>
  </tr>
  <xsl:for-each select="Budget_Data">
  <tr>
  <td><xsl:value-of select="INTERNAL_ORDER"/></td>
  <td><xsl:value-of select="ACCOUNT"/></td>
  <td><xsl:value-of select="COST_CENTER"/></td>
  </tr>
  </xsl:for-each>
  </table>
  </body>
  </html>
</xsl:template>

</xsl:stylesheet>

作者: wos812   发布时间: 2010-09-09