Xpath 集操作 - 排除某些节点(例如具有某些特征或特征)
Xpath set operations - exclude certain nodes (for example with certain feature or features)
我想排除一组节点中的某些节点。我正在使用有问题的 Mondial database in XML for practice purposes. For example, I want to find countries where no organization has its headquarters. ER Diagram for the database。
这是我找到一些组织总部的国家的方式:
//organization/id(@headq)/id(@country)
当我从所有国家中减去一些组织设有总部的国家时,我可以找到没有组织设有总部的国家。
我想到了使用 except
运算符。所以,这就是我的尝试:
java -cp saxon-he-10.1.jar net.sf.saxon.Query -qs:doc('mondial.xml')"//country except //organization/id(@headq)/id(@country)"
但是我收到这个错误:
XPDY0002 The context item for axis step root/descendant::organization is absent. Query failed with dynamic error: The context item for axis step root/descendant::organization is absent
我也试过这个:
java -cp saxon-he-10.1.jar net.sf.saxon.Query -qs:doc('mondial.xml')//country[not(//organization/id(@headq)/id(@country))]
但它只有 returns 根元素:
<?xml version="1.0" encoding="UTF-8"?>
如何找到没有组织总部的国家/地区?
你应该更换
doc('mondial.xml')//country except //organization/id(@headq)/id(@country)"
来自
doc('mondial.xml')/(.//country except .//organization/id(@headq)/id(@country))
我用以下查询替换了我的查询:
doc('mondial.xml')//country/name except doc('mondial.xml')//organization/id(@headq)/id(@country)/name
然后我将查询放在 xq
文件中并使用以下行执行它:
java -cp saxon-he-10.1.jar net.sf.saxon.Query query.xq
它确实奏效了。但我仍然不知道如何让它以纯命令行方式工作,就像我的第一个原始查询一样。
我想排除一组节点中的某些节点。我正在使用有问题的 Mondial database in XML for practice purposes. For example, I want to find countries where no organization has its headquarters. ER Diagram for the database。
这是我找到一些组织总部的国家的方式:
//organization/id(@headq)/id(@country)
当我从所有国家中减去一些组织设有总部的国家时,我可以找到没有组织设有总部的国家。
我想到了使用 except
运算符。所以,这就是我的尝试:
java -cp saxon-he-10.1.jar net.sf.saxon.Query -qs:doc('mondial.xml')"//country except //organization/id(@headq)/id(@country)"
但是我收到这个错误:
XPDY0002 The context item for axis step root/descendant::organization is absent. Query failed with dynamic error: The context item for axis step root/descendant::organization is absent
我也试过这个:
java -cp saxon-he-10.1.jar net.sf.saxon.Query -qs:doc('mondial.xml')//country[not(//organization/id(@headq)/id(@country))]
但它只有 returns 根元素:
<?xml version="1.0" encoding="UTF-8"?>
如何找到没有组织总部的国家/地区?
你应该更换
doc('mondial.xml')//country except //organization/id(@headq)/id(@country)"
来自
doc('mondial.xml')/(.//country except .//organization/id(@headq)/id(@country))
我用以下查询替换了我的查询:
doc('mondial.xml')//country/name except doc('mondial.xml')//organization/id(@headq)/id(@country)/name
然后我将查询放在 xq
文件中并使用以下行执行它:
java -cp saxon-he-10.1.jar net.sf.saxon.Query query.xq
它确实奏效了。但我仍然不知道如何让它以纯命令行方式工作,就像我的第一个原始查询一样。