我正在寻找框架xpath逻辑的解决方案来比较属性。
<menucontainer id="menu1" op="o3" indicator="highlight">
<menubox>
<menutitle>TITLE</menutitle>
<menuoptionlist>
<menuoption id="o1">Select a path from below :</menuoption>
<menuoption id="o2">IMAGE1</menuoption>
<menuoption id="o3">IMAGE2</menuoption>
<menuoption id="o4">IMAGE3</menuoption>
<menuoption id="o5">IMAGE4</menuoption>
<menuoption id="o6">IMAGE5</menuoption>
</menuoptionlist>
</menubox>
</menucontainer>
这里我想比较menucontainers op值(op =&#34; 03&#34;)和menuoption ids.So这里理想的匹配将是IMAGE2。我会用红色突出显示IMAGE2。
我尝试了//menublock/menucontainer/@op = //menublock/menucontainer/menuoptionlist/menuoption/@id
但它不是动态的。它检查第一个结果并在所有地方应用相同的结果。帮助构建xpath。
答案 0 :(得分:0)
要返回值为IMAGE2的节点menuoption
,基于menuoption属性id
等于menucontainer属性op
,您可以使用以下XPath选择器
//menucontainer/menubox/menuoptionlist/menuoption[@id=../../../@op]
../
上升了一个级别。 W3schools XPath Syntax
答案 1 :(得分:0)
借助我的水晶球,我为您提供了解决方案。
XPATH ://menuoption[@id = ancestor::menucontainer/@op]
[您可以根据需要限制//menuoption
。]
XSLT 1.0 :
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<xsl:template match="menuoption[@id = ancestor::menucontainer/@op]">
<xsl:copy>
<xsl:apply-templates select="@*"/>
<!-- add a specific attribute -->
<xsl:attribute name="highlight">
<xsl:text>red</xsl:text>
</xsl:attribute>
<xsl:apply-templates />
</xsl:copy>
</xsl:template>
<!-- identity copy -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
将属性highlight
更改为您想要的任何内容。在您的环境中安装这些模板。 [水晶球破裂]