1
XPath 3.1支持新的映射功能,該功能允許映射結果序列。 https://www.w3.org/TR/xpath-31/#id-mapsXPath 3.1表達式爲每個選定節點收集屬性作爲名稱/值映射
例如,下面是有效的XPath表達式3.1返回2個圖的硬編碼序列:
(map {'a':1,'b':2,'c':3}, map {'x':-3,'y':-2,'z':-1})
我想使用這個功能來收集節點屬性作爲地圖的列表。
例如,對於給定的XML:
<root>
<node a="1" b="2" c="3"/>
<node x="-3" y="-2" z="-1"/>
</root>
我如何製作一個簡單的XPath表達式得到以下結果:
[{'a':1,'b':2,'c':3}, {'x':-3,'y':-2,'z':-1}]
我得到net.sf.saxon.s9api.SaxonApiException:命名空間前綴'map'尚未聲明。我是否缺少一些配置?我正在使用s9api java API,我打電話給xpathCompiler.setLanguageVersion(「3.1」); – yurgis
沒想到我必須調用:xpathCompiler.declareNamespace(「map」,「http://www.w3.org/2005/xpath-functions/map」);現在檢查解決方案的其餘部分 – yurgis
對於我的需要,以下表達式已足夠:'''/ root/node/map:merge(@ */map {local-name():xs:integer(。)})''' ' 不知道是否有任何使用'/'vs'!'的性能命中。 – yurgis