我正在使用的XSD模式需要一个国际或国内地址:
"/mns:PhysicalAddress/mns:DomesticAddress/mns:City"
要么
"/mns:PhysicalAddress/mns:InternationalAddress/mns:City"
与
XMLUtils.BuildField(Document doc, String xpath)
一样,它被用作Java方法中的参数。我知道我可以直接进入创建该
doc
的Java对象,并使用自动生成的bean来查询元素,但是我更喜欢保留在XPath的简洁领域中。这可能吗?如果是这样,我怎么写XPath表达式选择
mns:City
而不管它是国际地址还是国内地址?注意:这是Java语言,而不是Javascript,HTML或XSLT,因此,我认为
<xsl:if>
与此处无关。 最佳答案
您可以查找所有有父母一方的城市:
//mns:City[(parent::mns:DomesticAddress|parent::mns:InternationalAddress)]
如果还需要确保该地址在物理地址中:
//mns:City[(parent::mns:DomesticAddress|parent::mns:InternationalAddress)[parent::mns:PhysicalAddress]]
另外,也可以执行
*
并检查名称,而不是反转层次结构:/mns:PhysicalAddress/*[name()="mns:DomesticAddress" or name()="mns:InternationalAddress"]/mns:City