2014-02-05 2 views
-1

Я очень неопытный, поэтому мне нужна помощь.Скопируйте все, кроме значения, которое одинаково

я экспортировал базу данных FileMaker в XML, это результат

<?xml version="1.0" encoding="UTF-8"?> 
<!-- Questa grammatica non è più in uso - usare FMPXMLRESULT al suo posto --> 
<FMPDSORESULT> 
<ROW MODID="5" RECORDID="2"> 
    <FASCICOLO>Adams John</FASCICOLO> 
    <TITOLO_DOC>John Adams to Mr X</TITOLO_DOC> 
    <LUOGO>New York</LUOGO> 
    <GG>27</GG> 
    <MM>04</MM> 
    <AA>1969</AA> 
    <CONTENUTO>Greetings</CONTENUTO> 
    <TIPOLOGIA>letter</TIPOLOGIA> 
    <NUM_CARTE>1</NUM_CARTE> 
    <INTEGR_DESC/> 
</ROW> 
<ROW MODID="6" RECORDID="6"> 
    <FASCICOLO>Adams John</FASCICOLO> 
    <TITOLO_DOC>John Adams to Mr X</TITOLO_DOC> 
    <LUOGO>s.l.</LUOGO> 
    <GG>03</GG> 
    <MM>07</MM> 
    <AA>1996</AA> 
    <CONTENUTO>Greetings</CONTENUTO> 
    <TIPOLOGIA>letter</TIPOLOGIA> 
    <NUM_CARTE>3</NUM_CARTE> 
    <INTEGR_DESC>Presente la busta originale.</INTEGR_DESC> 
</ROW> 

и т.д. (я не скопировал все)

Я использовал этот XSL-файл, чтобы преобразовать его

<?xml version="1.0" encoding="ISO-8859-1"?> 
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> 
<xsl:output method="xml" encoding="iso-8859-1"/> 
<xsl:template match="/"> 
    <xsl:element name="dsc"> 
     <xsl:for-each select="//ROW"> 
      <xsl:element name="c"> 
       <xsl:attribute name="level">file</xsl:attribute> 
       <xsl:attribute name="id">.</xsl:attribute> 
       <xsl:element name="did"> 
        <xsl:element name="unittitle"> 
         <xsl:attribute name="encodinganalog">ISAD 1 - 2 title</xsl:attribute> 
         <xsl:value-of select="./FASCICOLO/text()"/> 
        </xsl:element> 
       </xsl:element> 
      </xsl:element> 
     </xsl:for-each> 
    </xsl:element> 
</xsl:template> 

и я получил этот XML-файл

<?xml version="1.0" encoding="ISO-8859-1"?> 
<dsc> 
<c level="file" id="."> 
    <did> 
     <unittitle encodinganalog="ISAD 1 - 2 title">Adams John</unittitle> 
    </did> 
</c> 
<c level="file" id="."> 
    <did> 
     <unittitle encodinganalog="ISAD 1 - 2 title">Adams John</unittitle> 
    </did> 
</c> 
<c level="file" id="."> 
    <did> 
     <unittitle encodinganalog="ISAD 1 - 2 title">Doe Jane</unittitle> 
    </did> 
</c> 
<c level="file" id="."> 
    <did> 
     <unittitle encodinganalog="ISAD 1 - 2 title">Doe Jane</unittitle> 
    </did> 
</c> 
<c level="file" id="."> 
    <did> 
     <unittitle encodinganalog="ISAD 1 - 2 title">Doe Jane</unittitle> 
    </did> 
</c> 
<c level="file" id="."> 
    <did> 
     <unittitle encodinganalog="ISAD 1 - 2 title">Doe Jane</unittitle> 
    </did> 
</c> 
<c level="file" id="."> 
    <did> 
     <unittitle encodinganalog="ISAD 1 - 2 title">Green Charles</unittitle> 
    </did> 
</c> 
<c level="file" id="."> 
    <did> 
     <unittitle encodinganalog="ISAD 1 - 2 title">Green Charles</unittitle> 
    </did> 
</c> 
<c level="file" id="."> 
    <did> 
     <unittitle encodinganalog="ISAD 1 - 2 title">Green Charles</unittitle> 
    </did> 
</c> 
<c level="file" id="."> 
    <did> 
     <unittitle encodinganalog="ISAD 1 - 2 title">Jones Charles</unittitle> 
    </did> 
</c> 
<c level="file" id="."> 
    <did> 
     <unittitle encodinganalog="ISAD 1 - 2 title">White Walter</unittitle> 
    </did> 
</c> 

Мне нужно, чтобы получить то же самое, но с именами повторяется только один раз, так:

<?xml version="1.0" encoding="ISO-8859-1"?> 
<dsc> 
<c level="file" id="."> 
    <did> 
     <unittitle encodinganalog="ISAD 1 - 2 title">Adams John</unittitle> 
    </did> 
</c> 
<c level="file" id="."> 
    <did> 
     <unittitle encodinganalog="ISAD 1 - 2 title">Doe Jane</unittitle> 
    </did> 
</c> 
<c level="file" id="."> 
    <did> 
     <unittitle encodinganalog="ISAD 1 - 2 title">Green Charles</unittitle> 
    </did> 
</c> 
<c level="file" id="."> 
    <did> 
     <unittitle encodinganalog="ISAD 1 - 2 title">Jones Charles</unittitle> 
    </did> 
</c> 
<c level="file" id="."> 
    <did> 
     <unittitle encodinganalog="ISAD 1 - 2 title">White Walter</unittitle> 
    </did> 
</c> 

Это пример, реальный файл будет много больше, возможно, с большим количеством дубликатов, поэтому я не хочу удалять их вручную. Является ли это возможным? Большое спасибо

+0

Ваш вопрос очень расплывчатый, и вы не указали, как вы собираетесь это делать. Будете ли вы использовать .NET, PHP, Python, другие? – EStafford

+0

Извините Я хотел использовать XSL, но, как вы можете видеть, я очень мало знаю об этих вещах. – user3276589

+0

Вы уже пробовали XSLT? Если да, сообщите нам свою отправную точку. –

ответ

1

Во-первых, если вы экспортируете Filemaker, вы можете исключить дубликаты в результате в источнике.

Во-вторых, если вы применяете XSLT во время экспорта, вы можете использовать функцию расширения xalan:distinct() для устранения дубликатов во время преобразования. Если вы используете версию 11 или выше, также доступна функция EXSLT set:distinct().

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