使用 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>