我有输入就像下面的片段,
输入片段:
<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>我目前在table的div class="a"标记中,我想检查下面的兄弟姐妹,即div,它的第一个孩子是table,还是什么都没有。我编写了以下XPath:./../following-sibling::div[1]/node()[1] ) = 'table'。
我在altova XMLSpy中获得了预期的输出,但是在saxon解析器中,由于<div>和<table>之间有一些空间,所以saxon解析器没有给出确切的输出,而该空间被视为文本节点。
我如何避免标签之间的空间,或者有没有其他解决方案?
代码片段:
<xsl:choose>
<xsl:when local-name(./../following-sibling::div[1]/node()[1] ) = 'table' ">
loagic-1
</xsl:when>
<xsl:otherwise>
logic-2
</xsl:otherwise>
</xsl:choose>发布于 2012-09-24 12:07:58
虽然伊恩的答案是正确的,一个更干净的解决方案是..。
<xsl:when test="../following-sibling::div[1]/*[1]/self::table">此外,如果您不关心div及其表子表之间的任何中间元素,则可以简化为.
<xsl:when test="../following-sibling::div[1]/table">发布于 2012-09-24 11:28:32
你需要用
<xsl:strip-space elements="*"/>在样式表的顶层,告诉它在解析时忽略仅空格的文本节点。
https://stackoverflow.com/questions/12563977
复制相似问题