首页 文章

使用xpath查找包含属性和子元素的复杂元素

提问于
浏览
0

鉴于此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查询来选择此节点 .

有人可以帮忙吗?

2 回答

  • 1

    此模板也匹配孩子并归因于孩子

    <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>
    
  • 3

    您可以将子测试添加到谓词的属性测试中,例如:

    //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 ] 的列表与一个带有和操作的列表相同 .

相关问题