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 查询来选择这个节点。

任何人都可以帮忙吗?

4

2 回答 2

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>
于 2013-07-15T11:05:28.447 回答
1

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

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

于 2013-07-15T11:09:18.447 回答