[xquery-talk] XML to TEXT OUTPUT with xQUERY

David Carlisle davidc at nag.co.uk
Tue Dec 7 09:47:18 PST 2010


On 07/12/2010 09:29, Julio de la Vega wrote:
> Hi *,
>
> I havemodifiedmyxQuery andIamclosetogetwhatI need but I still have
> aproblem.My engineonly returnstheinformationfromthefirstmetadata.Any
> idea?I think it can be a bug of the enginebecauseI d o not see any issue
> in my development, in fact ifIrun it under a different xQuery engine, it
> works. Doyou have a different alternative to my developmentto see if it
> works under my engine?
>
> Thanks in advance
>
> Regards
>
> xQuery:
>
> for $metadata in //MetaData
>
> return
>
> string-join(($metadata/Partition/Attr[@name=
> 'partitionMetaDataFile']/@value,
>
> $metadata/Partition/Attr[@name= 'CurrentPackageInPartition']/@value,
>
> $metadata/Partition/Attr[@name= 'TotalPagesInPartition']/@value,
> '
'), ' ')
>
>
> Output:
>
> D:\GBPXI\OUT\Print\Extractos\00229-X-00000005_20101108082610_F1_XIGRUPO_101104.afp.xml
> 15346 7673
>
>
Your query returns a list of strings, perhaps the API you are using only 
lets you see the first, perhaps wrap it in string-join so that you only 
return a single string



string-join(
for $metadata  in //MetaData
return
string-join(($metadata/Partition/Attr[@name= 
'partitionMetaDataFile']/@value,
                        $metadata/Partition/Attr[@name= 
'CurrentPackageInPartition']/@value,
                       $metadata/Partition/Attr[@name= 
'TotalPagesInPartition']/@value)), '
')



although I wouldn't actually use a FLOR for this as it just makes it 
more verbose than needed, your original query could be written

//MetaData/string-join((
Partition/Attr[@name= 'partitionMetaDataFile']/@value,
Partition/Attr[@name= 'CurrentPackageInPartition']/@value,
Partition/Attr[@name= 'TotalPagesInPartition']/@value, '
'), ' ')


David



More information about the talk mailing list