通常标签包含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 /。
答案 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)]">