xslt基于元素分组

时间:2012-11-12 12:42:22

标签: xslt grouping xslt-1.0

我有一个关于在xml中分组的问题。

  1. 第一个问题是xml没有分组行的结构,顺序没问题。
  2. 第二个问题是,如果分组元素与前一个元素相同,则不会重复这些元素。
  3. 分组必须在BodyCustQuotationTrans -detaillines上,第一级是UnitID,第二级是objectgroupID。

    非常感谢有人可以提供帮助!

    输入xml:

        <?xml version="1.0" encoding="UTF-8"?>
    <Report Name="SalesQuotation" Caption="Offerte" Language="EN">
      <Quotation>
        <CustQuotationJour_DeliveryName>Testcustomer</CustQuotationJour_DeliveryName>
        <CustQuotationJour_DeliveryAddress>101 street 3293 CITY</CustQuotationJour_DeliveryAddress>
        <QuotationTxt>Quotation</QuotationTxt>
      </Quotation>
      <Lines>
        <BodyCustQuotationTrans>
          <ItemId>1006055</ItemId>
          <CustQuotationTrans_Name>Laufen Pro kunststof bad 180x80cm WIT ZO</CustQuotationTrans_Name>
          <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
          <salesUnitTxt>ST</salesUnitTxt>
          <CustQuotationTrans_SalesPrice>511,00</CustQuotationTrans_SalesPrice>
          <UnitID>Bathroom</UnitID>
          <UnitNumber>1,00</UnitNumber>
          <ObjectgroupID>Bath</ObjectgroupID>
        </BodyCustQuotationTrans>
        <BodyCustQuotationTrans>
          <ItemId>1036625</ItemId>
          <CustQuotationTrans_Name>Set Laufen badpoten (instelbaar) voor Pr</CustQuotationTrans_Name>
          <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
          <salesUnitTxt>ST</salesUnitTxt>
          <CustQuotationTrans_SalesPrice>38,00</CustQuotationTrans_SalesPrice>
          <UnitID>
          </UnitID>
          <UnitNumber>
          </UnitNumber>
          <ObjectgroupID>
          </ObjectgroupID>
        </BodyCustQuotationTrans>
        <BodyCustQuotationTrans>
          <ItemId>1038952</ItemId>
          <CustQuotationTrans_Name>Chroom badafvoer-overloopkomb.1 ½ met wa</CustQuotationTrans_Name>
          <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
          <salesUnitTxt>ST</salesUnitTxt>
          <CustQuotationTrans_SalesPrice>56,90</CustQuotationTrans_SalesPrice>
          <UnitID>
          </UnitID>
          <UnitNumber>
          </UnitNumber>
          <ObjectgroupID>
          </ObjectgroupID>
        </BodyCustQuotationTrans>
        <BodyCustQuotationTrans>
          <ItemId>1007857</ItemId>
          <CustQuotationTrans_Name>Grohtherm 2000 badthermostaat 15cm chr z</CustQuotationTrans_Name>
          <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
          <salesUnitTxt>ST</salesUnitTxt>
          <CustQuotationTrans_SalesPrice>353,65</CustQuotationTrans_SalesPrice>
          <UnitID>
          </UnitID>
          <UnitNumber>
          </UnitNumber>
          <ObjectgroupID>
          </ObjectgroupID>
        </BodyCustQuotationTrans>
        <BodyCustQuotationTrans>
          <ItemId>2061780</ItemId>
          <CustQuotationTrans_Name>Easy Drain COMPACT 50 1000mm met rooster</CustQuotationTrans_Name>
          <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
          <salesUnitTxt>ST</salesUnitTxt>
          <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
          <UnitID>
          </UnitID>
          <UnitNumber>1,00</UnitNumber>
          <ObjectgroupID>Shower</ObjectgroupID>
        </BodyCustQuotationTrans>
        <BodyCustQuotationTrans>
          <ItemId>2062352</ItemId>
          <CustQuotationTrans_Name>Easy 2 Seal afdichtingspasta voor o.a. E</CustQuotationTrans_Name>
          <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
          <salesUnitTxt>ST</salesUnitTxt>
          <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
          <UnitID>
          </UnitID>
          <UnitNumber>
          </UnitNumber>
          <ObjectgroupID>
          </ObjectgroupID>
        </BodyCustQuotationTrans>
        <BodyCustQuotationTrans>
          <ItemId>1007831</ItemId>
          <CustQuotationTrans_Name>Grohtherm 2000 douchethermostaat 15cm ch</CustQuotationTrans_Name>
          <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
          <salesUnitTxt>ST</salesUnitTxt>
          <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
          <UnitID>
          </UnitID>
          <UnitNumber>
          </UnitNumber>
          <ObjectgroupID>
          </ObjectgroupID>
        </BodyCustQuotationTrans>
        <BodyCustQuotationTrans>
          <ItemId>4044377</ItemId>
          <CustQuotationTrans_Name>Vasco Arabis Bathroomradiator typ HDRM33</CustQuotationTrans_Name>
          <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
          <salesUnitTxt>ST</salesUnitTxt>
          <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
          <UnitID>
          </UnitID>
          <UnitNumber>1,00</UnitNumber>
          <ObjectgroupID>Radiator</ObjectgroupID>
        </BodyCustQuotationTrans>
        <BodyCustQuotationTrans>
          <ItemId>4044689</ItemId>
          <CustQuotationTrans_Name>Vasco designventielset met thermost.knop</CustQuotationTrans_Name>
          <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
          <salesUnitTxt>ST</salesUnitTxt>
          <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
          <UnitID>
          </UnitID>
          <UnitNumber>
          </UnitNumber>
          <ObjectgroupID>
          </ObjectgroupID>
        </BodyCustQuotationTrans>
        <BodyCustQuotationTrans>
          <ItemId>1033033</ItemId>
          <CustQuotationTrans_Name>GEBERIT DUOFIX, DE ECHTE!!!</CustQuotationTrans_Name>
          <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
          <salesUnitTxt>ST</salesUnitTxt>
          <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
          <UnitID>Toiletruim</UnitID>
          <UnitNumber>1,00</UnitNumber>
          <ObjectgroupID>Closet</ObjectgroupID>
        </BodyCustQuotationTrans>
        <BodyCustQuotationTrans>
         <ItemId>1033358</ItemId>
          <CustQuotationTrans_Name>Geberit bedieningsplaat Samba frontbed.</CustQuotationTrans_Name>
          <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
          <salesUnitTxt>ST</salesUnitTxt>
          <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
          <UnitID>
          </UnitID>
          <UnitNumber>
          </UnitNumber>
          <ObjectgroupID>
          </ObjectgroupID>
        </BodyCustQuotationTrans>
        <BodyCustQuotationTrans>
          <ItemId>1027975</ItemId>
          <CustQuotationTrans_Name>Plaatstalen uitstortgootsteen 51x36 wit</CustQuotationTrans_Name>
          <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
          <salesUnitTxt>ST</salesUnitTxt>
          <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
          <UnitID>Kitchen</UnitID>
          <UnitNumber>1,00</UnitNumber>
          <ObjectgroupID>Sinc</ObjectgroupID>
        </BodyCustQuotationTrans>
        <BodyCustQuotationTrans>
          <ItemId>1027988</ItemId>
          <CustQuotationTrans_Name>Alape emmerrooster aluminium kleur voor</CustQuotationTrans_Name>
          <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
          <salesUnitTxt>ST</salesUnitTxt>
          <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
          <UnitID>
          </UnitID>
          <UnitNumber>
          </UnitNumber>
          <ObjectgroupID>
          </ObjectgroupID>
        </BodyCustQuotationTrans>
        <BodyCustQuotationTrans>
          <ItemId>1039264</ItemId>
          <CustQuotationTrans_Name>Syfon universeel 1 1/2"x 40 mm. Mc.alpin</CustQuotationTrans_Name>
          <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
          <salesUnitTxt>ST</salesUnitTxt>
          <CustQuotationTrans_SalesPrice>9,90</CustQuotationTrans_SalesPrice>
          <UnitID_LABEL>Unit ID</UnitID_LABEL>
          <UnitID>
          </UnitID>
          <UnitNumber>
          </UnitNumber>
          <ObjectgroupID>
          </ObjectgroupID>
        </BodyCustQuotationTrans>
      </Lines>
      <Totals>
        <CustQuotationJour_SalesBalance>5.082,19</CustQuotationJour_SalesBalance>
        <CustQuotationJour_EndDisc>0,00</CustQuotationJour_EndDisc>
        <CustQuotationJour_SumMarkup>0,00</CustQuotationJour_SumMarkup>
        <CustQuotationJour_SumTax>1.067,26</CustQuotationJour_SumTax>
        <CustQuotationJour_RoundOff>0,00</CustQuotationJour_RoundOff>
        <CustQuotationJour_QuotationAmount>6.149,45</CustQuotationJour_QuotationAmount>
        <CustQuotationJour_CurrencyCode>EUR</CustQuotationJour_CurrencyCode>
      </Totals>
    </Report>  
    

    结果必须如下:

        <?xml version="1.0" encoding="UTF-8"?>
    <Report Name="SalesQuotation" Caption="Offerte" Language="NL">
          <Quotation>
            <CustQuotationJour_DeliveryName>Testcustomer</CustQuotationJour_DeliveryName>
            <CustQuotationJour_DeliveryAddress>101 street 3293 CITY</CustQuotationJour_DeliveryAddress>
            <QuotationTxt>Quotation</QuotationTxt>
          </Quotation>
          <Lines>
              <Unit>
                    <UnitID>Bathroom</UnitID>
                    <UnitNumber>1,00</UnitNumber>
                      <Objectgroup>
                        <ObjectgroupID>Bath</ObjectgroupID>
                          <BodyCustQuotationTrans>
                            <ItemId>1006055</ItemId>
                            <CustQuotationTrans_Name>Laufen Pro kunststof bad 180x80cm WIT ZO</CustQuotationTrans_Name>
                            <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
                            <salesUnitTxt>ST</salesUnitTxt>
                            <CustQuotationTrans_SalesPrice>511,00</CustQuotationTrans_SalesPrice>
                          </BodyCustQuotationTrans>
                          <BodyCustQuotationTrans>
                            <ItemId>1036625</ItemId>
                            <CustQuotationTrans_Name>Set Laufen badpoten (instelbaar) voor Pr</CustQuotationTrans_Name>
                            <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
                            <salesUnitTxt>ST</salesUnitTxt>
                            <CustQuotationTrans_SalesPrice>38,00</CustQuotationTrans_SalesPrice>
                          </BodyCustQuotationTrans>
                          <BodyCustQuotationTrans>
                            <ItemId>1038952</ItemId>
                            <CustQuotationTrans_Name>Chroom badafvoer-overloopkomb.1 ½ met wa</CustQuotationTrans_Name>
                            <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
                            <salesUnitTxt>ST</salesUnitTxt>
                            <CustQuotationTrans_SalesPrice>56,90</CustQuotationTrans_SalesPrice>
                          </BodyCustQuotationTrans>
                          <BodyCustQuotationTrans>
                            <ItemId>1007857</ItemId>
                            <CustQuotationTrans_Name>Grohtherm 2000 badthermostaat 15cm chr z</CustQuotationTrans_Name>
                            <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
                            <salesUnitTxt>ST</salesUnitTxt>
                            <CustQuotationTrans_SalesPrice>353,65</CustQuotationTrans_SalesPrice>
                            <UnitID_LABEL>Unit ID</UnitID_LABEL>
                          </BodyCustQuotationTrans>
                        <Subtotalgroup>959,55</Subtotalgroup>
                      </Objectgroup>
                      <Objectgroup>
                        <ObjectgroupID>Shower</ObjectgroupID>
                          <BodyCustQuotationTrans>
                            <ItemId>2061780</ItemId>
                            <CustQuotationTrans_Name>Easy Drain COMPACT 50 1000mm met rooster</CustQuotationTrans_Name>
                            <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
                            <salesUnitTxt>ST</salesUnitTxt>
                            <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
                          </BodyCustQuotationTrans>
                          <BodyCustQuotationTrans>
                            <ItemId>2062352</ItemId>
                            <CustQuotationTrans_Name>Easy 2 Seal afdichtingspasta voor o.a. E</CustQuotationTrans_Name>
                            <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
                            <salesUnitTxt>ST</salesUnitTxt>
                            <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
                          </BodyCustQuotationTrans>
                          <BodyCustQuotationTrans>
                            <ItemId>1007831</ItemId>
                            <CustQuotationTrans_Name>Grohtherm 2000 douchethermostaat 15cm ch</CustQuotationTrans_Name>
                            <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
                            <salesUnitTxt>ST</salesUnitTxt>
                            <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
                          </BodyCustQuotationTrans>
                        <Subtotalgroup>60</Subtotalgroup>
                      </Objectgroup>
                      <Objectgroup>
                        <ObjectgroupID>Radiator</ObjectgroupID>
                          <BodyCustQuotationTrans>
                            <ItemId>4044377</ItemId>
                            <CustQuotationTrans_Name>Vasco Arabis Bathroomradiator typ HDRM33</CustQuotationTrans_Name>
                            <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
                            <salesUnitTxt>ST</salesUnitTxt>
                            <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
                          </BodyCustQuotationTrans>
                          <BodyCustQuotationTrans>
                            <ItemId>4044689</ItemId>
                            <CustQuotationTrans_Name>Vasco designventielset met thermost.knop</CustQuotationTrans_Name>
                            <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
                            <salesUnitTxt>ST</salesUnitTxt>
                            <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
                          </BodyCustQuotationTrans>
                        <Subtotalgroup>40</Subtotalgroup>
                      </Objectgroup>
                    <Subtotalunit>1059,55</Subtotalunit>
              </Unit>
              <Unit>
                <UnitID>Toilet</UnitID>
                <UnitNumber>1,00</UnitNumber>
                       <objectgroup>
                           <ObjectgroupID>Closet</ObjectgroupID>
                            <BodyCustQuotationTrans>
                              <ItemId>1033033</ItemId>
                              <CustQuotationTrans_Name>GEBERIT DUOFIX, DE ECHTE!!!</CustQuotationTrans_Name>
                              <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
                              <salesUnitTxt>ST</salesUnitTxt>
                              <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
                          </BodyCustQuotationTrans>
                          <BodyCustQuotationTrans>
                            <ItemId>1033358</ItemId>
                            <CustQuotationTrans_Name>Geberit bedieningsplaat Samba frontbed.</CustQuotationTrans_Name>
                            <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
                            <salesUnitTxt>ST</salesUnitTxt>
                            <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
                          </BodyCustQuotationTrans>
                        <Subtotalgroup>40</Subtotalgroup>
                     </objectgroup>
                    <Subtotalunit>40</Subtotalunit>
              </Unit>
              <Unit>
                <UnitID>Kitchen</UnitID>
                <UnitNumber>1,00</UnitNumber>
                  <objectgroup>
                    <ObjectgroupID>Sinc</ObjectgroupID>
                          <BodyCustQuotationTrans>
                            <ItemId>1027975</ItemId>
                            <CustQuotationTrans_Name>Plaatstalen uitstortgootsteen 51x36 wit</CustQuotationTrans_Name>
                            <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
                            <salesUnitTxt>ST</salesUnitTxt>
                            <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
                          </BodyCustQuotationTrans>
                          <BodyCustQuotationTrans>
                            <ItemId>1027988</ItemId>
                            <CustQuotationTrans_Name>Alape emmerrooster aluminium kleur voor</CustQuotationTrans_Name>
                            <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
                            <salesUnitTxt>ST</salesUnitTxt>
                            <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
                          </BodyCustQuotationTrans>
                          <BodyCustQuotationTrans>
                            <ItemId>1039264</ItemId>
                            <CustQuotationTrans_Name>Syfon universeel 1 1/2"x 40 mm. Mc.alpin</CustQuotationTrans_Name>
                            <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
                            <salesUnitTxt>ST</salesUnitTxt>
                            <CustQuotationTrans_SalesPrice>9,90</CustQuotationTrans_SalesPrice>
                          </BodyCustQuotationTrans>
                    <Subtotalgroup>49,90</Subtotalgroup>
                  </objectgroup>
                <Subtotalunit>49,90</Subtotalunit>
              </Unit>
      </Lines>
      <Totals>
        <CustQuotationJour_SalesBalance>5.082,19</CustQuotationJour_SalesBalance>
        <CustQuotationJour_EndDisc>0,00</CustQuotationJour_EndDisc>
        <CustQuotationJour_SumMarkup>0,00</CustQuotationJour_SumMarkup>
        <CustQuotationJour_SumTax>1.067,26</CustQuotationJour_SumTax>
        <CustQuotationJour_RoundOff>0,00</CustQuotationJour_RoundOff>
        <CustQuotationJour_QuotationAmount>6.149,45</CustQuotationJour_QuotationAmount>
        <CustQuotationJour_CurrencyCode>EUR</CustQuotationJour_CurrencyCode>
      </Totals>
    </Report>
    

1 个答案:

答案 0 :(得分:0)

看起来您正在按“顺序”元素进行分组,因此组中的元素会紧跟其分组的元素。在您的情况下,您通过 UnitID 对元素进行分组,然后通过 ObjectgroupID 对元素进行分组。因此,您需要定义两个键

<xsl:key 
  name="Unit" 
  match="BodyCustQuotationTrans[UnitID = '']" 
  use="generate-id(preceding-sibling::BodyCustQuotationTrans[UnitID != ''][1])" />
<xsl:key 
  name="Objectgroup" 
  match="BodyCustQuotationTrans[ObjectgroupID = '']" 
  use="generate-id(preceding-sibling::BodyCustQuotationTrans[ObjectgroupID != ''][1])" />

第一个键元素由第一个最前面的元素组成,并设置了 UnitID 。第二个元素由第一个最前面的元素组成,对象组设置。

首先,您将获得具有 UnitID 设置的元素,如此(使用此处的模式,因为将有多个模板匹配 BodyCustQuotationTrans

<xsl:apply-templates select="BodyCustQuotationTrans[UnitID != '']" mode="Unit" />

在此模板中,您需要获取子组,在这种情况下,单元组中的元素将具有 ObjectgroupID 设置

<xsl:apply-templates select="self::*|key('Unit', generate-id())[ObjectgroupID != '']" mode="Objectgroup" />

最后,在与此匹配的模板中,您只需使用对象组键获取组内的元素

<xsl:apply-templates select="self::*|key('Objectgroup', generate-id())" />

这是完整的XSLT

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output method="xml" indent="yes"/>
   <xsl:key name="Unit" match="BodyCustQuotationTrans[UnitID = '']" use="generate-id(preceding-sibling::BodyCustQuotationTrans[UnitID != ''][1])" />
   <xsl:key name="Objectgroup" match="BodyCustQuotationTrans[ObjectgroupID = '']" use="generate-id(preceding-sibling::BodyCustQuotationTrans[ObjectgroupID != ''][1])" />

   <xsl:template match="Lines">
      <Lines>
         <xsl:apply-templates select="BodyCustQuotationTrans[UnitID != '']" mode="Unit" />
      </Lines>
   </xsl:template>

   <xsl:template match="BodyCustQuotationTrans" mode="Unit">
      <Unit>
         <xsl:copy-of select="UnitID|UnitNumber" />
         <xsl:apply-templates select="self::*|key('Unit', generate-id())[ObjectgroupID != '']" mode="Objectgroup" />
         <subtotalunit><xsl:value-of select="sum(CustQuotationTrans_SalesPrice|key('Unit', generate-id())/CustQuotationTrans_SalesPrice)" /></subtotalunit>
      </Unit>
   </xsl:template>

   <xsl:template match="BodyCustQuotationTrans" mode="Objectgroup">
      <Objectgroup>
         <xsl:copy-of select="ObjectgroupID" />
         <xsl:apply-templates select="self::*|key('Objectgroup', generate-id())" />
         <subtotalgroup><xsl:value-of select="sum(CustQuotationTrans_SalesPrice|key('Objectgroup', generate-id())/CustQuotationTrans_SalesPrice)" /></subtotalgroup>
      </Objectgroup>
   </xsl:template>

   <xsl:template match="BodyCustQuotationTrans/UnitID|BodyCustQuotationTrans/UnitNumber|BodyCustQuotationTrans/ObjectgroupID" />

   <xsl:template match="@*|node()">
      <xsl:copy>
         <xsl:apply-templates select="@*|node()"/>
      </xsl:copy>
   </xsl:template>
</xsl:stylesheet>

应用于XML时,输出以下内容

<Report Name="SalesQuotation" Caption="Offerte" Language="EN">
   <Quotation>
      <CustQuotationJour_DeliveryName>Testcustomer</CustQuotationJour_DeliveryName>
      <CustQuotationJour_DeliveryAddress>101 street 3293 CITY</CustQuotationJour_DeliveryAddress>
      <QuotationTxt>Quotation</QuotationTxt>
   </Quotation>
   <Lines>
      <Unit>
         <UnitID>Bathroom</UnitID>
         <UnitNumber>1,00</UnitNumber>
         <Objectgroup>
            <ObjectgroupID>Bath</ObjectgroupID>
            <BodyCustQuotationTrans>
               <ItemId>1006055</ItemId>
               <CustQuotationTrans_Name>Laufen Pro kunststof bad 180x80cm WIT ZO</CustQuotationTrans_Name>
               <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
               <salesUnitTxt>ST</salesUnitTxt>
               <CustQuotationTrans_SalesPrice>511,00</CustQuotationTrans_SalesPrice>
            </BodyCustQuotationTrans>
            <BodyCustQuotationTrans>
               <ItemId>1036625</ItemId>
               <CustQuotationTrans_Name>Set Laufen badpoten (instelbaar) voor Pr</CustQuotationTrans_Name>
               <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
               <salesUnitTxt>ST</salesUnitTxt>
               <CustQuotationTrans_SalesPrice>38,00</CustQuotationTrans_SalesPrice>
            </BodyCustQuotationTrans>
            <BodyCustQuotationTrans>
               <ItemId>1038952</ItemId>
               <CustQuotationTrans_Name>Chroom badafvoer-overloopkomb.1 ½ met wa</CustQuotationTrans_Name>
               <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
               <salesUnitTxt>ST</salesUnitTxt>
               <CustQuotationTrans_SalesPrice>56,90</CustQuotationTrans_SalesPrice>
            </BodyCustQuotationTrans>
            <BodyCustQuotationTrans>
               <ItemId>1007857</ItemId>
               <CustQuotationTrans_Name>Grohtherm 2000 badthermostaat 15cm chr z</CustQuotationTrans_Name>
               <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
               <salesUnitTxt>ST</salesUnitTxt>
               <CustQuotationTrans_SalesPrice>353,65</CustQuotationTrans_SalesPrice>
            </BodyCustQuotationTrans>
            <subtotalgroup>959,55</subtotalgroup>
         </Objectgroup>
         <Objectgroup>
            <ObjectgroupID>Shower</ObjectgroupID>
            <BodyCustQuotationTrans>
               <ItemId>2061780</ItemId>
               <CustQuotationTrans_Name>Easy Drain COMPACT 50 1000mm met rooster</CustQuotationTrans_Name>
               <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
               <salesUnitTxt>ST</salesUnitTxt>
               <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
            </BodyCustQuotationTrans>
            <BodyCustQuotationTrans>
               <ItemId>2062352</ItemId>
               <CustQuotationTrans_Name>Easy 2 Seal afdichtingspasta voor o.a. E</CustQuotationTrans_Name>
               <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
               <salesUnitTxt>ST</salesUnitTxt>
               <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
            </BodyCustQuotationTrans>
            <BodyCustQuotationTrans>
               <ItemId>1007831</ItemId>
               <CustQuotationTrans_Name>Grohtherm 2000 douchethermostaat 15cm ch</CustQuotationTrans_Name>
               <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
               <salesUnitTxt>ST</salesUnitTxt>
               <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
            </BodyCustQuotationTrans>
            <subtotalgroup>60</subtotalgroup>
         </Objectgroup>
         <Objectgroup>
            <ObjectgroupID>Radiator</ObjectgroupID>
            <BodyCustQuotationTrans>
               <ItemId>4044377</ItemId>
               <CustQuotationTrans_Name>Vasco Arabis Bathroomradiator typ HDRM33</CustQuotationTrans_Name>
               <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
               <salesUnitTxt>ST</salesUnitTxt>
               <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
            </BodyCustQuotationTrans>
            <BodyCustQuotationTrans>
               <ItemId>4044689</ItemId>
               <CustQuotationTrans_Name>Vasco designventielset met thermost.knop</CustQuotationTrans_Name>
               <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
               <salesUnitTxt>ST</salesUnitTxt>
               <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
            </BodyCustQuotationTrans>
            <subtotalgroup>40</subtotalgroup>
         </Objectgroup>
         <subtotalunit>1059,55</subtotalunit>
      </Unit>
      <Unit>
         <UnitID>Toiletruim</UnitID>
         <UnitNumber>1,00</UnitNumber>
         <Objectgroup>
            <ObjectgroupID>Closet</ObjectgroupID>
            <BodyCustQuotationTrans>
               <ItemId>1033033</ItemId>
               <CustQuotationTrans_Name>GEBERIT DUOFIX, DE ECHTE!!!</CustQuotationTrans_Name>
               <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
               <salesUnitTxt>ST</salesUnitTxt>
               <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
            </BodyCustQuotationTrans>
            <BodyCustQuotationTrans>
               <ItemId>1033358</ItemId>
               <CustQuotationTrans_Name>Geberit bedieningsplaat Samba frontbed.</CustQuotationTrans_Name>
               <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
               <salesUnitTxt>ST</salesUnitTxt>
               <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
            </BodyCustQuotationTrans>
            <subtotalgroup>40</subtotalgroup>
         </Objectgroup>
         <subtotalunit>40</subtotalunit>
      </Unit>
      <Unit>
         <UnitID>Kitchen</UnitID>
         <UnitNumber>1,00</UnitNumber>
         <Objectgroup>
            <ObjectgroupID>Sinc</ObjectgroupID>
            <BodyCustQuotationTrans>
               <ItemId>1027975</ItemId>
               <CustQuotationTrans_Name>Plaatstalen uitstortgootsteen 51x36 wit</CustQuotationTrans_Name>
               <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
               <salesUnitTxt>ST</salesUnitTxt>
               <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
            </BodyCustQuotationTrans>
            <BodyCustQuotationTrans>
               <ItemId>1027988</ItemId>
               <CustQuotationTrans_Name>Alape emmerrooster aluminium kleur voor</CustQuotationTrans_Name>
               <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
               <salesUnitTxt>ST</salesUnitTxt>
               <CustQuotationTrans_SalesPrice>20,00</CustQuotationTrans_SalesPrice>
            </BodyCustQuotationTrans>
            <BodyCustQuotationTrans>
               <ItemId>1039264</ItemId>
               <CustQuotationTrans_Name>Syfon universeel 1 1/2"x 40 mm. Mc.alpin</CustQuotationTrans_Name>
               <CustQuotationTrans_Qty>1,00</CustQuotationTrans_Qty>
               <salesUnitTxt>ST</salesUnitTxt>
               <CustQuotationTrans_SalesPrice>9,90</CustQuotationTrans_SalesPrice>
               <UnitID_LABEL>Unit ID</UnitID_LABEL>
            </BodyCustQuotationTrans>
            <subtotalgroup>49,9</subtotalgroup>
         </Objectgroup>
         <subtotalunit>49,9</subtotalunit>
      </Unit>
   </Lines>
   <Totals>
      <CustQuotationJour_SalesBalance>5.082,19</CustQuotationJour_SalesBalance>
      <CustQuotationJour_EndDisc>0,00</CustQuotationJour_EndDisc>
      <CustQuotationJour_SumMarkup>0,00</CustQuotationJour_SumMarkup>
      <CustQuotationJour_SumTax>1.067,26</CustQuotationJour_SumTax>
      <CustQuotationJour_RoundOff>0,00</CustQuotationJour_RoundOff>
      <CustQuotationJour_QuotationAmount>6.149,45</CustQuotationJour_QuotationAmount>
      <CustQuotationJour_CurrencyCode>EUR</CustQuotationJour_CurrencyCode>
   </Totals>
</Report>