XQuery に問題があります。私はこの問題に多くの時間を費やしましたが、それを機能させることはできません:(これが私のXMLブックノードです:
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<price>44.95</price>
<publish_date>2000-10-01</publish_date>
<description>An in-depth look at creating applications
with XML.</description>
</book>
それが私が達成したいことです:
<table>
<tr>
<td>
<b>XML Developer's Guide</b>
</td>
<td class="author">Gambardella, Matthew</td>
<td class="genre">Computer</td>
<td class="price">44.95</td>
<td class="priceVat">55.29</td>
<td class="publish_date">2000-10-01</td>
<td class="description">An in-depth look at creating applications
with XML.</td>
</tr>
</table>
そして、ここに私のXQueryコードがあります:
for $book in doc("/home/kuba/mgr/pliki/books.xml")//book
order by number($book/price) descending
return
<tr>
<td><b>{ string($book/title) }</b></td>
{
for $value in $book/*
return if($value != $book/title and name($value) != 'price') then
<td class="{name($value)}">{$value/text()}</td>
else
if(name($value) = 'price') then
<td class="{name($value)}">{$value/text()}</td>
<td class="{name($value)}Vat">{$value/text()*1.23}</td>
else ()
}
</tr>
問題は次の行にあります。
<td class="{name($value)}Vat">{$value/text()*1.23}</td>
これが私のエラーメッセージです:
Engine name: Saxon-PE XQuery 9.5.0.2
Severity: fatal
Description: XPST0003: expected "else", found name "class"
Start location: 17:0
URL: http://www.w3.org/TR/xpath20/#ERRXPST0003
どのように私はそれを作ることができますか? XQuery 1.0で数値をフォーマットすることは可能ですが、それは不可能だと読みましたが、確認したい:)