В приведенном ниже файле XML есть ITEMS
и ITEMTYPES
. ITEMTYPES
описывают элементы данного типа, ITEMS
являются экземплярами этих типов. Отношения ITEM
к ITEMTYPE
является n:1
Запрос для XmlListModel, который мог получить данные из не дочерних узлов
ITEM
относится к ITEMTYPE
атрибутом type
:
<ROOT>
<ITEMS>
<ITEM type="Z"/>
<ITEM type="X"/>
<ITEM type="Y"/>
<ITEM type="X"/>
<ITEM type="Y"/>
<ITEM type="Z"/>
</ITEMS>
<ITEMTYPES>
<ITEMTYPE type="X">
<Color>Red</Color>
<Size>100</Size>
</ITEMTYPE>
<ITEMTYPE type="Y">
<Color>Green</Color>
<Size>200</Size>
</ITEMTYPE>
<ITEMTYPE type="Z">
<Color>Yellow</Color>
<Size>150</Size>
</ITEMTYPE>
</ITEMTYPES>
</ROOT>
Как я могу создать запрос для XMLListModel
, который обеспечивает для каждого ITEM
информацию, определенную в соответствующих ITEMTYPE
?
Моя наивная попытка была:
XmlListModel {
id: xmlModel
source: "test.xml"
query: "/ROOT/ITEMS/ITEM"
XmlRole { name: "type"; query: "@type/string()" }
XmlRole { name: "size"; query: "../../ITEMTYPES/Size/string()" }
}
, который, конечно, не работает. Я не знаю, как ссылаться на братьев и сестер, и как ссылаться на соответствующий узел, где оба типа ITEM
и ITEMTYPE
имеют одинаковый тип атрибута.