[xquery-talk] XPath Issues in XQuery

David Carlisle davidc at nag.co.uk
Sat Feb 16 13:01:01 PST 2008

It would have helped if yo'd supplied input file, but whatever.
your $volume, $issue and $journal variables apparently hod data for all
teh items. You apparently want to just return the volume and issue
for the node that you are processing. Confusingly you are using
suingular variable names for (eg) $volume even though this holds
multiple nodes, whereas you are using the plural name $nodes for the
$nodes variable which holds a single node.

without any input hard to check these paths but you seem to want
something like

<publication_information>Volume {$nodes/..//seriesStmt/idno[@type='volume'][1]}</publication_information>

and similarly for issue etc.

have to use .. here as $ad2 (despite its name) stores head eleemnts not
ad elements, so you first need to go up to the parent ad, then down to
delect volume.

other comments

let $ad2 := $ad//ad/head[contains(., 'muscle') or contains(., upper-case('muscle'))]
It's pointless calling a function on a string literal, the above could more
easily be written

let $ad2 := $ad//ad/head[contains(., 'muscle') or contains(., 'MUSCLE')]

it wouldn't find Muscle, don't you want

let $ad2 := $ad//ad/head[contains(upper-case(.), 'MUSCLE')]

which will find muscle in any case, or better to compare using
a case-blind collation if your system offers such a collation.


The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs. 

More information about the talk mailing list