使用xpath查找具有属性和子元素的复杂元素
鉴于此XML使用xpath查找具有属性和子元素的复杂元素,xpath,Xpath,鉴于此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"/&
<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查询来选择这个节点
有人能帮忙吗?此模板也匹配childs和childs上的属性
<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>
找到了!
此模板还匹配childs和在childs上的属性
<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>
找到了!
您可以在谓词中添加子级测试,如属性测试
e、 g:
拥有一个谓词列表
[predicate1][predicate2]
与使用and操作的列表相同。您可以向谓词添加子级测试,如属性测试
e、 g:
拥有一个谓词列表
[predicate1][predicate2]
与使用and操作的谓词列表相同。我目前正在学习XPATH
。所以我有个问题要问你。为什么[@hidden='false'][./unit='ftUS'或/tvd/@clip='false'
不能在一个[..]
中写入?这可能是一个愚蠢的问题,我仍然需要知道如何缩小我的理解差距。好吧。那么这两个[]
是用于和操作的吗?如果我想在一个[]
我该怎么写?谢谢朋友..我一直在期待这样的事情,尽管这是我的猜测。你让我的猜测成真了..:)如果你在这里问一个问题会更有趣,所以在你尝试了一些东西并被卡住之后。这样你会学到很多东西。我不是xslt专家,但我会尽我所能回答xslt问题,这样我们就可以再次见面了。这s也给了其他成员一个帮助的机会。我目前正在学习XPATH。所以我有一个问题要问你。为什么[@hidden='false'][./unit='ftUS'或/tvd/@clip='false'
不能写在一个[..]
?可能是个愚蠢的问题,但我仍然需要知道,以缩小我的理解差距。好的。那么这两个[]
是用于和操作的吗?如果我想在单个[]中编写它的话
我该怎么写?谢谢朋友..我一直在期待这样的事情,尽管这是我的猜测。你让我的猜测成真了..:)如果你在这里问一个问题会更有趣,所以在你尝试了一些东西并被卡住之后。这样你会学到很多东西。我不是xslt专家,但我会尽我所能回答xslt问题,这样我们就可以再次见面了。这s还为其他成员提供了帮助的机会。这并不完全正确。多个谓词会更改position()
的值。如果您没有使用position()
,则它们是等效的。这不完全正确。多个谓词会更改position()
的值。如果您没有使用position()
,则它们是等效的。