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

我需要找出两个节点之间是否存在任何问题.我的 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 />位于父标记的开头.

相关文章

php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念