有条件地调用模板xslt

时间:2017-02-02 23:02:22

标签: xslt xslt-1.0

第一篇文章,希望有人可以提供帮助。基本上,我通过xslt输出pdf,我的问题是我有一个表,如果该表包含内容,我只想生成一个表。我相信我的调用模板总是会启动,因此即使没有内容,也总是至少带回一个表头行。我不希望桌子出现。提前谢谢。

Unable to find type [System.IO.Compression.ZipFile].
+ CategoryInfo          : ParserError: (:) [],        ParentContainsErrorRecordException
+ FullyQualifiedErrorId : TypeNotFound

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:a="http://www.appian.com/ae/types/2009">

          <div id="processVariables">
      <xsl:call-template name="applicantDetails"  />
      </div>
      <xsl:call-template name="pp" />
      <xsl:call-template name="processMilestoneList" />
      <xsl:call-template name="processCommentList" />
    </div>
    <div id="pageFooter" />
  </body>
</html>

1 个答案:

答案 0 :(得分:0)

<xsl:if test="//processCommentList/item">
    <xsl:call-template name="processCommentList"/>
</xsl:if>

如果没有// processCommentList / item,则此测试将失败,因此不会调用模板。

如果processCommentList不存在则为空,你也可以做更递归的事情:

<xsl:apply-templates select="//processCommentList"/>
<xsl:template match="processCommentList[count(item)]>
    <table>...etc
        <xsl:apply-templates select="item"/>
    </table> ... etc
</xsl:template>
<xsl:template match="item">
    <tr>...etc...</tr>
</xsl:template>