我有xlst,我只想在从java提供它的值(用transformer.setParameter(paramName, paramValue)
设置)时才调用模板。我使用的是saxon 9 HE。
这是我的样式表
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="2.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xsl:output method="xml" indent="yes" omit-xml-declaration="no"/>
<xsl:strip-space elements="*"/>
<xsl:param name="supplierLogo" as="xs:string" required="no" select="''"/>
<!-- add logo -->
<xsl:template match="/INVOICES/INVOICE/SUPPLIER_LOGO">
<xsl:if test="not($supplierLogo = '')">
<SUPPLIER_LOGO>
<xsl:value-of select="$supplierLogo"/>
</SUPPLIER_LOGO>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
答案 0 :(得分:0)
从身份转换模板
开始<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
然后使用
<xsl:template match="/INVOICES/INVOICE/SUPPLIER_LOGO[$supplierLogo = ''"/>
<xsl:template match="/INVOICES/INVOICE/SUPPLIER_LOGO[$supplierLogo != '']">
<xsl:copy>
<xsl:value-of select="$supplierLogo"/>
</xsl:copy>
</xsl:template>