使用 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.

相同