Edd*_*dyR 197 xslt xpath expression
使用xpath查询如何查找是否存在节点(标记)?
例如,如果我需要确保网站页面具有正确的基本结构,如/ html/body和/ html/head/title
Pat*_*ald 313
<xsl:if test="xpath-expression">...</xsl:if>
Run Code Online (Sandbox Code Playgroud)
所以例如
<xsl:if test="/html/body">body node exists</xsl:if>
<xsl:if test="not(/html/body)">body node missing</xsl:if>
Run Code Online (Sandbox Code Playgroud)
小智 69
请尝试以下表达式: boolean(path-to-node)
gkr*_*ers 47
帕特里克是正确的,无论是在使用中xsl:if,还是在语法中检查节点是否存在.然而,正如帕特里克的反应所暗示的那样,没有xsl等同于if-then-else,所以如果你正在寻找更像if-then-else的东西,你通常最好不要使用xsl:choose和xsl:otherwise.因此,Patrick的示例语法将起作用,但这是另一种选择:
<xsl:choose>
<xsl:when test="/html/body">body node exists</xsl:when>
<xsl:otherwise>body node missing</xsl:otherwise>
</xsl:choose>
Run Code Online (Sandbox Code Playgroud)
dav*_*pcj 13
可能更好地使用选择,不必多次输入(或可能错误)您的表达式,并允许您遵循其他不同的行为.
我经常使用count(/html/body) = 0,因为节点的特定数量比集合更有趣.例如......当出现意外多于1个与您的表达式匹配的节点时.
<xsl:choose>
<xsl:when test="/html/body">
<!-- Found the node(s) -->
</xsl:when>
<!-- more xsl:when here, if needed -->
<xsl:otherwise>
<!-- No node exists -->
</xsl:otherwise>
</xsl:choose>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
314070 次 |
| 最近记录: |