使用 XPATH 查找具有特定属性的元素
Using XPATH to find elements with a certain attribute
我有以下 XML 文件。我想在 XPath 中构建查询以查找 1917 年之前发射的船舶的所有船舶元素
<Ships>
<Class name="Kongo">
<Ship name="h" launched="1915"/>
<Ship name="h1" launched="1920"/>
</Class>
<Class name="Kongo2">
<Ship name="h2" launched="1941"/>
<Ship name="h3" launched="1941"/>
</Class>
<Class name="Kongo2">
<Ship name="h4" launched="1917"/>
<Ship name="h5" launched="1917"/>
</Class>
</Ships>
我想出了以下 Xpath: if(/Ships/Class/Ship/number(@launched) < 1917) then Ships/Class/Ship else ()
但是这列出了所有 Ship 元素,即使存在 if 检查。这可能有什么问题?
您可以像这样使用谓词(只需要 XPath-1.0):
/Ships/Class/Ship[1917 > @launched]
谓词表达式被反转以避免小于字符 <
这在某些上下文中是有问题的。但语义与 @launched < 1917
.
相同
我有以下 XML 文件。我想在 XPath 中构建查询以查找 1917 年之前发射的船舶的所有船舶元素
<Ships>
<Class name="Kongo">
<Ship name="h" launched="1915"/>
<Ship name="h1" launched="1920"/>
</Class>
<Class name="Kongo2">
<Ship name="h2" launched="1941"/>
<Ship name="h3" launched="1941"/>
</Class>
<Class name="Kongo2">
<Ship name="h4" launched="1917"/>
<Ship name="h5" launched="1917"/>
</Class>
</Ships>
我想出了以下 Xpath: if(/Ships/Class/Ship/number(@launched) < 1917) then Ships/Class/Ship else ()
但是这列出了所有 Ship 元素,即使存在 if 检查。这可能有什么问题?
您可以像这样使用谓词(只需要 XPath-1.0):
/Ships/Class/Ship[1917 > @launched]
谓词表达式被反转以避免小于字符 <
这在某些上下文中是有问题的。但语义与 @launched < 1917
.