首页 > 解决方案 > 基于属性值的 XPath

问题描述

我正在尝试根据条件获取属性,我的 XML 是

<listitems xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" 
xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" 
xmlns:rs="urn:schemas-microsoft-com:rowset" 
xmlns:z="#RowsetSchema">
<rs:data ItemCount="2">
    <z:row ows_Attachments=";#/Attachments/79/164351;#" ows_ID="79" />
    <z:row ows_Attachments=";#/Attachments/80/164352;#" ows_ID="80" />
</rs:data>
</listitems>

我想获取 ows_ID,其中 ows_Attachments 以特定数字结尾,例如

如果 ows_Attachments 以 164351 结尾或包含 164351,我想要 79;#

如果有任何正则表达式可用于删除所有命名空间等,然后如果它易于处理,我也愿意接受该选项。

标签: xsltxpath

解决方案


严格来说,使用 XPath,您可以选择属性:

//*[local-name()="row" and contains(@ows_Attachments,"/164351")]/@ows_ID

并使用 提取值:

string(//*[local-name()="row" and contains(@ows_Attachments,"/164351")]/@ows_ID)

输出:79


推荐阅读