Debugging 将空文档片段视为空结果
将包含空文档片段的变量视为空变量的最干净的方法是什么 我有以下代码Debugging 将空文档片段视为空结果,debugging,xslt,is-empty,type-coercion,documentfragment,Debugging,Xslt,Is Empty,Type Coercion,Documentfragment,将包含空文档片段的变量视为空变量的最干净的方法是什么 我有以下代码 <xsl:variable name="embedded-examples" select="d:example"/> <xsl:variable name="external-examples"> <xsl:call-template name="external-examples"/> </xsl:variable> <xsl:variable name="e
<xsl:variable name="embedded-examples" select="d:example"/>
<xsl:variable name="external-examples">
<xsl:call-template name="external-examples"/>
</xsl:variable>
<xsl:variable name="examples" select="$embedded-examples | $external-examples"/>
<xsl:if test="$examples">
<d:section>
<d:title>
<xsl:text>Examples</xsl:text>
</d:title>
<xsl:for-each select="$examples">
<xsl:copy-of select="."/>
</xsl:for-each>
</d:section>
</xsl:if>
例子
模板呢
<xsl:template name="external-examples">
<xsl:variable name="example-comments" select="$example-docs//comment()"/>
<xsl:for-each select="$example-comments">
<d:example>
<d:title><xsl:value-of select="normalize-space(.)"/></d:title>
</d:example>
</xsl:for-each>
</xsl:template>
问题是,当estenal examples
中的变量为空时,xsl:for each
循环不会运行,但它无论如何会生成一个空文档片段,使测试test=“$examples”
通过而不是失败
我应该在模板中执行什么操作,以确保当
示例注释为空时,模板不会返回任何内容?使用谓词检查子节点:
<xsl:for-each select="$example-comments[count(child::node() ) > 0]">
...
</xsl:for-each>
...