带有 CSV 可选模板的 XSLT header
XSLT with optional template for CSV header
我是 xslt 的新手,希望得到答案。
我有一个 xslt 文件并用它来编写一个 csv。
第一次写 csv,我想要一个 header。
但是当我追加 csv 的下一个内容时,我想删除 header.
下面是当前的xsl。
如何使 xsl 模板可选显示?
<xsl:template name="Header" match="/">
<xsl:text>Id,Barcode,Name</xsl:text>
<xsl:apply-templates select="abc:Info/Panel" />
</xsl:template>
<xsl:template name="Panel" match="abc:Info/Panel">
<xsl:for-each select="Board/Component">
<xsl:value-of select="../../../../../@Id"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="../../../../../@Barcode"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="../../../../../@Name"/>
<xsl:text>,</xsl:text>
</xsl:for-each>
</xsl:template>
将 xsl:param 添加到 xslt,例如:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:abc="some-namespace"
version="1.0"
>
<xsl:param name="writeHeader" select="'0'"/>
<xsl:template match="/">
<xsl:if test="$writeHeader='1'">
<xsl:text>Id,Barcode,Name</xsl:text>
</xsl:if>
<xsl:apply-templates select="abc:Info/Panel" />
</xsl:template>
<xsl:template match="abc:Info/Panel">
<xsl:for-each select="Board/Component">
<xsl:value-of select="../../../../../@Id"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="../../../../../@Barcode"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="../../../../../@Name"/>
<xsl:text>,</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
如果你想写 header,用参数调用你的 xsl-transformation:writeHeader=1
我是 xslt 的新手,希望得到答案。
我有一个 xslt 文件并用它来编写一个 csv。 第一次写 csv,我想要一个 header。 但是当我追加 csv 的下一个内容时,我想删除 header.
下面是当前的xsl。 如何使 xsl 模板可选显示?
<xsl:template name="Header" match="/">
<xsl:text>Id,Barcode,Name</xsl:text>
<xsl:apply-templates select="abc:Info/Panel" />
</xsl:template>
<xsl:template name="Panel" match="abc:Info/Panel">
<xsl:for-each select="Board/Component">
<xsl:value-of select="../../../../../@Id"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="../../../../../@Barcode"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="../../../../../@Name"/>
<xsl:text>,</xsl:text>
</xsl:for-each>
</xsl:template>
将 xsl:param 添加到 xslt,例如:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:abc="some-namespace"
version="1.0"
>
<xsl:param name="writeHeader" select="'0'"/>
<xsl:template match="/">
<xsl:if test="$writeHeader='1'">
<xsl:text>Id,Barcode,Name</xsl:text>
</xsl:if>
<xsl:apply-templates select="abc:Info/Panel" />
</xsl:template>
<xsl:template match="abc:Info/Panel">
<xsl:for-each select="Board/Component">
<xsl:value-of select="../../../../../@Id"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="../../../../../@Barcode"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="../../../../../@Name"/>
<xsl:text>,</xsl:text>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
如果你想写 header,用参数调用你的 xsl-transformation:writeHeader=1