2014-02-05 2 views
-1

저는 매우 놀랍습니다. 그래서 도움이 필요합니다. 값이 같을 때를 제외한 모든 것을 복사하십시오.

내가 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> 

등 (내가 다 복사되지 않은)

나는 그것을

<?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> 
변환이 XSL 파일을 사용하는 것입니다

나는이 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() 기능을 사용할 수도 있습니다.