【问题标题】:How to add a value to the existing element value and return it as a new value如何将值添加到现有元素值并将其作为新值返回
【发布时间】:2018-10-27 00:44:27
【问题描述】:

这是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的文档 获取所有文档后,您需要在 RevisionNumber 元素下创建名为 currentreservationnumber 的新元素。 当前版本号的值将是版本号的 +1。

【问题讨论】:

  • 这个问题令人困惑。 XML 不完整吗?我看不到如何存储多个文档。您在寻找 Xquery 解决方案吗?
  • @kisert XML 已完成。根元素是
  • 明智的做法是退后一步,详细阐述更大的目标。出于性能原因,我们通常建议不要使用序列号。你真的需要它们吗?
  • 话虽如此,您可能正在寻找这样的东西:github.com/grtjn/ml-unique#uniqnext-sequential-uri

标签: xquery marklogic cts-search


【解决方案1】:

我认为有关序列号的警告与系统范围的唯一编号/ID(如 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>)

如果您正在执行大查询/更新,请记住考虑锁定。如果已经有 currentreservationnumber,您可能需要切换到 node-replace。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-05
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 2013-10-05
    • 2021-12-30
    • 2016-08-02
    相关资源
    最近更新 更多