Как добавить значение к существующему значению элемента и вернуть его как новое значение - PullRequest
0 голосов
/ 16 мая 2018

Это XML-файл.

<?xml  version="1.0" encoding="UTF-8"?>
<root>
<AtcoCode> System-Start-Date= 2018-05-16T12:35:48.6929328-04:00, " ", System-End-Date = 9999-12-31, " ", 150042010003</AtcoCode>
<NaptanCode>esxatgjd</NaptanCode>
<PlateCode>
</PlateCode>
<CleardownCode>
</CleardownCode>
<CommonName>Upper Park</CommonName>
<CommonNameLang>
</CommonNameLang>
<ShortCommonName>
</ShortCommonName>
<ShortCommonNameLang>
</ShortCommonNameLang>
<Landmark>Upper Park</Landmark>
<LandmarkLang>
</LandmarkLang>
<Street>High Road</Street>
<StreetLang>
</StreetLang>
<Crossing>
</Crossing>
<CrossingLang>
</CrossingLang>
<Indicator>adj</Indicator>
<IndicatorLang>
</IndicatorLang>
<Bearing>NE</Bearing>
<NptgLocalityCode>E0046286</NptgLocalityCode>
<LocalityName>Loughton</LocalityName>
<ParentLocalityName>
</ParentLocalityName>
<GrandParentLocalityName>
</GrandParentLocalityName>
<Town>Loughton</Town>
<TownLang>
</TownLang>
<Suburb>
</Suburb>
<SuburbLang>
</SuburbLang>
<LocalityCentre>1</LocalityCentre>
<GridType>U</GridType>
<Easting>541906</Easting>
<Northing>195737</Northing>
<Co-ordinates>51.64255,0.04944</Co-ordinates>
<StopType>BCT</StopType>
<BusStopType>MKD</BusStopType>
<TimingStatus>OTH</TimingStatus>
<DefaultWaitTime>
</DefaultWaitTime>
<Notes>
</Notes>
<NotesLang>
</NotesLang>
<AdministrativeAreaCode>080</AdministrativeAreaCode>
<CreationDateTime>2006-11-06T00:00:00</CreationDateTime>
<ModificationDateTime>2010-01-16T07:58:02</ModificationDateTime>
<RevisionNumber>5</RevisionNumber>
<Modification>rev</Modification>
<Status>act</Status>
</root>

Как этого добиться?

Вопрос: Создать индекс диапазона пути для элемента статуса и получить все документы, имеющие статус del После получения всех документов вам нужно создать новый элемент с именем currentreservationnumber в элементе RevisionNumber.Значение currentrevisionnumber будет +1 к RevisionNumber.

1 Ответ

0 голосов
/ 25 мая 2018

Я думаю, что предупреждение о последовательных числах связано с общесистемными уникальными номерами / идентификаторами (такими как последовательность Oracle), так что не беспокойтесь в этом случае?

Если у вас есть только один RevisionNumber, и вы можете найти его без индекса пути, вы можете обойтись запросом значения элемента для RevisionNumber, поскольку он уже проиндексирован.

Учитывая, что вы каким-то образом получаете документ, это может быть так просто:

let $doc := fn:doc ('/foo.xml')
let $rev-node := $doc/root/RevisionNumber
return xdmp:node-insert-after ($rev-node, <currentreservationnumber>{$rev-node + 1}</currentreservationnumber>)

хотя не забудьте рассмотреть возможность блокировки, если вы делаете большой запрос / обновление. И вам может потребоваться переключиться на замену узла, если уже существует текущий номер резервирования.

...