2016-12-17 3 views
-1

У меня есть XML, который мне нужно разбить на несколько XML на основе значения заголовка. Мне нужно сгруппировать и объединить в один XML, если заголовок имеет то же значение , что и вход.Разделить XML-файл на несколько файлов на основе уникального значения элемента

мне нужно разделить как следующий файл XML

<Items> 
    <Item> 
    <Title>ABCD-1234-THND</Title> 
    <DueDate>01-02-2008</DueDate> 
    </Item> 
    <Item> 
    <Title>ABCD-1224-THND</Title> 
    <DueDate>01-02-2009</DueDate> 
    </Item> 
    <Item> 
    <Title>ABCD-1234-THND</Title> 
    <DueDate>01-02-2010</DueDate> 
    </Item> 
    <Item> 
    <Title>ABCD-1224-THND</Title> 
    <DueDate>01-02-2011</DueDate> 
    </Item> 
    <Item> 
    <Title>ABCD-1234-THND</Title> 
    <DueDate>01-02-2012</DueDate> 
    </Item> 
    <Item> 
    <Title> ABCD-1234-THND</Title> 
    <DueDate>01-02-2013</DueDate> 
    </Item> 
    <Item> 
    <Title>ABCD-1234-THND</Title> 
    <DueDate>01-02-2013</DueDate> 
    </Item> 
</Items> 

Выходной

<?xml version="1.0" encoding="UTF-8"?> 
<Items> 
    <Item> 
    <Title>ABCD-1224-THND</Title> 
    <DueDate>01-02-2011</DueDate> 
    </Item> 
    <Item> 
    <Title>ABCD-1224-THND</Title> 
    <DueDate>01-02-2011</DueDate> 
    </Item> 

</Items> 

<?xml version="1.0" encoding="UTF-8"?> 
<Items> 
<Item> 
    <Title>ABCD-1234-THND</Title> 
    <DueDate>01-02-2008</DueDate> 
    </Item> 
    <Item> 
<Item> 
    <Title>ABCD-1234-THND</Title> 
    <DueDate>01-02-2008</DueDate> 
    </Item> 
    <Item> 
<Item> 
    <Title>ABCD-1234-THND</Title> 
    <DueDate>01-02-2008</DueDate> 
    </Item> 
    <Item> 
<Item> 
    <Title>ABCD-1234-THND</Title> 
    <DueDate>01-02-2008</DueDate> 
    </Item> 
    <Item> 
<Item> 
    <Title>ABCD-1234-THND</Title> 
    <DueDate>01-02-2008</DueDate> 
    </Item> 
    <Item> 

</Items> 
+0

Возможно ли решение xslt 2.0? – teppic

ответ

1

Предполагая 2 XSLT доступен, вы можете использовать result-document для указания места выхода.

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    <xsl:template match="/Items"> 
     <!-- Group Items by Title --> 
     <xsl:for-each-group select="Item" group-by="Title"> 
      <!-- Write each group to a file with the title in the name --> 
      <xsl:result-document href="items-{current-grouping-key()}.xml"> 
       <Items> 
        <xsl:copy-of select="current-group()"/> 
       </Items> 
      </xsl:result-document> 
     </xsl:for-each-group> 
    </xsl:template> 
</xsl:stylesheet> 
+0

не получает желаемый результат – Canvas

+0

Что вы получаете? – teppic

+0

вы можете использовать результирующий документ, чтобы указать местоположение вывода ... можете ли вы помочь мне с примером? – Canvas

Смежные вопросы