[XQuery Talk Mailing List Archive Home] [By Date] [By Thread] [By Subject] [By Author] [Recent Entries] [Reply To This Message]

XPath Issues in XQuery

Wei, Alice J. ajwei at indiana.edu
Sat Feb 16 08:31:50 PST 2008


  XPath Issues in XQuery
Hi, David:

  Thanks for the explanation, but it looks like the code for the
<publication_information>Volume {$nodes/..//seriesStmt/idno[@type='volume'][1]}</publication_information>
is not returning any of the actual data. I am not sure if it is because of the structure of the XML. I took out the ../ and it still returns me with a tab instead of any data.

  I am wondering if offering information here on the actual hierarchy of my data would help.

  To get to the parent node of idno[@type='volume'] from the root is

   cbmlHeader/fileDesc/sourceDesc/biblFull/seriesStmt

   A portion of the structure in seriesStmt for most of the recorded data in my <publication_information>

<seriesStmt>
<title level="journal">My Journal</title>
<idno type="volume"> 1 </idno>
<idno type="issue"> 1 </idno>
</seriesStmt>


My revised XQuery:

let $ad := fn:collection("xmldb:exist://db/cbml")
let $volume := $ad//seriesStmt/idno[@type='volume'][1]
let $issue := $ad//seriesStmt/idno[@type='issue'][1]
let $journal := $ad//seriesStmt/title[@level='journal'][1]
let $ad2 := $ad//ad/head[contains(upper-case(.), 'MUSCLE')]
let $sorted_result:=
for $doc in distinct-values($ad2)
order by $doc
return $doc
for $r at $count in $sorted_result
let $nodes := $ad2[. = $r][1]
return
<ad>
<statistics>
Showing Result: {$count} / {count($sorted_result)}
</statistics>
<source>
<journal>{data($journal)}</journal>
<publication_information>Volume {$nodes//seriesStmt/idno[@type='volume'][1]}, Issue {$nodes//seriesStmt/idno[@type='issue'][1]}</publication_information>
</source>
{$nodes}
</ad>

Would this make any difference on the code you provided me above?
Another question is, would I have to make adjustments to the let clause for $volume, $issue ad $journal?

Thanks for your help.

Alice
======================================================
Alice Wei
MIS 2008
School of Library and Information Science
Indiana University Bloomington
http://x-query.com/mailman/listinfo/talk
________________________________________
From: David Carlisle [http://x-query.com/mailman/listinfo/talk]
Sent: Saturday, February 16, 2008 8:01 AM
To: Wei, Alice J.
Cc: http://x-query.com/mailman/listinfo/talk
Subject: Re:  XPath Issues in XQuery

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.

David


________________________________________________________________________
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.
________________________________________________________________________



Purchase Stylus Studio Online Today!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2007 All Rights Reserved.