2011-09-28 3 views
2

나는 표준이 ODT 파일의 두 가지 버전을 정의한다는 것을 알고 있습니다 : - 하나는 서로 다른 파일의 아카이브입니다. 즉, meta.xml, content.xml 등 - 두 번째는 모두 하나의 큰 XML 파일입니다 자료. (나는 위에서 알고있다. http://en.wikipedia.org/wiki/OpenDocument_technical_specification#Document_Representation)ODT를 단일 XML 파일로 변환

후자의 버전은 처리하기에 더 좋지만 불행히도 OpenOffice에서는 생성되지 않는다.

질문 : 아카이브 버전의 ODT 파일을 단일 XML 파일로 변환하는 데 도움이되는 필터, 변환기 또는 기타 사항을 알고 있습니까? 최고의 Java 클래스 것입니다.

답변

0

ODT 소스 파일을 표준과 호환되는 "다소간"하나의 XML 파일로 변환하는 XSLT 스타일 시트를 생성하여이 문제를 해결했습니다. 아래는 코드입니다.

<?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet version="1.0" 
     xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0"> 

     <xsl:param name="meta.file" select="'meta.xml'" /> 

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

     <xsl:template match="office:document-content"> 
      <office:document> 
       <xsl:copy-of select="@*" /> 
       <xsl:variable name="meta" select="document($meta.file)/office:document-meta/office:meta" /> 
       <xsl:copy-of select="$meta" /> 
       <xsl:apply-templates /> 
      </office:document> 
     </xsl:template> 

    </xsl:stylesheet> 
4

Open Office와 Libre Office는 모두 "하나의 큰 XML"형식으로 ODT 파일을 생성 할 수 있습니다. 그들은 "플랫 ODT"파일이라고합니다.

ODT 파일을 열고 "다른 이름으로 저장 ..."을 사용하십시오. 여기에서 파일 형식을 "Flat ODT"로 변경할 수 있습니다.

+0

그러면이 파일을 텍스트 편집기로 열거 나 cat을 사용하여 서식이 지정된 xml 소스를 볼 수 있습니다. –

+0

LibreOffice에서 그렇게 할 수있는 방법이 있습니까? 어디에도 "플랫 ODT"가 보이지 않습니다. –

+0

@ StéphaneLaurent : 예 LibreOffice는 플랫 ODT 파일을 지원합니다. 예를 들어, [3.4 for release notes] (https://wiki.documentfoundation.org/ReleaseNotes/3.4)에서는«플랫 ODF 가져 오기 및 Java에서 C++로 파일 필터 내보내기를 통해 속도가 크게 향상되었습니다.» – gioele