xml - 组合 xpath 表达式
问题描述
我有以下xml
<?xml version="1.0" encoding="utf-8"?>
<movies>
<movie>
<title>Star Wars</title>
<genre>sci-fi</genre>
<year>1977</year>
<cast>
<character cid="001">
<role>Hero</role>
<name>
<first>Mark </first>
<last>Hamill</last>
</name>
</character>
<character cid="002">
<role> Ass </role>
<name>
<first> Jack</first>
<last> Apple</last>
</name>
</character>
</cast>
<director>
<name>
<first> Mark </first>
<last> Hamill</last>
</name>
</director>
<producer />
<studio>Disney</studio>
</movie>
<movie>
<title>Star Wars 2</title>
<genre>sci-fi</genre>
<year>20112</year>
<cast>
<character cid="002">
<role>Hero</role>
<name>
<first>Mark</first>
<last>Joseph</last>
</name>
</character>
</cast>
<director />
<producer />
<studio>Disney</studio>
</movie>
<people peoid="001">
<name>
<first>Mark </first>
<last>Wei</last>
</name>
<name>
<first> John</first>
<last> Doe</last>
</name>
</people>
</movies>
我正在尝试提出一个 Xpath 查询,该查询将给出导演也是演员的所有电影的标题。例如下面,马克哈米尔出现在演员阵容中,也是导演。我知道获取导演名称的 xpath 表达式:/movies/movie/director[name]。以及用于从演员 /movies/movie/cast/character[name] 中获取名称的 xpath 表达式。有没有办法将两者结合起来以获得所需的xpath?
解决方案
XSLT 2.0 具有量化表达式。
看看下面。
XPath 2.0
/movies/movie[some $x in director/name/last satisfies cast/character/name/last = $x]/title
比较名字和姓氏。
/movies/movie[some $x in director/name/concat(first,'|',last) satisfies cast/character/name/concat(first,'|',last) = $x]/title
推荐阅读
- security - owasp 十大漏洞中的 ZAP 警报分类
- python - ModuleNotFoundError:没有名为“magenta.protobuf”的模块,但我已经安装了它
- reactjs - 关于react类组件setState的问题
- c++ - 使用 Range-v3 过滤 group_by 输出的正确方法是什么?
- python - 在 tensorflow 中查看错误的预测
- javascript - 不能在函数外使用变量。给出未定义的
- blockchain - 用于 getaccount/getbalance 的 TRC20 curl
- c# - TCP 发送方机器接收方窗口大小在 Windows 机器上发送少量数据几分钟后缩小为 0
- python-3.x - 定义100个数组,一个改变了,其他的也会改变
- python - 如何在 Selenium python 上实现脚本:按下弹出按钮并转到页面?