如何使用XSL检查值是否为空? 例如,如果爸爸妈妈空了?
<Hoteis id="1">
<codigo>458</codigo>
<morada>Porto</morada>
<num_quartos>3</num_quartos>
<piscina>Não</piscina>
<restaurante>
<dados></dados>
<num_mesas></num_mesas>
<num_pessoas></num_pessoas>
<hora_abertura></hora_abertura>
<hora_fechar></hora_fechar>
</restaurante>
</Hoteis>
例如:
<td align="center">
<xsl:value-of select= "ns:restaurante" >
<xsl:for-each select="/Hoteis/restaurante">
<xsl:if teste="dados != ''">
<tr bgcolor="#9acd32">
<td align="center">Nº Pessoas</td>
<td align="center">Nº Mesas</td>
<td align="center">Hora Abertura</td>
<td align="center">Hora Fechar</td>
</tr>
<xsl:apply-templates select="//ns:restaurante"/>
</xsl:if>
</xsl:for-each>
</xsl:value-of>
</td>
我该怎么做?
答案 0 :(得分:1)
我会说获取字符串的长度,如果它等于0则执行x,否则执行其他操作。已经好几年了,但我会给xpath一个bash:
<xsl:if test="string-length($yourElem) > 0">
答案 1 :(得分:1)
如果你使用test
代替teste
(除非你有西班牙语葡萄牙语XSLT处理器......?),你的方法就可以了。
就个人而言,我更喜欢:
<xsl:if test="dados/text()">
请注意,此测试是否存在 text 节点,dados
的子节点 - 这与测试dados
空的测试不一定相同
答案 2 :(得分:1)
我更喜欢使用的是string()
。
示例:
XML输入
<Hoteis id="1">
<codigo>458</codigo>
<morada>Porto</morada>
<num_quartos>3</num_quartos>
<piscina>Não</piscina>
<restaurante>
<dados></dados>
<num_mesas></num_mesas>
<num_pessoas></num_pessoas>
<hora_abertura></hora_abertura>
<hora_fechar></hora_fechar>
</restaurante>
</Hoteis>
XSLT 1.0
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/*">
<xsl:if test="string(restaurante/dados)">
<xsl:text>"dados" is not empty.</xsl:text>
</xsl:if>
<xsl:if test="not(string(restaurante/dados))">
<xsl:text>"dados" is empty.</xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
<强>输出强>
"dados" is empty.
此外,如果您使用的是xsl:strip-space
,并且xsl:preserve-space
中未列出该元素,则会忽略空格。例如,如果dados
只有空格(<dados> </dados>
),它也会显示为空。