不要处理没有子元素的元素

时间:2014-10-14 08:40:07

标签: xslt xslt-1.0

通常标签包含XML和\ XML,在我的例子中,某些节点包含xml /.

这是我的XML:

<NTC_LIGHTLISTPRODUCT>
    <RACON>
        <RACON_CATEGORY>Racon</RACON_CATEGORY>
        <RACON_GROUP>Mo(M)</RACON_GROUP>
        <RACON_PERIOD>30s</RACON_PERIOD>
        <RACON_RANGE>10M</RACON_RANGE>
        <RACON_WAVE_LENGTH>0.03-X,0.10-S</RACON_WAVE_LENGTH>
    </RACON>
</NTC_LIGHTLISTPRODUCT>
<NTC_LIGHTLISTPRODUCT>
    <RACON/>  <-- This is the problem -->
</NTC_LIGHTLISTPRODUCT>

这是我的xslt 1.0:

<xsl:for-each select="NTC_LIGHTLISTPRODUCT">
    <xsl:for-each select="RACON">
    CIAO
        <xsl:for-each select="RACON_GROUP">
            <xsl:value-of select="."/>
        </xsl:for-each>
        <xsl:for-each select="RACON_PERIOD">
            <xsl:value-of select="."/>
        </xsl:for-each>
        <xsl:for-each select="RACON_RANGE">
            <xsl:value-of select="."/>
        </xsl:for-each>
    </xsl:for-each>
</xsl:for-each>

这是输出:

ciao Mo(M)30s10M

我想如果包含RACON /什么都不写。 我希望这个过程仅针对结构RACON ..... / RACON运行,而不是针对RACON /。

1 个答案:

答案 0 :(得分:1)

我认为你所说的是你不想处理那些没有孩子的RACON元素。在这种情况下,请将xsl:for-each更改为:

<xsl:for-each select="RACON[*]">

或许您可以更具体,并检查它是否包含您希望输出的至少一个子元素。例如:

<xsl:for-each select="RACON[RACON_GROUP or RACON_PERIOD or RACON_RANGE]">

如果你想进一步,你可以检查至少有一个子元素至少有一些文本

<xsl:for-each select="RACON[normalize-space(RACON_GROUP) or normalize-space(RACON_PERIOD) or normalize-space(RACON_RANGE)]">