次のソースXMLスニペットに対してシーケンス番号カウンタを維持しようとしています。シーケンス番号は、ターゲットOBX.1要素内にあります。これは、ソース内のデータを持つNOS/POS/ROSの要素に基づいています。この例では、3つの要素すべてにデータがあるため、OBX.1のシーケンス1,2,3が生成されます。ただし、NOS/POS/ROSのいずれかが空の場合、対応するOBXノードは生成されませんが、残りの要素は正しい順序でなければなりません。count(previous-sibling :: ns1:NOS [string-length(。)> 0] | preceding-sibling :: top:POS [string-length(。)> OBX.1を設定すると、 0])+ 1ですが、そのような要素が15個あると面倒です。このカウンタを維持するためのより良い方法はありますか?フラットXML上のXSLカウンタ
ソースXMLスニペット:
<ns1:HladtCollection xmlns:ns1="http://xmlns.oracle.com/pcbpel/adapter/db/top/ReadAdtHistorical">
<ns1:Hladt>
<ns1:ADTMessageID>123</ns1:ADTMessageID>
<ns1:ADTMessageType>ADD</ns1:ADTMessageType>
<ns1:AccountNumber>3456</ns1:AccountNumber>
<ns1:ArrivalDate>2016-03-22T11:45:12.220000000</ns1:ArrivalDate>
<ns1:NOS>Test1</ns1:NOS>
<ns1:POS>Test2</ns1:POS>
<ns1:ROS>Test3</ns1:ROS>
</ns1:Hladt>
</ns1:HladtCollection>
ターゲットXMLスニペット:
<ns1:OBX>
<ns1:OBX.1>1</ns1:OBX.1>
<ns1:OBX.2>ST</ns1:OBX.2>
<ns1:OBX.3>
<ns1:CE_OBS.1>
<ns1:CM_OBS.1>122</ns1:CM_OBS.1>
</ns1:CE_OBS.1>
</ns1:OBX.3>
<ns1:OBX.5>Test1</ns1:OBX.5>
</ns1:OBX>
<ns1:OBX>
<ns1:OBX.1>2</ns1:OBX.1>
<ns1:OBX.2>ST</ns1:OBX.2>
<ns1:OBX.3>
<ns1:CE_OBS.1>
<ns1:CM_OBS.1>111</ns1:CM_OBS.1>
</ns1:CE_OBS.1>
</ns1:OBX.3>
<ns1:OBX.5>Test2</ns1:OBX.5>
</ns1:OBX>
<ns1:OBX>
<ns1:OBX.1>3</ns1:OBX.1>
<ns1:OBX.2>ST</ns1:OBX.2>
<ns1:OBX.3>
<ns1:CE_OBS.1>
<ns1:CM_OBS.1>222</ns1:CM_OBS.1>
</ns1:CE_OBS.1>
</ns1:OBX.3>
<ns1:OBX.5>Test3</ns1:OBX.5>
</ns1:OBX>
使用することができます。 1。 – NNN