[
for $result in //supplierAssortment
return
map {
'articleCode': let $article_code := $result//articleCode/string()
return xs:integer($article_code),
'logisticVariantCode': let $log_variant_code := $result//logisticVariantCode/string()
return xs:integer($log_variant_code),
'ProductAttribute' : let $product_attributes := [
map{
'AttributeName': 'Supplier',
'AttributeValue': let $sup_code := $result//supplierCode/string()
return xs:integer($sup_code),
'UPC': let $upc := concat(
$result//articleCode/string(),
format-number(
let $sv := $result//logisticVariantCode/string()
return xs:integer($sv),
'000')
)
return xs:integer($upc)
},
map{
'AttributeName': 'OrderableFrom',
'AttributeValue': let $orderable_from := $result//orderableFrom/string()
return $orderable_from,
'UPC': let $upc := concat(
$result//articleCode/string(),
format-number(
let $sv := $result//logisticVariantCode/string()
return xs:integer($sv),
'000')
)
return xs:integer($upc)
},
map{
'AttributeName': 'OrderableUntil',
'AttributeValue': let $orderable_until := $result//orderableUntil/string()
return $orderable_until,
'UPC': let $upc := concat(
$result//articleCode/string(),
format-number(
let $sv := $result//logisticVariantCode/string()
return xs:integer($sv),
'000')
)
return xs:integer($upc)
}
]
return $product_attributes
}
]
let $pd := array{//Batch/Item/Description/string()}
return
if(array:size($pd) > 0)
then $pd(1)
else
error(QName('http://revionics.com/err', 'ProdDescReq'), 'ProductDescription missing.')