如何检查我的阻止/选择是否没有文本节点,然后显示“不是结果”
<xsl:choose>
<xsl:when test="@pass='0' or @pass='1'">
<fo:block padding-top="1cm" font-weight="bold" margin-bottom="0.2cm">Header</fo:block> <fo:block margin-top="0.2cm" margin-bottom="0.2cm" border-bottom="1px solid #e1e1e1">
</fo:block>
<fo:block margin-top="0.2cm" margin-bottom="0.2cm" padding-left="5px" padding-right="5px" padding-top="1px">
<xsl:apply-templates select="detail/katalog/frage[@ko='1' and @passed='0']" />
<xsl:apply-templates select="detail/katalog/frage/options" />
<xsl:apply-templates select="detail/katalog/matrix/frage/options" />
<xsl:apply-templates select="detail/katalog/clusterArea/clusterFrage[@ko='1' and @passed='0']" />
</fo:block>
我试过这个,但它不起作用。
<xsl:if test="(not(detail/katalog/frage[@ko='1' and @passed='0']) and not(detail/katalog/clusterArea/clusterFrage[@ko='1' and @passed='0']) and not(detail/katalog/frage/options) and not(detail/katalog/matrix/frage/options))">
<fo:block>
Not Results
</fo:block>
</xsl:if>
非常感谢! PR
答案 0 :(得分:0)
如果您检查的元素存在,但您当前的检查detail/katalog/frage[@ko='1' and @passed='0']
将返回true,因为这只是检查元素本身是否存在,无论它是否具有子节点
所以,你想做这样的事......
not(detail/katalog/frage[@ko='1' and @passed='0']/text())
但是,您还需要注意只有空白的节点,所以您可能需要像这样增加检查...
not(detail/katalog/frage[@ko='1' and @passed='0']/text()[normalize-space()])
或者,您可以使用xsl:strip-space
<xsl:strip-space elements="*" />