XSLT在第二级上没有分组
我需要使用xslt转换一些数据。基本上,我需要按客户分组信息。之后,应按客户级别显示所有日期和时间值。我必须提到,我不必只显示不同的值。XSLT在第二级上没有分组,xslt,muenchian-grouping,Xslt,Muenchian Grouping,我需要使用xslt转换一些数据。基本上,我需要按客户分组信息。之后,应按客户级别显示所有日期和时间值。我必须提到,我不必只显示不同的值。 1. 星期一 10:00 2. 星期一 12:00 1. 星期二 12:00 输出应该是 <Clients> <Customer> <Id> 1 </Id> <Days> <Day> Monday </Day> <Hour> 10:00 <
1.
星期一
10:00
2.
星期一
12:00
1.
星期二
12:00
输出应该是
<Clients>
<Customer>
<Id> 1 </Id>
<Days>
<Day> Monday </Day>
<Hour> 10:00 <Hour>
<Day> Tuesday</Day>
<Hour> 12:00 <Hour>
</Days>
</Customer>
<Customer>
<Id> 2 </Id>
<Days>
<Day> Monday </Day>
<Hour> 12:00 <Hour>
</Days>
</Customer>
</Clients>
1.
星期一
10:00
星期二
12:00
2.
星期一
12:00
非常感谢各位只需使用Muenchian分组进行分组,定义一个键,然后使用
键
功能查找组中的所有项目:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:key name="c-by-id" match="XMLLINE" use="Customer"/>
<xsl:template match="XMLines">
<Clients>
<xsl:apply-templates select="XMLLINE[generate-id() = generate-id(key('c-by-id', Customer)[1])]"/>
</Clients>
</xsl:template>
<xsl:template match="XMLLINE">
<Customer>
<Id><xsl:value-of select="Customer"/></Id>
<Days>
<xsl:copy-of select="key('c-by-id', Customer)/*[self::Day | self::Hour]"/>
</Days>
</Customer>
</xsl:template>
</xsl:stylesheet>
转变
<XMLines>
<XMLLINE>
<Customer>1</Customer>
<Day> Monday </Day>
<Hour> 10:00 </Hour>
</XMLLINE>
<XMLLINE>
<Customer>2</Customer>
<Day> Monday</Day>
<Hour> 12:00 </Hour>
</XMLLINE>
<XMLLINE>
<Customer>1</Customer>
<Day> Tuesday</Day>
<Hour> 12:00 </Hour>
</XMLLINE>
</XMLines>
1.
星期一
10:00
2.
星期一
12:00
1.
星期二
12:00
进入
1.
星期一
10:00
星期二
12:00
2.
星期一
12:00
StackExchange上有很多解决方案可用于此任务。到目前为止你试过什么?你的具体问题是什么?
<XMLines>
<XMLLINE>
<Customer>1</Customer>
<Day> Monday </Day>
<Hour> 10:00 </Hour>
</XMLLINE>
<XMLLINE>
<Customer>2</Customer>
<Day> Monday</Day>
<Hour> 12:00 </Hour>
</XMLLINE>
<XMLLINE>
<Customer>1</Customer>
<Day> Tuesday</Day>
<Hour> 12:00 </Hour>
</XMLLINE>
</XMLines>
<Clients>
<Customer>
<Id>1</Id>
<Days>
<Day> Monday </Day>
<Hour> 10:00 </Hour>
<Day> Tuesday</Day>
<Hour> 12:00 </Hour>
</Days>
</Customer>
<Customer>
<Id>2</Id>
<Days>
<Day> Monday</Day>
<Hour> 12:00 </Hour>
</Days>
</Customer>
</Clients>