XPATH查询:如何获取两个元素?
我的HTML代码是:XPATH查询:如何获取两个元素?,xpath,Xpath,我的HTML代码是: <table> <tr> <td class="data1"><p>1</td></td> <td class="data1"><p>2</td></td> <td class="data1"><p>3</td></td> <td class="data1"><p>4</td&g
<table>
<tr>
<td class="data1"><p>1</td></td>
<td class="data1"><p>2</td></td>
<td class="data1"><p>3</td></td>
<td class="data1"><p>4</td></td>
</tr>
<tr>
<td class="data1"><p>5</td></td>
<td class="data1"><p>6</td></td>
<td class="data1"><p>7</td></td>
<td class="data1"><p>8</td></td>
</tr>
</table>
结果是:
<p>4</p>
<p>8</p>
4
八,
结果是正确的!但是,如果我想举个例子:
<p>3</p> <p>4</p>
<p>7</p> <p>8</p>
34
78
所以
[3]/p和[4]/p
如何分别获取这两个元素
非常感谢你 我认为您可能在寻找与
[position() > 2]
它检索前两个元素之后的所有元素。首先请注意,提供的XML格式不正确强> 我假设预期的格式良好的XML大致如下所示:
<table>
<tr>
<td class="data1"><p>1</p></td>
<td class="data1"><p>2</p></td>
<td class="data1"><p>3</p></td>
<td class="data1"><p>4</p></td>
</tr>
<tr>
<td class="data1"><p>5</p></td>
<td class="data1"><p>6</p></td>
<td class="data1"><p>7</p></td>
<td class="data1"><p>8</p></td>
</tr>
</table>
类似于[position()]的东西可能是有用的好问题(+1)。请参阅我的答案,其中更正了您的XML,并讨论了两个正确的解决方案,以及为什么第三个建议的XPath表达式是错误的。太好了!非常感谢。我能用一下吗?[position()=1][position()=4]如果我只想得到第一个和第四个元素?@Damiano-如果你分别计算这两个谓词过滤器,你会得到你想要的信息。如果要在单个XPATH表达式中计算它们,则需要将它们组合在单个谓词筛选器中,并使用
或运算符:[position()=1或position()=4]
否则,它将计算以查看两个谓词筛选器是否都为真(并且没有任何元素同时是第一个和第四个)。
<table>
<tr>
<td class="data1"><p>1</p></td>
<td class="data1"><p>2</p></td>
<td class="data1"><p>3</p></td>
<td class="data1"><p>4</p></td>
</tr>
<tr>
<td class="data1"><p>5</p></td>
<td class="data1"><p>6</p></td>
<td class="data1"><p>7</p></td>
<td class="data1"><p>8</p></td>
</tr>
</table>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<xsl:copy-of select=" /*/*/td[position() = 3 or position() = 4]/p"/>
----------------------
<xsl:copy-of select=" /*/*/td[3]/p | /*/*/td[4]/p"/>
----------------------
<xsl:copy-of select=" /*/*/td[3][4]/p"/>
</xsl:template>
</xsl:stylesheet>