xsl选择以下兄弟姐妹的文本值

时间:2018-12-20 21:17:41

标签: xslt dom xpath

如何从这些节点中仅获取“您的朋友” 或仅获得“米老鼠”

<span>
  <lb/>
  Your Friend
  <lb/>
  <name> Mickey Mouse </name>
</span>

我希望从XSL获得的输出是这样:

<p> Your Friend </p>
<p> Mickey Mouse </p>

我尝试过:

<xsl:template match="/">
<xsl:for-each select="./lb">
    <p>
        <xsl:if test="./following-sibling::text()[1]">
            <xsl:value-of select="./following-sibling::*[text()][1]"/>
        </xsl:if>
        <xsl:if test="./following-sibling::*[name]//text()">
            -test-
        </xsl:if>
    </p>
</xsl:for-each>
</xsl:template>

但是我知道我完全错了,因为我从未去过-test-

2 个答案:

答案 0 :(得分:0)

我主要是在这里猜测,但似乎您想要:

<xsl:template match="span">
    <xsl:for-each select="lb">
        <p>
            <xsl:value-of select="(following-sibling::text()|following-sibling::name)[1]"/>
        </p>
    </xsl:for-each>
</xsl:template>

答案 1 :(得分:0)

使用代码:

<xsl:strip-space elements="*"/>
<xsl:template match="text()">
    <p>
        <xsl:value-of select="normalize-space(.)"/>
    </p>
</xsl:template>