Xml 如何使用XSLT2.0检查具有当前节点的w:r/w:t子代的所有子代::w:p?
这是我的Xml文档(小snippt)Xml 如何使用XSLT2.0检查具有当前节点的w:r/w:t子代的所有子代::w:p?,xml,xslt,xpath,xslt-2.0,Xml,Xslt,Xpath,Xslt 2.0,这是我的Xml文档(小snippt) 表11:Tanjavur NREGS活动 第四章:调查结果和分析 现在假设,是我当前的处理节点。我的情况是, 如果它(当前处理节点)具有多个子且子的子代,则只有我必须在中执行某些功能 现在我测试了一下 <xsl:choose> <xsl:when test="descendant::w:p[2]"> <!-- here i have to perform some work
表11:Tanjavur NREGS活动
第四章:调查结果和分析
现在假设,
是我当前的处理节点。我的情况是,
如果它(当前处理节点)具有多个子
且子
的子代,则只有我必须在
中执行某些功能
现在我测试了一下
<xsl:choose>
<xsl:when test="descendant::w:p[2]">
<!-- here i have to perform some work -->
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
在我上面的xml文档中,当前处理节点有两个子节点
。但是,只有一个后代有子女。另一个后代
为无
但是我上面的xslt条件在这种情况下是正确的。如何检查两个后代是否都有
子代
请引导我摆脱这个问题…使用
<xsl:when test="count(descendant::w:p[w:r/w:t]) > 1">
多个具有子级的后代
转换为XPath的当前节点的要求:
- 具有子体
-->子体::w:p
- 那个
有一个子
,它有一个子
-->w:p[w:r/w:t]
- 有多个这样的子体-->
count(…)>1
如果有了孩子,那么只有我需要做一些
内部函数
更有效的解决方案:用作条件指令的测试
属性,或者更好地用作匹配模式的谓词:
descendant::w:p[w:r/w:t][2]
只有当上下文节点至少有两个
w:p
子节点时,上面的表达式才是true()
,这样每个子节点都有一个w:r
子节点,而该子节点本身有一个w:t
子节点。+1-如果有多个子节点,则必须有第二个。
descendant::w:p[w:r/w:t][2]