如何确定输入xml中是否存在给定节点?
如果节点存在,我想使用reportAuthor1
的值,否则我会使用reportAuthor
的值。我尝试使用if和else失败了。
<xsl:choose>
<xsl:when test="reportAuthor1=''">
<xsl:value-of select="reportAuthor"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="reportAuthor1"/>
</xsl:otherwise>
</xsl:choose>
答案 0 :(得分:5)
使用not()
检查节点是否完全不存在:
<xsl:choose>
<xsl:when test="not(reportAuthor1)">
<xsl:value-of select="reportAuthor"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="reportAuthor1"/>
</xsl:otherwise>
</xsl:choose>
答案 1 :(得分:3)
这可能是最简单,最短的单行XPath表达式。使用强>:
<xsl:value-of select="reportAuthor1 | reportAuthor[not(reportAuthor1)]"/>
答案 2 :(得分:1)
在这种特定情况下,您也可以写
<xsl:value-of select="reportAuthor1 | reportAuthor"/>
|
返回XPath查询从此运算符的左侧和右侧返回的集合的并集,<xsl:value-of select="somequery"/>
将向集合中的第一个节点的值发送有些人回来了。因此,如果同时设置了reportAuthor1
和reportAuthor
,则会输出reportAuthor1
的值;如果仅设置了reportAuthor
,则会输出reportOutput
的值。