У меня есть XML-файл, который мне нужно изменить. Сначала мне нужно сделать группу, а затем исключить пару узлов.XPath/XQuery - выбор узла, исключая некоторые элементы
<cars>
<car>
<make>Toyota</make>
<model>Camry</model>
<color>White</color>
<price>123</price>
</car>
<car>
<make>Honda</make>
<model>Accord</model>
<color>White</color>
<price>423</price>
</car>
</cars>
Вот мой код, который делает преобразование:
<root>
{
for $color in distinct-values(doc('cars.xml')//cars/car/color)
let $car := doc('cars.xml')//cars/car
return <appearance color="{$color}">
{ $car[color eq $color ] }
</appearance>
}
</root>
я получаю:
<?xml version="1.0" encoding="UTF-8"?>
<root>
<appearance color="White">
<car>
<make>Toyota</make>
<model>Camry</model>
<color>White</color>
<price>123</price>
</car>
<car>
<make>Honda</make>
<model>Accord</model>
<color>White</color>
<price>423</price>
</car>
</appearance>
</root>
Это делает 95% того, что мне нужно для одной задачи, за исключением. Мне нужно исключить узлы «цвет» и «цена» из окончательного XML, сохраняя при этом группировку.
я попытался сделать следующее в моем возвращении заявлении: {$ автомобиля [цвет эк $ цвета]/* [не (само :: цена)] [не (сам :: цвета)]}
вроде работ, но он полностью исключает элемент «автомобиль»! Любой совет?