1

我有一个如下所示的 XML 文档。当record_type ='VALID'时,我需要获取每个LOCATION_NAME 和FILE_TYPE 的记录数。LOCATION_NAME 和 FILY_TYPE 在参数中。对于这两个参数,我必须在 RECORD_TYPE='VALID' 时获取记录数。

我将为每次迭代(循环)提供一个 LOCATION_NAME 和一个 FILY_TYPE,并且需要计数。输入参数将由外部系统传递(本例中为 Tibco JDBC QUERY 结果)。

<root>
<SellOutRecord>
    <FILE_TYPE>STOSO</FILE_TYPE>
    <RECORD_TYPE>VALID</RECORD_TYPE>
    <RECORD_NO>1</RECORD_NO>
    <LOCATION_NAME>XYZ el</LOCATION_NAME>
</SellOutRecord>
<SellOutRecord>
    <FILE_TYPE>STOSO</FILE_TYPE>
    <RECORD_TYPE>ERROR</RECORD_TYPE>
    <RECORD_NO>2</RECORD_NO>
    <LOCATION_NAME>XYZ el</LOCATION_NAME>
</SellOutRecord>
<SellOutRecord>
    <FILE_TYPE>STOSO</FILE_TYPE>
    <RECORD_TYPE>VALID</RECORD_TYPE>
    <RECORD_NO>3</RECORD_NO>
    <LOCATION_NAME>XYZ el</LOCATION_NAME>
</SellOutRecord>
<SellOutRecord>
    <FILE_TYPE>STOSO</FILE_TYPE>
    <RECORD_TYPE>WARNING</RECORD_TYPE>
    <RECORD_NO>3</RECORD_NO>
    <LOCATION_NAME>XYZ el</LOCATION_NAME>
</SellOutRecord>
<SellOutRecord>
    <FILE_TYPE>STOSO</FILE_TYPE>
    <RECORD_TYPE>ERROR</RECORD_TYPE>
    <RECORD_NO>4</RECORD_NO>
    <LOCATION_NAME>XYZ el</LOCATION_NAME>
</SellOutRecord>
<SellOutRecord>
    <FILE_TYPE>STOSO</FILE_TYPE>
    <RECORD_TYPE>ERROR</RECORD_TYPE>
    <RECORD_NO>6</RECORD_NO>
    <LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
</SellOutRecord>
<SellOutRecord>
    <FILE_TYPE>STOSO</FILE_TYPE>
    <RECORD_TYPE>VALID</RECORD_TYPE>
    <RECORD_NO>7</RECORD_NO>
    <LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
</SellOutRecord>
<SellOutRecord>
    <FILE_TYPE>STOSO</FILE_TYPE>
    <RECORD_TYPE>VALID</RECORD_TYPE>
    <RECORD_NO>8</RECORD_NO>
    <LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
</SellOutRecord>
<SellOutRecord>
    <FILE_TYPE>STOSO</FILE_TYPE>
    <RECORD_TYPE>ERROR</RECORD_TYPE>
    <RECORD_NO>9</RECORD_NO>
    <LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
</SellOutRecord>
<SellOutRecord>
    <FILE_TYPE>STOSO</FILE_TYPE>
    <RECORD_TYPE>VALID</RECORD_TYPE>
    <RECORD_NO>10</RECORD_NO>
    <LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
</SellOutRecord>
<InventoryRecord>
    <FILE_TYPE>STOIV</FILE_TYPE>
    <RECORD_TYPE>ERROR</RECORD_TYPE>
    <RECORD_NO>2</RECORD_NO>
    <LOCATION_NAME>XYZ el</LOCATION_NAME>
</InventoryRecord>
<InventoryRecord>
    <FILE_TYPE>STOIV</FILE_TYPE>
    <RECORD_TYPE>VALID</RECORD_TYPE>
    <RECORD_NO>4</RECORD_NO>
    <LOCATION_NAME>XYZ el</LOCATION_NAME>
</InventoryRecord>
<InventoryRecord>
    <FILE_TYPE>STOIV</FILE_TYPE>
    <RECORD_TYPE>VALID</RECORD_TYPE>
    <RECORD_NO>5</RECORD_NO>
    <LOCATION_NAME>XYZ el</LOCATION_NAME>
</InventoryRecord>
<InventoryRecord>
    <FILE_TYPE>STOIV</FILE_TYPE>
    <RECORD_TYPE>ERROR</RECORD_TYPE>
    <RECORD_NO>8</RECORD_NO>
    <LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
</InventoryRecord>
<InventoryRecord>
    <FILE_TYPE>STOIV</FILE_TYPE>
    <RECORD_TYPE>ERROR</RECORD_TYPE>
    <RECORD_NO>9</RECORD_NO>
    <LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
</InventoryRecord>
<InventoryRecord>
    <FILE_TYPE>STOIV</FILE_TYPE>
    <RECORD_TYPE>VALID</RECORD_TYPE>
    <RECORD_NO>11</RECORD_NO>
    <LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
</InventoryRecord>
<InventoryRecord>
    <FILE_TYPE>STOIV</FILE_TYPE>
    <RECORD_TYPE>VALID</RECORD_TYPE>
    <RECORD_NO>14</RECORD_NO>
    <LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
</InventoryRecord>
<SalesInRecord>
    <FILE_TYPE>STOSI</FILE_TYPE>
    <RECORD_TYPE>VALID</RECORD_TYPE>
    <RECORD_NO>1</RECORD_NO>
    <LOCATION_NAME>XYZ el</LOCATION_NAME>
</SalesInRecord>
<SalesInRecord>
    <FILE_TYPE>STOSI</FILE_TYPE>
    <RECORD_TYPE>ERROR</RECORD_TYPE>
    <RECORD_NO>2</RECORD_NO>
    <LOCATION_NAME>XYZ el</LOCATION_NAME>
</SalesInRecord>
<SalesInRecord>
    <FILE_TYPE>STOSI</FILE_TYPE>
    <RECORD_TYPE>VALID</RECORD_TYPE>
    <RECORD_NO>3</RECORD_NO>
    <LOCATION_NAME>XYZ el</LOCATION_NAME>
</SalesInRecord>
<SalesInRecord>
    <FILE_TYPE>STOSI</FILE_TYPE>
    <RECORD_TYPE>WARNING</RECORD_TYPE>
    <RECORD_NO>3</RECORD_NO>
    <LOCATION_NAME>XYZ el</LOCATION_NAME>
</SalesInRecord>
<SalesInRecord>
    <FILE_TYPE>STOSI</FILE_TYPE>
    <RECORD_TYPE>ERROR</RECORD_TYPE>
    <RECORD_NO>4</RECORD_NO>
    <LOCATION_NAME>XYZ el</LOCATION_NAME>
</SalesInRecord>
<SalesInRecord>
    <FILE_TYPE>STOSI</FILE_TYPE>
    <RECORD_TYPE>ERROR</RECORD_TYPE>
    <RECORD_NO>7</RECORD_NO>
    <LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
</SalesInRecord>
<SalesInRecord>
    <FILE_TYPE>STOSI</FILE_TYPE>
    <RECORD_TYPE>VALID</RECORD_TYPE>
    <RECORD_NO>8</RECORD_NO>
    <LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
</SalesInRecord>
<SalesInRecord>
    <FILE_TYPE>STOSI</FILE_TYPE>
    <RECORD_TYPE>WARNING</RECORD_TYPE>
    <RECORD_NO>8</RECORD_NO>
    <LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
</SalesInRecord>
<SalesInRecord>
    <FILE_TYPE>STOSI</FILE_TYPE>
    <RECORD_TYPE>ERROR</RECORD_TYPE>
    <RECORD_NO>10</RECORD_NO>
    <LOCATION_NAME>XYZ XYZ</LOCATION_NAME>
</SalesInRecord>
</root>

例如,如果我提供 1. LOCATION_NAME=XYZ XYZ 和 FILE_TYPE='STOSI' 那么我应该得到 valid_rec_count=1 2. LOCATION_NAME=XYZ el 和 FILE_TYPE='STOIV' 那么我应该得到 valid_rec_count=2

4

1 回答 1

2

使用

count(/*/*[RECORD_TYPE='VALID']
            [FILE_TYPE = $pfileType and LOCATION_NAME = $pLocname]
     )
于 2012-10-11T12:53:47.197 回答