Aşağıdaki kaynak XML snippet'i üzerinden bir sıra numarası sayacı sürdürmeye çalışıyorum. Sıra numarası, hedef OBX.1 elemanında. Bu, içindeki veriye sahip olan kaynaktaki NOS/POS/ROS öğelerini temel alır. Bu örnekte, tüm 3 elemanlar veriye sahip olduğundan, dizi 1,2,3, OBX.1'lerde üretilir. Bununla birlikte, NOS/POS/ROS'tan herhangi biri boşsa, ilgili OBX düğümü üretilmemelidir, ancak kalan elemanlar doğru sırada olmalıdır. OBX.1 'i şu şekilde ayarlayabilirim: sayımı (önceki- kardeş :: ns1: NOS [string-length (.)> 0] | önceki-kardeş :: üst: POS [string-length (.)> 0]) + 1 ancak 15 tane elemanınız olduğunda yorucu oluyor. Bu sayacı sürdürmenin daha iyi bir yolu var mı?XSL Düz XML üzerinde sayaç
Kaynak XML Parçacığı:
<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>
Hedef XML Parçacığı: Boş olmasaydı yalnızca NOS
, POS
veya ROS
elemanları seçerek olsaydı
<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>
kullanabilirsiniz. 1. – NNN