如何使XSL行不可见?

时间:2016-06-27 11:12:03

标签: xml vb.net xslt xpath

我们有以下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文件是这样的:

enter image description here

如果没有值,我们会喜欢这些行。

实际上我们可以通过更改模板来实现这一目标,但这样我们必须创建数千个模板,因为有很多可能性。

1 个答案:

答案 0 :(得分:1)

您可以使用xsl:if,例如

<xsl:if test="ns0:Product">
    <xsl:text>EXPORT PRODUCTS</xsl:text>
</xsl:if>