我的输入类似于以下代码段
输入代码段
<div class="a">
<table>
<col width="4" />
<col width="8" />
<col width="5" />
<tbody>
<tr>
<td>ABC</td>
<td>DEF </td>
<td>GHI</td>
</tr>
</tbody>
</table>
</div>
<div class="x">
<table>
<col width="5" />
<col width="8" />
<col width="8" />
<tbody>
<tr>
<td>ABC</td>
<td>DEF </td>
<td>GHI</td>
</tr>
</tbody>
我目前位于 div class =“a”标记内的表,我想检查紧随其后的兄弟 div < / strong>并且它的第一个孩子是表或什么也没有。我编写了以下XPath:./../following-sibling::div[1]/node()[1] ) = 'table'
。
我在 altova XMLSpy 中得到了预期的输出,但在 saxon解析器中没有给出确切的输出,因为<div>
和{{1}之间有一些空格并且该空间被视为文本节点。
如何避免标签之间的空间,还是有其他解决方案?
摘录代码:
<table>
答案 0 :(得分:1)
您需要使用
<xsl:strip-space elements="*"/>
在样式表的顶层,告诉它在解析时忽略仅空白文本节点。
答案 1 :(得分:1)
虽然伊恩的答案是正确的,但更清洁的解决方案是......
<xsl:when test="../following-sibling::div[1]/*[1]/self::table">
另外,如果你不关心div和它的表子之间的任何干预元素,你可以简化为......
<xsl:when test="../following-sibling::div[1]/table">