我们有以下XSL行
<w:tr wsp:rsidR="00EC796A" wsp:rsidRPr="00E83E5E" wsp:rsidTr="00CA49A2">
<w:tc>
<w:p wsp:rsidR="00EC796A" wsp:rsidRPr="00E83E5E" wsp:rsidRDefault="007D26AB" wsp:rsidP="00CA49A2">
<w:r wsp:rsidRPr="00E83E5E">
<w:t>
<xsl:text>EXPORT PRODUCTS</xsl:text>
</w:t>
</w:r>
</w:p>
</w:tc>
<w:tc>
<xsl:apply-templates select="ns0:Export_Products" />
</w:tc>
</w:tr>
但是如果Export Products为null或count为0,我想让这行的可见性为false。我怎样才能做到这一点? 顺便说一下,如果需要,模板就像下面一样:
<xsl:template match="/ns0:ReportWordData/ns0:Export_Report/ns0:Export_Products">
<ns0:Export_Products>
<xsl:for-each select="@ns0:*|@*[namespace-uri()='']">
<xsl:attribute name="{name()}" namespace="{namespace-uri()}">
<xsl:value-of select="." />
</xsl:attribute>
</xsl:for-each>
<xsl:apply-templates select="ns0:Product" />
</ns0:Export_Products>
</xsl:template>
代码背后:
Dim myXslTransform As New XslCompiledTransform(False)
myXslTransform.Load(GetType(TemplateForExport))
myXslTransform.Transform(xmlFilePath, wordFilePath)
因此,我认为让它不可见应该在运行时。或者可以有另一种解决方案。
通常,word文件是这样的:
如果没有值,我们会喜欢这些行。
实际上我们可以通过更改模板来实现这一目标,但这样我们必须创建数千个模板,因为有很多可能性。
答案 0 :(得分:1)
您可以使用xsl:if
,例如
<xsl:if test="ns0:Product">
<xsl:text>EXPORT PRODUCTS</xsl:text>
</xsl:if>