当前位置 : 主页 > 网页制作 > xml >

XML:检查两个节点之间是否存在任何内容

来源:互联网 收集:自由互联 发布时间:2021-06-13
我需要找出两个节点之间是否存在任何问题.我的 XML看起来像这样: event value1="1" value2="2" value3="3" info="some info here" Line 1.lb/ Line 2.lb/lb/ Line 3.lb/ Line 4.lb//event 我的目标是转换 lb /节点到
我需要找出两个节点之间是否存在任何问题.我的 XML看起来像这样:

<event value1="1" value2="2" value3="3" info="some info here">
          Line 1.<lb/>
          Line 2.<lb/><lb/>
          Line 3.<lb/>
          Line 4.<lb/>
</event>

我的目标是转换< lb />节点到< br />使用XSLT的HTML标记.但是还有一个额外的要求.如果有一个< lb />直接跟随另一个< lb />我想只输出一个< br />.

我的XSLT看起来像这样:

<xsl:template match="lb">
    <xsl:if test="not(preceding-sibling::lb[1])">
       <br/>
    </xsl:if>
 </xsl:template>

上面的XSLT的问题在于它仅对第1行正常工作,因为忽略了两个节点之间的文本.

也许有人可以提供帮助.

编辑:另一种更有效的方法是:

<xsl:template match="lb">
    <xsl:if test="following-sibling::node()[1][not(self::lb)]">
        <br/>
    </xsl:if>
</xsl:template>

试试这个:

<xsl:template match="lb">
   <xsl:if test="generate-id()=generate-id(preceding-sibling::text()[1]/following-sibling::lb[1])">
     <br/>
   </xsl:if>
 </xsl:template>

基本上这会检查你是否在第一个< lb />以前的文本兄弟节点,这也意味着它只会添加< br />在一些文字之后,但是如果< lb />位于父标记的开头.

网友评论