gpt4 book ai didi

XSLT 分组和子分组

转载 作者:行者123 更新时间:2023-12-01 05:10:45 27 4
gpt4 key购买 nike

我有以下代码:

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" />

<xsl:key name="categories" match="Category" use="." />
<xsl:key name="clients" match="Category" use ="Category/Client" />

<xsl:template match="/">
<ul id="red" class="treeview-red">
<xsl:for-each select="/Promotions/Promotion/Category[
generate-id(.) = generate-id(key('categories', .)[1])
]">
<xsl:variable name="cname" select="." />

<li>
<span>
<xsl:value-of select="$cname" />
</span>

<xsl:for-each select="/Promotions/Promotion[Category=$cname]">
<ul>
<li>
<span>
<xsl:value-of select="Client" />
</span>
</li>
<ul>
<li>
<span>
<xsl:value-of select="Title" />
</span>
</li>
</ul>
</ul>
</xsl:for-each>
</li>
</xsl:for-each>

</ul>
</xsl:template>
</xsl:stylesheet>

我的 XML:

<Promotions>
<Promotion>
<Category>Arts &amp; Entertainment</Category>
<Client>Client 1</Client>
<Title>Get your Free 2</Title>
</Promotion>
<Promotion>
<Category>Arts &amp; Entertainment</Category>
<Client>Client 1</Client>
<Title>Get your Free 4</Title>
</Promotion>
<Promotion>
<Category>Arts &amp; Entertainment</Category>
<Client>Client 1</Client>
<Title>Get your Free 5</Title>
</Promotion>
<Promotion>
<Category>Community &amp; Neighborhood</Category>
<Client>Client 2</Client>
<Title>Get your Free 1</Title>
</Promotion>
<Promotion>
<Category>Education</Category>
<Client>Client 3</Client>
<Title>Get Your Free 3</Title>
</Promotion>
</Promotions>

它输出以下内容:

<ul id="red" class="treeview-red">
<li><span>Arts &amp; Entertainment</span><ul>
<li><span>Client 1</span></li>
<ul>
<li><span>Get your Free 2</span></li>
</ul>
</ul>
<ul>
<li><span>Client 1</span></li>
<ul>
<li><span>Get your Free 4</span></li>
</ul>
</ul>
<ul>
<li><span>Client 1</span></li>
<ul>
<li><span>Get your Free 5</span></li>
</ul>
</ul>
</li>
<li><span>Community &amp; Neighborhood</span><ul>
<li><span>Client 2</span></li>
<ul>
<li><span>Get your Free 1</span></li>
</ul>
</ul>
</li>
<li><span>Education</span><ul>
<li><span>Client 3</span></li>
<ul>
<li><span>Get Your Free 3</span></li>
</ul>
</ul>
</li>
</ul>

我希望输出先按类别分组,然后再按每个类别的客户分组,对此的任何见解都会很棒:

<ul id="red" class="treeview-red">
<li><span>Arts &amp; Entertainment</span><ul>
<li><span>Client 1</span></li>
<ul>
<li><span>Get your Free 2</span></li>
</ul>
<ul>
<li><span>Get your Free 4</span></li>
</ul>
<ul>
<li><span>Get your Free 5</span></li>
</ul>
</ul>
</li>
<li><span>Community &amp; Neighborhood</span><ul>
<li><span>Client 2</span></li>
<ul>
<li><span>Get your Free 1</span></li>
</ul>
</ul>
</li>
<li><span>Education</span><ul>
<li><span>client 3</span></li>
<ul>
<li><span>Get Your Free 3</span></li>
</ul>
</ul>
</li>
</ul>

基本上在按类别分组后,我只想看到该类别下的一个客户以及该类别中该客户的每个促销事件。

最佳答案

如果没有看到 XML 输入,很难建议对样式表进行更改,所以目前我所能做的就是查看 http://www.biglist.com/lists/xsl-list/archives/200101/msg00070.html作为使用 XSLT 1.0 进行多级分组的示例。

[编辑]:这是应用两级 Muenchian 分组的方法:

<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">

<xsl:output method="html" indent="yes"/>

<xsl:key name="k1" match="Promotion" use="Category"/>
<xsl:key name="k2" match="Promotion" use="concat(Category, '|', Client)"/>

<xsl:template match="Promotions">
<ul id="red" class="treeview-red">
<xsl:for-each select="Promotion[generate-id() = generate-id(key('k1', Category)[1])]">
<li>
<span>
<xsl:value-of select="Category"/>
</span>
<xsl:for-each select="key('k1', Category)[generate-id() = generate-id(key('k2', concat(Category, '|', Client))[1])]">
<ul>
<li>
<span>
<xsl:value-of select="Client"/>
</span>
<xsl:for-each select="key('k2', concat(Category, '|', Client))">
<ul>
<li>
<span>
<xsl:value-of select="Title"/>
</span>
</li>
</ul>
</xsl:for-each>
</li>
</ul>
</xsl:for-each>
</li>
</xsl:for-each>
</ul>
</xsl:template>

</xsl:stylesheet>

关于XSLT 分组和子分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2202774/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com