1

次のスニペットのような入力があります。

入力スニペット:

    <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とその最初の子がテーブルであるか、何もないかを確認したいと思います。次の XPath を書きました: ../../following-sibling::div[1]/node()[1] ) = 'table'

altova XMLSpyで期待どおりの出力が得られますが、 との間にスペースがあり、そのスペースがテキスト ノードとして扱われるため、saxon パーサーで正確な出力が得られません。<div><table>

タグ間のスペースを避けるにはどうすればよいですか、または他の解決策はありますか?

スニペット コード:

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

2 に答える 2

1

イアンの答えは正しいですが、よりクリーンなソリューションは...

<xsl:when test="../following-sibling::div[1]/*[1]/self::table">

また、div とそのテーブルの子の間に介在する要素を気にしない場合は、次のように単純化できます...

<xsl:when test="../following-sibling::div[1]/table">
于 2012-09-24T12:07:58.423 に答える
1

使用する必要があります

<xsl:strip-space elements="*"/>

スタイル シートのトップ レベルで、解析時に空白のみのテキスト ノードを無視するように指示します。

于 2012-09-24T11:28:32.270 に答える