当前位置: 首页 > 知识库问答 >
问题:

如何在XSL中为每个组使用

鲜于凯歌
2023-03-14

我还在学习如何使用XSL对每个组进行分组?(按国家)我正在尝试使用XSL将此XML转换为另一个XML。

<?xml version="1.0" encoding="UTF-8"?>
<Person>
    <Student>
        <Info Country="England" Name="Dan" Age="20" Class="C" />
    </Student>
    <Student>
        <Info Country="England" Name="Dan" Age="20" Class="B" />

    </Student>
    <Student>
        <Info Country="England" Name="Sam" Age="20" Class="A" />
    </Student>

    <Student>
       <Info Country="Australia" Name="David" Age="22" Class="D" />
    </Student>
    <Student>
        <Info Country="Australia" Name="David" Age="22" Class="A" />
    </Student>

</Person>

共有1个答案

曹波鸿
2023-03-14

如果你按国家分组,你会从例如。

<xsl:template match="Person">
  <xsl:for-each-group select="Student/Info" group-by="@Country">
    <country name="{current-grouping-key()}">

    </country>
  </xsl:for-each-group>
</xsl:template>

然后,您必须决定是否要进一步将每个国家组中的信息元素分组,例如按名称分组:

<xsl:template match="Person">
  <xsl:for-each-group select="Student/Info" group-by="@Country">
    <country name="{current-grouping-key()}">
      <xsl:for-each-group select="current-group()" group-by="@Name">
        <student name="{current-grouping-key()}">
          <classes>
            <xsl:for-each select="current-group()">
              <class><xsl:value-of select="@Class"/></class>
            </xsl:for-each>
          </classes>
        </student>
      </xsl:for-each-group>
    </country>
  </xsl:for-each-group>
</xsl:template>
 类似资料:
  • 我有一个xml: 现在我有了一个xslt: 现在我正在寻找一个if语句,在xsl中为每个语句,它说:如果主要提供类型="狩猎"做A,否则做B 我该怎么做? 我试过了 以下是xml:http://frisokc111.111.axc.nl/feed/nl.xml 谢谢!

  • 我有一个XML文件,如下所示 我的XSL看起来像这样 然后,我尝试达到节点内元素的每个值 它没有显示值!我认为这是一种正确的方式。首先,我有for each select=“//警报,然后我有<代码> 请帮忙。

  • 我想在SQL中创建一个数据查询,以递增的方式对行组进行编号,按公共日期时间分组,并在下一个日期时间保持“组编号”递增,以此类推。正如我在使用partition by语句时所看到的那样,不能为每个组重置这些“组号”。以下是我的示例数据: 我用于获取这些结果的查询是: 所以基本上,看看RowFilter列,我得到了每个分区的唯一行号。我实际需要的是,对于每个分区,RowFilter列应该看起来像所需的

  • 问题内容: 在C#中将是这样的: Linq-To-Sql将其转换为以下T-SQL代码: 但是它与MySQL不兼容。 问题答案: 当我写 有用。在其他RDBMS中,IIRC这样的语句是不可能的,因为不属于任何组合键的不属于分组键的列就被引用了。 这种“怪癖”的行为与我想要的行为非常接近。所以我用它来获得想要的结果:

  • 问题内容: 我有一张桌子,如下所示: 这是样本 的汇总功能仅允许我获得每个方面的最高分。我想查询以获得每个人的最高2分,我该怎么办? 我的预期输出是 问题答案: SQLFiddle演示

  • 我正在使用FOP生成pdf,我想在pdf中包含每个页面的边框。我正在使用XSLT 2.0。 是否有任何方法或任何属性或任何标记为XSL中的每个页面创建边框?