Xpath - remove/elimiate 复制并获取字符的位置并检查字符是否相等
Xpath - remove/elimiate duplicates & get position of a character & check for equality of character
我被要求针对以下 HTML 代码编写一些 xpath 查询:
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<shops>
<shop name="Best Books">
<price>44.95</price>
</shop>
<shop name="Books and More">
<price>48.95</price>
</shop>
</shops>
<publish_date>2000-10-01</publish_date>
<description>
An in-depth look at creating applications with XML.
</description>
</book>
..... 10 本这种风格的书
</catalog>
查询是:
一个。 Return 所有书籍价格低于 10 美元的商店。
我的查询:/catalog/book/shops/shop[price<10]
问题:return同店节点多(因为同店
以不到 10 美元的价格卖出超过一本书)。
问题A: 如何remove/eliminate复制?
b。 Return 2000 年后出版一本书的所有作者。
我的查询:/catalog/book[publish_date/text()[1]='2']/author
问题:不起作用,试图获取 publish_date 的第一个字符
并检查它是否等于 2。
questionB: 如何获取文本节点的第一个字符并检查它是否
等同于其他角色?
1) Select shop
这样就没有 shop
的 price
小于 10 并且在 [=16 之前具有相同的 name
标签=]
/catalog/book/shops/shop[price<10 and not(@name = preceding::shop[price<10]/@name)]
2) 在减号之前获取子字符串,转换为数字并与 2000 进行比较。要删除双打,您可以使用与 1)
中相同的技巧
/catalog/book[number(substring-before(publish_date,"-")) >= 2000]/author
我被要求针对以下 HTML 代码编写一些 xpath 查询:
<catalog>
<book id="bk101">
<author>Gambardella, Matthew</author>
<title>XML Developer's Guide</title>
<genre>Computer</genre>
<shops>
<shop name="Best Books">
<price>44.95</price>
</shop>
<shop name="Books and More">
<price>48.95</price>
</shop>
</shops>
<publish_date>2000-10-01</publish_date>
<description>
An in-depth look at creating applications with XML.
</description>
</book>
..... 10 本这种风格的书
</catalog>
查询是:
一个。 Return 所有书籍价格低于 10 美元的商店。
我的查询:/catalog/book/shops/shop[price<10]
问题:return同店节点多(因为同店
以不到 10 美元的价格卖出超过一本书)。
问题A: 如何remove/eliminate复制?
b。 Return 2000 年后出版一本书的所有作者。
我的查询:/catalog/book[publish_date/text()[1]='2']/author
问题:不起作用,试图获取 publish_date 的第一个字符
并检查它是否等于 2。
questionB: 如何获取文本节点的第一个字符并检查它是否
等同于其他角色?
1) Select shop
这样就没有 shop
的 price
小于 10 并且在 [=16 之前具有相同的 name
标签=]
/catalog/book/shops/shop[price<10 and not(@name = preceding::shop[price<10]/@name)]
2) 在减号之前获取子字符串,转换为数字并与 2000 进行比较。要删除双打,您可以使用与 1)
中相同的技巧/catalog/book[number(substring-before(publish_date,"-")) >= 2000]/author