Russian Qt Forum

Qt => XML => Тема начата: slawa от Апрель 13, 2009, 08:01



Название: Xml XQuery - как получить значение атрибута в программе?
Отправлено: slawa от Апрель 13, 2009, 08:01
Здравствуйте!

Требуется присвоить переменным значения атрибутов xml элемента. Пытаюсь сделать это на примере recipes для time::quantity:
Код
XML
<?xml version="1.0" encoding="UTF-8"?>
<cookbook>
   <recipe xml:id="MushroomSoup">
       <title>Quick and Easy Mushroom Soup</title>
       <ingredient name="Fresh mushrooms"
                   quantity="7"
                   unit="pieces"/>
       <time quantity="20"
             unit="minutes"/>
   </recipe>
</cookbook>
 

пытаюсь так:
Код
C++ (Qt)
query.bindVariable("v", v);
QString xq  ="declare variable $v external;let $v:=doc('cookbook.xml')/cookbook/recipe/time/@quantity";
query.setQuery(xq);
//...
query.evaluateTo(&formatter);
 
это дает runtime ошибку. Пробовал различные варианты запроса, но безуспешно.
При этом запрос вида
Код
C++ (Qt)
QString xq  ="doc('cookbook.xml')/cookbook/recipe/<ttime t=\"{time/@quantity}\"/>";
 
возвращает ожидаемый результат:
Код
XML
<ttime t=\"20"/>
 

Вопрос: Как правильно извлечь значение атрибута из xml файла?
Хочется сделать это через запрос, что бы избежать обхода DOM модели вручную.