通常标记包含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
ciao
我希望如果包含RACON/什么都不写。我希望这个过程只为结构RACON运行/RACON,不适用于RACON/。
我认为您所说的是,您不希望处理没有子级的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)]">