使用 xslt 2.0 动态生成 header
Generate header dynamically using xslt 2.0
我有xml来源:
<Report_Data>
<Report_Entry>
<Journal>
<Ledger>1<Ledger>
</Journal>
</Report_Entry>
<Report_Entry>
<Journal>
<Ledger>1<Accounts>
</Journal>
<Journal>
<Ledger>2<Accounts>
</Journal>
</Report_Entry>
<Report_Data>
根据返回的分类帐数量,我想创建列。根据示例数据源,第二个报表条目返回的分类帐数量最多,因此我的 header 列应该有 2:
预期输出示例:
Ledger|Ledger
到目前为止我所做的是
<xsl:if test="count(Report_Data/Report_Entry/Journal/Ledger) > 1">
<xsl:for-each select="Report_Data/Report_Entry/wd:Journal/Ledger">
<xsl:text>Ledger</xsl:text>
<xsl:if test="position()!=last()">
<xsl:value-of select="$delimiter"/>
</xsl:if>
</xsl:for-each>
</xsl:if>
但是输出不正确,它返回了 3 列 headers 总结了所有返回的分类帐值。
Ledger|Ledger|Ledger
能否帮助确定分类帐值的最大数量,然后基于该值创建列?
非常感谢
使用
<xsl:template match="Report_Data">
<xsl:value-of
select="Report_Entry[count(.//Ledger) = max(../Report_Entry/count(.//Ledger))]//Ledger/local-name()" separator="|"/>
</xsl:template>
我有xml来源:
<Report_Data>
<Report_Entry>
<Journal>
<Ledger>1<Ledger>
</Journal>
</Report_Entry>
<Report_Entry>
<Journal>
<Ledger>1<Accounts>
</Journal>
<Journal>
<Ledger>2<Accounts>
</Journal>
</Report_Entry>
<Report_Data>
根据返回的分类帐数量,我想创建列。根据示例数据源,第二个报表条目返回的分类帐数量最多,因此我的 header 列应该有 2: 预期输出示例:
Ledger|Ledger
到目前为止我所做的是
<xsl:if test="count(Report_Data/Report_Entry/Journal/Ledger) > 1">
<xsl:for-each select="Report_Data/Report_Entry/wd:Journal/Ledger">
<xsl:text>Ledger</xsl:text>
<xsl:if test="position()!=last()">
<xsl:value-of select="$delimiter"/>
</xsl:if>
</xsl:for-each>
</xsl:if>
但是输出不正确,它返回了 3 列 headers 总结了所有返回的分类帐值。
Ledger|Ledger|Ledger
能否帮助确定分类帐值的最大数量,然后基于该值创建列?
非常感谢
使用
<xsl:template match="Report_Data">
<xsl:value-of
select="Report_Entry[count(.//Ledger) = max(../Report_Entry/count(.//Ledger))]//Ledger/local-name()" separator="|"/>
</xsl:template>