수정해야 할 XML 파일이 있습니다. 먼저 그룹을 작성한 다음 두 노드를 제외해야합니다.XPath/XQuery - 일부 요소를 제외하고 노드 선택
<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>
내가 얻을 :
<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>
다음은 변환을 수행 내 코드입니다
<?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에서 노드 "색"과 "가격"을 제외해야합니다.
나는 내 return 문에서 다음을 수행하려고 : {$ 자동차 [컬러의 EQ $ 색상]/*하지 (자체 :: 가격)] [하지 (자체 :: 색상)]}일의 종류 그러나 그것은 완전하게 "차"요소를 삭제한다!! 어떤 충고? 이 도움이
<root>
{
let $cars-doc := doc('cars.xml')
let $color := distinct-values($cars-doc//cars/car/color)
return
for $carcolor in $color
return
<appearance color="{$carcolor}">
{
for $car in $cars-doc//cars/car
where $car/color = $carcolor
return
<car>
{$car/*[not(self::color or self::price)]}
</car>
}
</appearance>
}
</root>
희망 :