鉴于此XML
<well bulkShift="0.000000" diameter="5.000000" hidden="false" name="67-1-TpX-10" filename="67-1-TpX-10.well">
<metadata/>
<unit>ftUS</unit>
<colour blue="1.000000" green="1.000000" hue="" red="1.000000"/>
<tvd clip="false"/>
<associatedcheckshot>25-1-X-14</associatedcheckshot>
<associatedwelllog>HDRA_67-1-TpX-10</associatedwelllog>
<associatedwelllog>NPHI_67-1-TpX-10</associatedwelllog>
</well>
我可以选择带有此XPath的元素
//well[@bulkShift=0 and @diameter=5 and @hidden='false' and @name='67-1-TpX-10' and @filename='67-1-TpX-10.well']
但是我需要更加具体,因为我需要找到具有这些特定子节点的元素,因为子元素(元数据,单位,颜色等)可以在元素内以任何顺序出现。
理想情况下,我希望能够仅使用一个XPath查询来选择此节点。
有人可以帮忙吗?
答案 0 :(得分:3)
此模板还匹配子项并归因于子项
<xsl:template match="well[@hidden='false'][./unit='ftUS' or ./tvd/@clip='false']">
well found!
</xsl:template>
或一气呵成:
<xsl:template match="well[@hidden='false' and (./unit='ftUS' or ./tvd/@clip='false')]">
well found!
</xsl:template>
答案 1 :(得分:1)
您可以将子项测试添加到谓词的属性测试中 e.g:
//well[@bulkShift=0 and @diameter=5 and @hidden='false' and @name='67-1-TpX-10' and @filename='67-1-TpX-10.well']
[metadata and unit and colour]
关闭谓词[ predicate1 ][ predicate2 ]
的列表与使用和操作的列表相同。