如何避免使用saxon解析器/ xalon解析器中的节点/元素的空格

时间:2012-09-24 11:20:10

标签: java xslt xpath saxon xalan

我的输入类似于以下代码段

输入代码段

    <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>

2 个答案:

答案 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">