Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSLT在第二级上没有分组_Xslt_Muenchian Grouping - Fatal编程技术网

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 <

我需要使用xslt转换一些数据。基本上,我需要按客户分组信息。之后,应按客户级别显示所有日期和时间值。我必须提到,我不必只显示不同的值。


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>