2015-08-04 3 views
1

У меня есть огромный XML-документ, часть которого, какИтерационные вставок атрибутов в XQuery

<tracklist> 
    <track> 
    <position>A1</position> 
    <title>Un Momento Solo (North 5th. St. Dub)</title> 
    <duration>6:04</duration> 
    </track> 
    <track> 
    <position>A2</position> 
    <title>Your Love Is Incredible</title> 
    <duration>6:44</duration> 
    </track> 
    <track> 
    <position>B1</position> 
    <title>Roots</title> 
    <duration>7:43</duration> 
    </track> 
    <track> 
    <position>B2</position> 
    <title>Un Momento Solo (Straight Up Mix)</title> 
    <duration>7:06</duration> 
    </track> 
</tracklist> 

Я хотел бы добавить атрибут tracklist называется tot с общим числом подузлов под tracklist названием track

for $i in db:open("releases1","releases.xml")/releases/release 
return update insert attribute tot {count($i/tracklist/track)} into 
$i/tracklist/track 

Однако я получаю сообщение об ошибке

[XPST0003] Unexpected end of query: 'insert attribut...'. 
+1

Пожалуйста _never_ размещать текстовый ввод или код, как изображения, они мешают никому работать с ним. Вместо этого предоставьте исходный файл или (правильно сформированную) выдержку из него, соответствующую вашему запросу (таким образом, включая, по крайней мере, соответствующие части). Посмотрите на [ask], чтобы увидеть, какой должен быть хороший вопрос. –

ответ

0

Это незначительная проблема синтаксиса. Синтаксис операторов обновления является

insert node [node] into [target-node] 

где ключевым слово (s) insert node всегда происходит вместе, если я правильно помню, используя два слова здесь были некоторые грамматические причины (в противном случае, возможно, была некоторая неопределенность во время синтаксического анализа).

Для примера, удалите update ключевое слово (которое не существует) и добавьте недостающую node:

for $i in db:open("releases1","releases.xml")/releases/release 
return insert node attribute tot {count($i/tracklist/track)} into 
$i/tracklist 
+0

Благодарим вас за ответ. Я отправил код в соответствии с запросом в форме вопроса. Код в вашей уверенности верен, но последний «трек» не нужен. Это создает ошибку –

+0

Я скопировал это из вашего вопроса; поскольку пока еще не было надлежащего примера ввода (визуализация BaseX хороша для исследования при работе с ним, но делает понимание структуры намного сложнее, чем некоторый фрагмент XML). Я едва мог проверить семантику запроса. Обновленный вопрос содержит почти все, что нужно для хорошего вопроса: пример ввода, четкое описание того, что вы пытаетесь достичь, что вы пробовали и четкое заявление о проблеме, +1 для этого. –

Смежные вопросы