From 419d4e1fdb1220de4db2149f0fb6084538fbbb96 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Thu, 28 Jun 2018 11:26:57 +0200 Subject: Remove include xhmtl2odt library (refs #4178) --- xhtml2odt/LICENSE.txt | 502 ------------------- xhtml2odt/__init__.py | 0 xhtml2odt/xhtml2odt.py | 715 --------------------------- xhtml2odt/xsl/document-content.xsl | 63 --- xhtml2odt/xsl/document-content/block.xsl | 169 ------- xhtml2odt/xsl/document-content/html5.xsl | 122 ----- xhtml2odt/xsl/document-content/ignore.xsl | 93 ---- xhtml2odt/xsl/document-content/inline.xsl | 167 ------- xhtml2odt/xsl/document-content/link.xsl | 127 ----- xhtml2odt/xsl/document-content/lists.xsl | 130 ----- xhtml2odt/xsl/document-content/media.xsl | 130 ----- xhtml2odt/xsl/document-content/paragraph.xsl | 151 ------ xhtml2odt/xsl/document-content/section.xsl | 80 --- xhtml2odt/xsl/document-content/tables.xsl | 334 ------------- xhtml2odt/xsl/param.xsl | 70 --- xhtml2odt/xsl/specific.xsl | 56 --- xhtml2odt/xsl/specific/geshi.xsl | 94 ---- xhtml2odt/xsl/specific/pygments.xsl | 170 ------- xhtml2odt/xsl/specific/trac.xsl | 61 --- xhtml2odt/xsl/styles.xsl | 143 ------ xhtml2odt/xsl/styles/automatic-styles.xsl | 388 --------------- xhtml2odt/xsl/styles/fonts.xsl | 62 --- xhtml2odt/xsl/styles/highlight.xsl | 152 ------ xhtml2odt/xsl/styles/inline.xsl | 114 ----- xhtml2odt/xsl/styles/main-styles.xsl | 435 ---------------- xhtml2odt/xsl/xhtml2odt.xsl | 116 ----- 26 files changed, 4644 deletions(-) delete mode 100644 xhtml2odt/LICENSE.txt delete mode 100644 xhtml2odt/__init__.py delete mode 100755 xhtml2odt/xhtml2odt.py delete mode 100644 xhtml2odt/xsl/document-content.xsl delete mode 100644 xhtml2odt/xsl/document-content/block.xsl delete mode 100644 xhtml2odt/xsl/document-content/html5.xsl delete mode 100644 xhtml2odt/xsl/document-content/ignore.xsl delete mode 100644 xhtml2odt/xsl/document-content/inline.xsl delete mode 100644 xhtml2odt/xsl/document-content/link.xsl delete mode 100644 xhtml2odt/xsl/document-content/lists.xsl delete mode 100644 xhtml2odt/xsl/document-content/media.xsl delete mode 100644 xhtml2odt/xsl/document-content/paragraph.xsl delete mode 100644 xhtml2odt/xsl/document-content/section.xsl delete mode 100644 xhtml2odt/xsl/document-content/tables.xsl delete mode 100644 xhtml2odt/xsl/param.xsl delete mode 100644 xhtml2odt/xsl/specific.xsl delete mode 100644 xhtml2odt/xsl/specific/geshi.xsl delete mode 100644 xhtml2odt/xsl/specific/pygments.xsl delete mode 100644 xhtml2odt/xsl/specific/trac.xsl delete mode 100644 xhtml2odt/xsl/styles.xsl delete mode 100644 xhtml2odt/xsl/styles/automatic-styles.xsl delete mode 100644 xhtml2odt/xsl/styles/fonts.xsl delete mode 100644 xhtml2odt/xsl/styles/highlight.xsl delete mode 100644 xhtml2odt/xsl/styles/inline.xsl delete mode 100644 xhtml2odt/xsl/styles/main-styles.xsl delete mode 100644 xhtml2odt/xsl/xhtml2odt.xsl diff --git a/xhtml2odt/LICENSE.txt b/xhtml2odt/LICENSE.txt deleted file mode 100644 index 3394995ab..000000000 --- a/xhtml2odt/LICENSE.txt +++ /dev/null @@ -1,502 +0,0 @@ - GNU LESSER GENERAL PUBLIC LICENSE - Version 2.1, February 1999 - - Copyright (C) 1991, 1999 Free Software Foundation, Inc. - 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - -[This is the first released version of the Lesser GPL. It also counts - as the successor of the GNU Library Public License, version 2, hence - the version number 2.1.] - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -Licenses are intended to guarantee your freedom to share and change -free software--to make sure the software is free for all its users. - - This license, the Lesser General Public License, applies to some -specially designated software packages--typically libraries--of the -Free Software Foundation and other authors who decide to use it. You -can use it too, but we suggest you first think carefully about whether -this license or the ordinary General Public License is the better -strategy to use in any particular case, based on the explanations below. - - When we speak of free software, we are referring to freedom of use, -not price. Our General Public Licenses are designed to make sure that -you have the freedom to distribute copies of free software (and charge -for this service if you wish); that you receive source code or can get -it if you want it; that you can change the software and use pieces of -it in new free programs; and that you are informed that you can do -these things. - - To protect your rights, we need to make restrictions that forbid -distributors to deny you these rights or to ask you to surrender these -rights. These restrictions translate to certain responsibilities for -you if you distribute copies of the library or if you modify it. - - For example, if you distribute copies of the library, whether gratis -or for a fee, you must give the recipients all the rights that we gave -you. You must make sure that they, too, receive or can get the source -code. If you link other code with the library, you must provide -complete object files to the recipients, so that they can relink them -with the library after making changes to the library and recompiling -it. And you must show them these terms so they know their rights. - - We protect your rights with a two-step method: (1) we copyright the -library, and (2) we offer you this license, which gives you legal -permission to copy, distribute and/or modify the library. - - To protect each distributor, we want to make it very clear that -there is no warranty for the free library. Also, if the library is -modified by someone else and passed on, the recipients should know -that what they have is not the original version, so that the original -author's reputation will not be affected by problems that might be -introduced by others. - - Finally, software patents pose a constant threat to the existence of -any free program. We wish to make sure that a company cannot -effectively restrict the users of a free program by obtaining a -restrictive license from a patent holder. Therefore, we insist that -any patent license obtained for a version of the library must be -consistent with the full freedom of use specified in this license. - - Most GNU software, including some libraries, is covered by the -ordinary GNU General Public License. This license, the GNU Lesser -General Public License, applies to certain designated libraries, and -is quite different from the ordinary General Public License. We use -this license for certain libraries in order to permit linking those -libraries into non-free programs. - - When a program is linked with a library, whether statically or using -a shared library, the combination of the two is legally speaking a -combined work, a derivative of the original library. The ordinary -General Public License therefore permits such linking only if the -entire combination fits its criteria of freedom. The Lesser General -Public License permits more lax criteria for linking other code with -the library. - - We call this license the "Lesser" General Public License because it -does Less to protect the user's freedom than the ordinary General -Public License. It also provides other free software developers Less -of an advantage over competing non-free programs. These disadvantages -are the reason we use the ordinary General Public License for many -libraries. However, the Lesser license provides advantages in certain -special circumstances. - - For example, on rare occasions, there may be a special need to -encourage the widest possible use of a certain library, so that it becomes -a de-facto standard. To achieve this, non-free programs must be -allowed to use the library. A more frequent case is that a free -library does the same job as widely used non-free libraries. In this -case, there is little to gain by limiting the free library to free -software only, so we use the Lesser General Public License. - - In other cases, permission to use a particular library in non-free -programs enables a greater number of people to use a large body of -free software. For example, permission to use the GNU C Library in -non-free programs enables many more people to use the whole GNU -operating system, as well as its variant, the GNU/Linux operating -system. - - Although the Lesser General Public License is Less protective of the -users' freedom, it does ensure that the user of a program that is -linked with the Library has the freedom and the wherewithal to run -that program using a modified version of the Library. - - The precise terms and conditions for copying, distribution and -modification follow. Pay close attention to the difference between a -"work based on the library" and a "work that uses the library". The -former contains code derived from the library, whereas the latter must -be combined with the library in order to run. - - GNU LESSER GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License Agreement applies to any software library or other -program which contains a notice placed by the copyright holder or -other authorized party saying it may be distributed under the terms of -this Lesser General Public License (also called "this License"). -Each licensee is addressed as "you". - - A "library" means a collection of software functions and/or data -prepared so as to be conveniently linked with application programs -(which use some of those functions and data) to form executables. - - The "Library", below, refers to any such software library or work -which has been distributed under these terms. A "work based on the -Library" means either the Library or any derivative work under -copyright law: that is to say, a work containing the Library or a -portion of it, either verbatim or with modifications and/or translated -straightforwardly into another language. (Hereinafter, translation is -included without limitation in the term "modification".) - - "Source code" for a work means the preferred form of the work for -making modifications to it. For a library, complete source code means -all the source code for all modules it contains, plus any associated -interface definition files, plus the scripts used to control compilation -and installation of the library. - - Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running a program using the Library is not restricted, and output from -such a program is covered only if its contents constitute a work based -on the Library (independent of the use of the Library in a tool for -writing it). Whether that is true depends on what the Library does -and what the program that uses the Library does. - - 1. You may copy and distribute verbatim copies of the Library's -complete source code as you receive it, in any medium, provided that -you conspicuously and appropriately publish on each copy an -appropriate copyright notice and disclaimer of warranty; keep intact -all the notices that refer to this License and to the absence of any -warranty; and distribute a copy of this License along with the -Library. - - You may charge a fee for the physical act of transferring a copy, -and you may at your option offer warranty protection in exchange for a -fee. - - 2. You may modify your copy or copies of the Library or any portion -of it, thus forming a work based on the Library, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) The modified work must itself be a software library. - - b) You must cause the files modified to carry prominent notices - stating that you changed the files and the date of any change. - - c) You must cause the whole of the work to be licensed at no - charge to all third parties under the terms of this License. - - d) If a facility in the modified Library refers to a function or a - table of data to be supplied by an application program that uses - the facility, other than as an argument passed when the facility - is invoked, then you must make a good faith effort to ensure that, - in the event an application does not supply such function or - table, the facility still operates, and performs whatever part of - its purpose remains meaningful. - - (For example, a function in a library to compute square roots has - a purpose that is entirely well-defined independent of the - application. Therefore, Subsection 2d requires that any - application-supplied function or table used by this function must - be optional: if the application does not supply it, the square - root function must still compute square roots.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Library, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Library, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote -it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Library. - -In addition, mere aggregation of another work not based on the Library -with the Library (or with a work based on the Library) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may opt to apply the terms of the ordinary GNU General Public -License instead of this License to a given copy of the Library. To do -this, you must alter all the notices that refer to this License, so -that they refer to the ordinary GNU General Public License, version 2, -instead of to this License. (If a newer version than version 2 of the -ordinary GNU General Public License has appeared, then you can specify -that version instead if you wish.) Do not make any other change in -these notices. - - Once this change is made in a given copy, it is irreversible for -that copy, so the ordinary GNU General Public License applies to all -subsequent copies and derivative works made from that copy. - - This option is useful when you wish to copy part of the code of -the Library into a program that is not a library. - - 4. You may copy and distribute the Library (or a portion or -derivative of it, under Section 2) in object code or executable form -under the terms of Sections 1 and 2 above provided that you accompany -it with the complete corresponding machine-readable source code, which -must be distributed under the terms of Sections 1 and 2 above on a -medium customarily used for software interchange. - - If distribution of object code is made by offering access to copy -from a designated place, then offering equivalent access to copy the -source code from the same place satisfies the requirement to -distribute the source code, even though third parties are not -compelled to copy the source along with the object code. - - 5. A program that contains no derivative of any portion of the -Library, but is designed to work with the Library by being compiled or -linked with it, is called a "work that uses the Library". Such a -work, in isolation, is not a derivative work of the Library, and -therefore falls outside the scope of this License. - - However, linking a "work that uses the Library" with the Library -creates an executable that is a derivative of the Library (because it -contains portions of the Library), rather than a "work that uses the -library". The executable is therefore covered by this License. -Section 6 states terms for distribution of such executables. - - When a "work that uses the Library" uses material from a header file -that is part of the Library, the object code for the work may be a -derivative work of the Library even though the source code is not. -Whether this is true is especially significant if the work can be -linked without the Library, or if the work is itself a library. The -threshold for this to be true is not precisely defined by law. - - If such an object file uses only numerical parameters, data -structure layouts and accessors, and small macros and small inline -functions (ten lines or less in length), then the use of the object -file is unrestricted, regardless of whether it is legally a derivative -work. (Executables containing this object code plus portions of the -Library will still fall under Section 6.) - - Otherwise, if the work is a derivative of the Library, you may -distribute the object code for the work under the terms of Section 6. -Any executables containing that work also fall under Section 6, -whether or not they are linked directly with the Library itself. - - 6. As an exception to the Sections above, you may also combine or -link a "work that uses the Library" with the Library to produce a -work containing portions of the Library, and distribute that work -under terms of your choice, provided that the terms permit -modification of the work for the customer's own use and reverse -engineering for debugging such modifications. - - You must give prominent notice with each copy of the work that the -Library is used in it and that the Library and its use are covered by -this License. You must supply a copy of this License. If the work -during execution displays copyright notices, you must include the -copyright notice for the Library among them, as well as a reference -directing the user to the copy of this License. Also, you must do one -of these things: - - a) Accompany the work with the complete corresponding - machine-readable source code for the Library including whatever - changes were used in the work (which must be distributed under - Sections 1 and 2 above); and, if the work is an executable linked - with the Library, with the complete machine-readable "work that - uses the Library", as object code and/or source code, so that the - user can modify the Library and then relink to produce a modified - executable containing the modified Library. (It is understood - that the user who changes the contents of definitions files in the - Library will not necessarily be able to recompile the application - to use the modified definitions.) - - b) Use a suitable shared library mechanism for linking with the - Library. A suitable mechanism is one that (1) uses at run time a - copy of the library already present on the user's computer system, - rather than copying library functions into the executable, and (2) - will operate properly with a modified version of the library, if - the user installs one, as long as the modified version is - interface-compatible with the version that the work was made with. - - c) Accompany the work with a written offer, valid for at - least three years, to give the same user the materials - specified in Subsection 6a, above, for a charge no more - than the cost of performing this distribution. - - d) If distribution of the work is made by offering access to copy - from a designated place, offer equivalent access to copy the above - specified materials from the same place. - - e) Verify that the user has already received a copy of these - materials or that you have already sent this user a copy. - - For an executable, the required form of the "work that uses the -Library" must include any data and utility programs needed for -reproducing the executable from it. However, as a special exception, -the materials to be distributed need not include anything that is -normally distributed (in either source or binary form) with the major -components (compiler, kernel, and so on) of the operating system on -which the executable runs, unless that component itself accompanies -the executable. - - It may happen that this requirement contradicts the license -restrictions of other proprietary libraries that do not normally -accompany the operating system. Such a contradiction means you cannot -use both them and the Library together in an executable that you -distribute. - - 7. You may place library facilities that are a work based on the -Library side-by-side in a single library together with other library -facilities not covered by this License, and distribute such a combined -library, provided that the separate distribution of the work based on -the Library and of the other library facilities is otherwise -permitted, and provided that you do these two things: - - a) Accompany the combined library with a copy of the same work - based on the Library, uncombined with any other library - facilities. This must be distributed under the terms of the - Sections above. - - b) Give prominent notice with the combined library of the fact - that part of it is a work based on the Library, and explaining - where to find the accompanying uncombined form of the same work. - - 8. You may not copy, modify, sublicense, link with, or distribute -the Library except as expressly provided under this License. Any -attempt otherwise to copy, modify, sublicense, link with, or -distribute the Library is void, and will automatically terminate your -rights under this License. However, parties who have received copies, -or rights, from you under this License will not have their licenses -terminated so long as such parties remain in full compliance. - - 9. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Library or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Library (or any work based on the -Library), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Library or works based on it. - - 10. Each time you redistribute the Library (or any work based on the -Library), the recipient automatically receives a license from the -original licensor to copy, distribute, link with or modify the Library -subject to these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties with -this License. - - 11. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Library at all. For example, if a patent -license would not permit royalty-free redistribution of the Library by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Library. - -If any portion of this section is held invalid or unenforceable under any -particular circumstance, the balance of the section is intended to apply, -and the section as a whole is intended to apply in other circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 12. If the distribution and/or use of the Library is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Library under this License may add -an explicit geographical distribution limitation excluding those countries, -so that distribution is permitted only in or among countries not thus -excluded. In such case, this License incorporates the limitation as if -written in the body of this License. - - 13. The Free Software Foundation may publish revised and/or new -versions of the Lesser General Public License from time to time. -Such new versions will be similar in spirit to the present version, -but may differ in detail to address new problems or concerns. - -Each version is given a distinguishing version number. If the Library -specifies a version number of this License which applies to it and -"any later version", you have the option of following the terms and -conditions either of that version or of any later version published by -the Free Software Foundation. If the Library does not specify a -license version number, you may choose any version ever published by -the Free Software Foundation. - - 14. If you wish to incorporate parts of the Library into other free -programs whose distribution conditions are incompatible with these, -write to the author to ask for permission. For software which is -copyrighted by the Free Software Foundation, write to the Free -Software Foundation; we sometimes make exceptions for this. Our -decision will be guided by the two goals of preserving the free status -of all derivatives of our free software and of promoting the sharing -and reuse of software generally. - - NO WARRANTY - - 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO -WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. -EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR -OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY -KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE -LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME -THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN -WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY -AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU -FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR -CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE -LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING -RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A -FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF -SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH -DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Libraries - - If you develop a new library, and you want it to be of the greatest -possible use to the public, we recommend making it free software that -everyone can redistribute and change. You can do so by permitting -redistribution under these terms (or, alternatively, under the terms of the -ordinary General Public License). - - To apply these terms, attach the following notices to the library. It is -safest to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least the -"copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - This library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with this library; if not, write to the Free Software - Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Also add information on how to contact you by electronic and paper mail. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the library, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the - library `Frob' (a library for tweaking knobs) written by James Random Hacker. - - , 1 April 1990 - Ty Coon, President of Vice - -That's all there is to it! diff --git a/xhtml2odt/__init__.py b/xhtml2odt/__init__.py deleted file mode 100644 index e69de29bb..000000000 diff --git a/xhtml2odt/xhtml2odt.py b/xhtml2odt/xhtml2odt.py deleted file mode 100755 index 0923c1d05..000000000 --- a/xhtml2odt/xhtml2odt.py +++ /dev/null @@ -1,715 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -u""" -xhtml2odt - XHTML to ODT XML transformation -=========================================== - -Copyright (C) 2009-2010 Aurelien Bompard -Copyright (C) 2015 Étienne Loks - -This script can convert a wiki page to the OpenDocument Text (ODT) format, -standardized as ISO/IEC 26300:2006, and the native format of office suites such -as OpenOffice.org, KOffice, and others. - -It uses a template ODT file which will be filled with the converted content of -the XHTML page. - -Website: http://xhtml2odt.org - -Inspired by the work on docbook2odt_, by Roman Fordinal - -.. _docbook2odt: http://open.comsultia.com/docbook2odf/ - - -Usage ------ - -Call the script with the :option:`--help` option to see all the available -options. The main options are: - -.. cmdoption:: -i , --input - - The HTML file to read from. - -.. cmdoption:: -o , --output - - The ODT file to export to (will be overwritten if already present). - -.. cmdoption:: -t , --template - - The ODT file to use as a template (must be readable). - -.. cmdoption:: -v - - Be verbose (enables logging) - - -The full help message is:: - - Usage: xhtml2odt.py [options] -i input -o output -t template.odt - - Options: - -h, --help show this help message and exit - -i FILE, --input=FILE - Read the html from this file - -o FILE, --output=FILE - Location of the output ODT file - -t FILE, --template=FILE - Location of the template ODT file - -u URL, --url=URL Use this URL for relative links - -v, --verbose Show what's going on - --html-id=ID Only export from the element with this ID - --replace=KEYWORD Keyword to replace in the ODT template (default is - ODT-INSERT) - --cut-start=KEYWORD Keyword to start cutting text from the ODT template - (default is ODT-CUT-START) - --cut-stop=KEYWORD Keyword to stop cutting text from the ODT template - (default is ODT-CUT-STOP) - --top-header-level=LEVEL - Level of highest header in the HTML (default is 1) - --img-default-width=WIDTH - Default image width (default is 8cm) - --img-default-height=HEIGHT - Default image height (default is 6cm) - --dpi=DPI Screen resolution in Dots Per Inch (default is 96) - --no-network Do not download remote images - - -License -------- - -GNU LGPL v2.1 or later: http://www.gnu.org/licenses/lgpl-2.1.html - -This program is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; either -version 2.1 of the License, or (at your option) any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. - -Code ----- -""" - -import tempfile -import shutil -import re -import os -import sys -import zipfile -import urllib2 -import urlparse -import hashlib -import mimetypes -from StringIO import StringIO -from optparse import OptionParser - -try: - import tidy -except: - from tidylib import tidy_document as tidy - -from lxml import etree -from PIL import Image - -#pylint#: disable-msg=C0301,C0111 - -INSTALL_PATH = os.path.dirname(__file__) - -INCH_TO_CM = 2.54 -CHARSET = "utf-8" - -__version__ = 0.1 - -class ODTExportError(Exception): - """Base exception for ODT conversion errors""" - pass - -class HTMLFile(object): - """ - This class contains the HTML document to convert to ODT. The HTML code - will be run through Tidy to ensure that is is valid and well-formed - XHTML. - - :ivar options: An OptionParser-result object containing the options for - processing. - :type options: OptionsParser-result object - :ivar html: The HTML code. - :type html: ``str`` - """ - - def __init__(self, options): - self.options = options - self.html = "" - - def read(self): - """ - Read the HTML file from :attr:`options`.input, run it through Tidy, and - filter using the selected ID (if applicable). - """ - in_file = open(self.options.input) - self.html = in_file.read() - in_file.close() - self.cleanup() - if self.options.htmlid: - self.select_id() - - def cleanup(self): - """ - Run the HTML code from the :attr:`html` instance variable through Tidy. - """ - tidy_options = dict(output_xhtml=1, add_xml_decl=1, indent=1, - tidy_mark=0, #input_encoding=str(self.charset), - output_encoding='utf8', doctype='auto', - wrap=0, char_encoding='utf8') - self.html = str(tidy.parseString(self.html, **tidy_options)) - if not self.html: - raise ODTExportError( - "Tidy could not clean up the document, aborting.") - # Replace nbsp with entity - # http://www.mail-archive.com/analog-help@lists.meer.net/msg03670.html - self.html = self.html.replace(" ", " ") - # Tidy creates newlines after
 (by indenting)
-        self.html = re.sub(']*)>\n', '', self.html)
-
-    def select_id(self):
-        """
-        Replace the HTML content by an element in the content. The element
-        is selected by its HTML ID.
-        """
-        try:
-            html_tree = etree.fromstring(self.html)
-        except etree.XMLSyntaxError:
-            if self.options.verbose:
-                raise
-            else:
-                raise ODTExportError("The XHTML is still not valid after "
-                                     "Tidy's work, I can't convert it.")
-        selected = html_tree.xpath("//*[@id='%s']" % self.options.htmlid)
-        if selected:
-            self.html = etree.tostring(selected[0], method="html")
-        else:
-            print >> sys.stderr, "Can't find the selected HTML id: %s, " \
-                                 % self.options.htmlid \
-                                +"converting everything."
-
-
-class ODTFile(object):
-    """Handles the conversion and production of an ODT file"""
-
-    def __init__(self, options):
-        self.options = options
-        self.xml = {
-            "content": "",
-            "styles": "",
-        }
-        self.tmpdir = tempfile.mkdtemp(prefix="xhtml2odt-")
-        self.zfile = None
-        self._added_images = []
-
-    def open(self):
-        """
-        Uncompress the template ODT file, and read the content.xml and
-        styles.xml files into memory.
-        """
-        self.zfile = zipfile.ZipFile(self.options.template, "r")
-        for name in self.zfile.namelist():
-            fname = os.path.join(self.tmpdir, name)
-            if not os.path.exists(os.path.dirname(fname)):
-                os.makedirs(os.path.dirname(fname))
-            if name[-1] == "/":
-                if not os.path.exists(fname):
-                    os.mkdir(fname)
-                continue
-            fname_h = open(fname, "w")
-            fname_h.write(self.zfile.read(name))
-            fname_h.close()
-        for xmlfile in self.xml:
-            self.xml[xmlfile] = self.zfile.read("%s.xml" % xmlfile)
-
-    def import_xhtml(self, xhtml):
-        """
-        Main function to run the conversion process:
-
-        * XHTML import
-        * conversion to ODT XML
-        * insertion into the ODT template
-        * adding of the missing styles
-
-        The next logical step is to use the :meth:`save` method.
-
-        :param xhtml: the XHTML content to import
-        :type  xhtml: str
-        """
-        odt = self.xhtml_to_odt(xhtml)
-        self.insert_content(odt)
-        self.add_styles()
-
-    def xhtml_to_odt(self, xhtml):
-        """
-        Converts the XHTML content into ODT.
-
-        :param xhtml: the XHTML content to import
-        :type  xhtml: str
-        :returns: the ODT XML from the conversion
-        :rtype: str
-        """
-        xsl_dir = os.path.join(INSTALL_PATH, 'xsl')
-        tmpdirxsl = os.path.join(tempfile.mkdtemp(prefix="xhtml2odt-"), 'xsl')
-        shutil.copytree(xsl_dir, tmpdirxsl)
-
-        xslt_doc = etree.parse(os.path.join(tmpdirxsl, "xhtml2odt.xsl"))
-        transform = etree.XSLT(xslt_doc)
-        xhtml = self.handle_images(xhtml)
-        xhtml = self.handle_links(xhtml)
-        try:
-            xhtml = etree.fromstring(xhtml) # must be valid xml at this point
-        except etree.XMLSyntaxError:
-            if self.options.verbose:
-                raise
-            else:
-                raise ODTExportError("The XHTML is still not valid after "
-                                     "Tidy's work, I can't convert it.")
-        params = {
-            "url": "/",
-            "heading_minus_level": str(self.options.top_header_level - 1),
-        }
-        if self.options.verbose:
-            params["debug"] = "1"
-        if self.options.img_width:
-            if hasattr(etree.XSLT, "strparam"):
-                params["img_default_width"] = etree.XSLT.strparam(
-                                                self.options.img_width)
-            else: # lxml < 2.2
-                params["img_default_width"] = "'%s'" % self.options.img_width
-        if self.options.img_height:
-            if hasattr(etree.XSLT, "strparam"):
-                params["img_default_height"] = etree.XSLT.strparam(
-                                                self.options.img_height)
-            else: # lxml < 2.2
-                params["img_default_height"] = "'%s'" % self.options.img_height
-        odt = transform(xhtml, **params)
-        # DEBUG
-        #print str(odt)
-        return str(odt).replace('','')
-
-    def handle_images(self, xhtml):
-        """
-        Handling of image tags in the XHTML. Local and remote images are
-        handled differently: see the :meth:`handle_local_img` and
-        :meth:`handle_remote_img` methods for details.
-
-        :param xhtml: the XHTML content to import
-        :type  xhtml: str
-        :returns: XHTML with normalized ``img`` tags
-        :rtype: str
-        """
-        # Handle local images
-        xhtml = re.sub(']*src="([^"]+)"[^>]*>',
-                      self.handle_local_img, xhtml)
-        # Handle remote images
-        if self.options.with_network:
-            xhtml = re.sub(']*src="(https?://[^"]+)"[^>]*>',
-                          self.handle_remote_img, xhtml)
-        #print xhtml
-        return xhtml
-
-    def handle_local_img(self, img_mo):
-        """
-        Handling of local images. This method should be called as a callback on
-        each ``img`` tag.
-
-        Find the real path of the image file and use the :meth:`handle_img`
-        method to flag it for inclusion in the ODT file.
-
-        This implementation downloads the files that come from the same domain
-        as the XHTML document cames from, but server-based export plugins can
-        just retrieve it from the local disk, using either the
-        ``DOCUMENT_ROOT`` or any appropriate method (depending on the web
-        application you're writing an export plugin for).
-
-        :param img_mo: the match object from the `re.sub` callback
-        """
-        log("handling local image: %s" % img_mo.group(1), self.options.verbose)
-        src = img_mo.group(1)
-        if src.count("://") and not src.startswith("file://"):
-            # This is an absolute link, don't touch it
-            return img_mo.group()
-        if src.startswith("file://"):
-            filename = src[7:]
-        elif src.startswith("/"):
-            filename = src
-        else: # relative link
-            filename = os.path.join(os.path.dirname(self.options.input), src)
-        if os.path.exists(filename):
-            return self.handle_img(img_mo.group(), src, filename)
-        if src.startswith("file://") or not self.options.url:
-            # There's nothing we can do here
-            return img_mo.group()
-        newsrc = urlparse.urljoin(self.options.url, os.path.normpath(src))
-        if not self.options.with_network:
-            # Don't download it, just update the URL
-            return img_mo.group().replace(src, newsrc)
-        try:
-            tmpfile = self.download_img(newsrc)
-        except (urllib2.HTTPError, urllib2.URLError):
-            log("Failed getting %s" % newsrc, self.options.verbose)
-            return img_mo.group()
-        ret = self.handle_img(img_mo.group(), src, tmpfile)
-        os.remove(tmpfile)
-        return ret
-
-    def handle_remote_img(self, img_mo):
-        """
-        Downloads remote images to a temporary file and flags them for
-        inclusion using the :meth:`handle_img` method.
-
-        :param img_mo: the match object from the `re.sub` callback
-        """
-        log('handling remote image: %s' % img_mo.group(), self.options.verbose)
-        src = img_mo.group(1)
-        try:
-            tmpfile = self.download_img(src)
-        except (urllib2.HTTPError, urllib2.URLError):
-            return img_mo.group()
-        ret = self.handle_img(img_mo.group(), src, tmpfile)
-        os.remove(tmpfile)
-        return ret
-
-    def download_img(self, src):
-        """
-        Downloads the given image to a temporary location.
-
-        :param src: the URL to download
-        :type  src: str
-        """
-        log('Downloading image: %s' % src, self.options.verbose)
-        # TODO: proxy support
-        remoteimg = urllib2.urlopen(src)
-        tmpimg_fd, tmpfile = tempfile.mkstemp()
-        tmpimg = os.fdopen(tmpimg_fd, 'w')
-        tmpimg.write(remoteimg.read())
-        tmpimg.close()
-        remoteimg.close()
-        return tmpfile
-
-    def handle_img(self, full_tag, src, filename):
-        """
-        Imports an image into the ODT file.
-
-        :param full_tag: the full ``img`` tag in the original XHTML document
-        :type  full_tag: str
-        :param src: the ``src`` attribute of the ``img`` tag
-        :type  src: str
-        :param filename: the path to the image file on the local disk
-        :type  filename: str
-        """
-        log('Importing image: %s' % filename, self.options.verbose)
-        if not os.path.exists(filename):
-            raise ODTExportError('Image "%s" is not readable or does not exist'
-                                 % filename)
-        # TODO: generate a filename (with tempfile.mkstemp) to avoid weird
-        # filenames. Maybe use img.format for the extension
-        if not os.path.exists(os.path.join(self.tmpdir, "Pictures")):
-            os.mkdir(os.path.join(self.tmpdir, "Pictures"))
-        newname = ( hashlib.md5(filename).hexdigest()
-                    + os.path.splitext(filename)[1] )
-        shutil.copy(filename, os.path.join(self.tmpdir, "Pictures", newname))
-        self._added_images.append(os.path.join("Pictures", newname))
-        full_tag = full_tag.replace('src="%s"' % src,
-                                    'src="Pictures/%s"' % newname)
-        try:
-            img = Image.open(filename)
-        except IOError:
-            log('Failed to identify image: %s' % filename,
-                self.options.verbose)
-        else:
-            width, height = img.size
-            log('Detected size: %spx x %spx' % (width, height),
-                self.options.verbose)
-            width_mo = re.search('width="([0-9]+)(?:px)?"', full_tag)
-            height_mo = re.search('height="([0-9]+)(?:px)?"', full_tag)
-            if width_mo and height_mo:
-                log('Forced size: %spx x %spx.' % (width_mo.group(),
-                        height_mo.group()), self.options.verbose)
-                width = float(width_mo.group(1)) / self.options.img_dpi \
-                            * INCH_TO_CM
-                height = float(height_mo.group(1)) / self.options.img_dpi \
-                            * INCH_TO_CM
-                full_tag = full_tag.replace(width_mo.group(), "")\
-                                   .replace(height_mo.group(), "")
-            elif width_mo and not height_mo:
-                newwidth = float(width_mo.group(1)) / \
-                           float(self.options.img_dpi) * INCH_TO_CM
-                height = height * newwidth / width
-                width = newwidth
-                log('Forced width: %spx. Size will be: %scm x %scm' %
-                    (width_mo.group(1), width, height), self.options.verbose)
-                full_tag = full_tag.replace(width_mo.group(), "")
-            elif not width_mo and height_mo:
-                newheight = float(height_mo.group(1)) / \
-                            float(self.options.img_dpi) * INCH_TO_CM
-                width = width * newheight / height
-                height = newheight
-                log('Forced height: %spx. Size will be: %scm x %scm' %
-                    (height_mo.group(1), height, width), self.options.verbose)
-                full_tag = full_tag.replace(height_mo.group(), "")
-            elif hasattr(self.options, 'img_dpi'):
-                width = width / float(self.options.img_dpi) * INCH_TO_CM
-                height = height / float(self.options.img_dpi) * INCH_TO_CM
-                log('Size converted to: %scm x %scm' % (height, width),
-                        self.options.verbose)
-            elif hasattr(self.options, 'img_width'):
-                ratio = float(height) / float(width)
-                width = float(self.options.img_width.replace('cm', ''))
-                height = ratio * width
-                log('Size converted to: %scm x %scm' % (height, width),
-                        self.options.verbose)
-            else:
-                return full_tag
-            full_tag = full_tag.replace(']*href="([^"]+)"',
-                      self.handle_relative_links, xhtml)
-        return xhtml
-
-    def handle_relative_links(self, link_mo):
-        """
-        Do the actual conversion of links from relative to absolute. This
-        method is used as a callback by the :meth:`handle_links` method.
-        """
-        href = link_mo.group(1)
-        if href.startswith("file://") or not self.options.url:
-            # There's nothing we can do here
-            return link_mo.group()
-        if href.count("://"):
-            # This is an absolute link, don't touch it
-            return link_mo.group()
-        log("handling relative link: %s" % href, self.options.verbose)
-        newhref = urlparse.urljoin(self.options.url, os.path.normpath(href))
-        return link_mo.group().replace(href, newhref)
-
-    def insert_content(self, content):
-        """
-        Insert ODT XML content into the ``content.xml`` file, replacing the
-        keywords if needed.
-
-        :param content: ODT XML content to insert
-        :type  content: str
-        """
-        if self.options.replace_keyword and \
-            self.xml["content"].count(self.options.replace_keyword) > 0:
-            self.xml["content"] = re.sub(
-                    "]*>" +
-                    re.escape(self.options.replace_keyword)
-                    +"", content, self.xml["content"])
-        else:
-            self.xml["content"] = self.xml["content"].replace(
-                '',
-                content + '')
-        # Cut unwanted text
-        if self.options.cut_start \
-                and self.xml["content"].count(self.options.cut_start) > 0 \
-                and self.options.cut_stop \
-                and self.xml["content"].count(self.options.cut_stop) > 0:
-            self.xml["content"] = re.sub(
-                    re.escape(self.options.cut_start)
-                    + ".*" +
-                    re.escape(self.options.cut_stop),
-                    "", self.xml["content"])
-
-    def add_styles(self):
-        """
-        Scans the ODT XML for used styles that would not be already included in
-        the ODT template, and adds those missing styles.
-        """
-        xsl_dir = os.path.join(INSTALL_PATH, 'xsl')
-        xslt_doc = etree.parse(os.path.join(xsl_dir, "styles.xsl"))
-        transform = etree.XSLT(xslt_doc)
-        contentxml = etree.fromstring(self.xml["content"])
-        stylesxml = etree.fromstring(self.xml["styles"])
-        params = {}
-        if self.options.verbose:
-            params["debug"] = "1"
-        self.xml["content"] = str(transform(contentxml, **params))
-        self.xml["styles"] = str(transform(stylesxml, **params))
-
-    def update_manifest(self):
-        manifest_path = os.path.join(self.tmpdir, "META-INF", "manifest.xml")
-        if not os.path.exists(manifest_path):
-            return
-        manifest = etree.parse(manifest_path)
-        manifest_root = manifest.getroot()
-        manifest_ns = "urn:oasis:names:tc:opendocument:xmlns:manifest:1.0"
-        for img in self._added_images:
-            mime_type = mimetypes.guess_type(img, strict=False)[0]
-            if mime_type is None:
-                continue
-            img_el = etree.SubElement(
-                        manifest_root,
-                        "{%s}file-entry" % manifest_ns,
-                        {"{%s}media-type" % manifest_ns: mime_type,
-                         "{%s}full-path" % manifest_ns: img,
-                        })
-        manifest.write(manifest_path)
-
-    def compile(self):
-        """
-        Writes the in-memory ODT XML content and styles to the disk
-        """
-        # Store the new content
-        for xmlfile in self.xml:
-            xmlf = open(os.path.join(self.tmpdir, "%s.xml" % xmlfile), "w")
-            xmlf.write(self.xml[xmlfile])
-            xmlf.close()
-        self.update_manifest()
-
-    def _build_zip(self, document):
-        """
-        Zips the working directory into a :class:`zipfile.ZipFile` object
-
-        :param document: where the :class:`ZipFile` will be stored
-        :type  document: str or file-like object
-        """
-        newzf = zipfile.ZipFile(document, "w", zipfile.ZIP_DEFLATED)
-        for root, dirs, files in os.walk(self.tmpdir):
-            for cur_file in files:
-                realpath = os.path.join(root, cur_file)
-                to_skip = len(self.tmpdir) + 1
-                internalpath = os.path.join(root[to_skip:], cur_file)
-                newzf.write(realpath, internalpath)
-        newzf.close()
-
-    def save(self, output=None):
-        """
-        General method to save the in-memory content to an ODT file on the disk.
-
-        If :attr:`output` is ``None``, the document is returned.
-
-        :param output: where the document should be saved, see the :option:`-o`
-            option.
-        :type  output: str or file-like object or ``None``
-        :returns: if output is None: the ODT document ; or else ``None``.
-        """
-        self.compile()
-        if output:
-            document = output
-        else:
-            document = StringIO()
-        self._build_zip(document)
-        shutil.rmtree(self.tmpdir)
-        if not output:
-            return document.getvalue()
-
-
-def log(msg, verbose=False):
-    """
-    Simple method to log if we're in verbose mode (with the :option:`-v`
-    option).
-    """
-    if verbose:
-        sys.stderr.write(msg+"\n")
-
-def get_options():
-    """
-    Parses the command-line options.
-    """
-    usage = "usage: %prog [options] -i input -o output -t template.odt"
-    parser = OptionParser(usage=usage)
-    parser.add_option("--version", dest="version", action="store_true",
-                      help="Show the version and exit")
-    parser.add_option("-i", "--input", dest="input", metavar="FILE",
-                      help="Read the html from this file")
-    parser.add_option("-o", "--output", dest="output", metavar="FILE",
-                      help="Location of the output ODT file")
-    parser.add_option("-t", "--template", dest="template", metavar="FILE",
-                      help="Location of the template ODT file")
-    parser.add_option("-u", "--url", dest="url",
-                      help="Use this URL for relative links")
-    parser.add_option("-v", "--verbose", dest="verbose",
-                      action="store_true", default=False,
-                      help="Show what's going on")
-    parser.add_option("--html-id", dest="htmlid", metavar="ID",
-                      help="Only export from the element with this ID")
-    parser.add_option("--replace", dest="replace_keyword",
-                      default="ODT-INSERT", metavar="KEYWORD",
-                      help="Keyword to replace in the ODT template "
-                      "(default is %default)")
-    parser.add_option("--cut-start", dest="cut_start",
-                      default="ODT-CUT-START", metavar="KEYWORD",
-                      help="Keyword to start cutting text from the ODT "
-                      "template (default is %default)")
-    parser.add_option("--cut-stop", dest="cut_stop",
-                      default="ODT-CUT-STOP", metavar="KEYWORD",
-                      help="Keyword to stop cutting text from the ODT "
-                      "template (default is %default)")
-    parser.add_option("--top-header-level", dest="top_header_level",
-                      type="int", default="1", metavar="LEVEL",
-                      help="Level of highest header in the HTML "
-                      "(default is %default)")
-    parser.add_option("--img-default-width", dest="img_width",
-                      metavar="WIDTH", default="8cm",
-                      help="Default image width (default is %default)")
-    parser.add_option("--img-default-height", dest="img_height",
-                      metavar="HEIGHT", default="6cm",
-                      help="Default image height (default is %default)")
-    parser.add_option("--dpi", dest="img_dpi", type="int",
-                      default=96, metavar="DPI", help="Screen resolution "
-                      "in Dots Per Inch (default is %default)")
-    parser.add_option("--no-network", dest="with_network",
-                      action="store_false", default=True,
-                      help="Do not download remote images")
-    options, args = parser.parse_args()
-    if options.version:
-        print "xhtml2odt %s" % __version__
-        sys.exit(0)
-    if len(args) > 0:
-        parser.error("illegal arguments: %s"% ", ".join(args))
-    if not options.input:
-        parser.error("No input provided")
-    if not options.output:
-        parser.error("No output provided")
-    if not options.template:
-        default_template = os.path.join(INSTALL_PATH, "template.odt")
-        if os.path.exists(default_template):
-            options.template = default_template
-        else:
-            parser.error("No ODT template provided")
-    if not os.path.exists(options.input):
-        parser.error("Can't find input file: %s" % options.input)
-    if not os.path.exists(options.template):
-        parser.error("Can't find template file: %s" % options.template)
-    return options
-
-def main():
-    """
-    Main function, called when the script is invoked on the command line.
-    """
-    options = get_options()
-    try:
-        htmlfile = HTMLFile(options)
-        htmlfile.read()
-        odtfile = ODTFile(options)
-        odtfile.open()
-        odtfile.import_xhtml(htmlfile.html)
-        odtfile.save(options.output)
-    except ODTExportError, ex:
-        print >> sys.stderr, ex
-        print >> sys.stderr, "Conversion failed."
-        sys.exit(1)
-
-if __name__ == '__main__':
-    main()
-
diff --git a/xhtml2odt/xsl/document-content.xsl b/xhtml2odt/xsl/document-content.xsl
deleted file mode 100644
index 9063b714e..000000000
--- a/xhtml2odt/xsl/document-content.xsl
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/xhtml2odt/xsl/document-content/block.xsl b/xhtml2odt/xsl/document-content/block.xsl
deleted file mode 100644
index cac6873e5..000000000
--- a/xhtml2odt/xsl/document-content/block.xsl
+++ /dev/null
@@ -1,169 +0,0 @@
-
-
-
-
-
-
-
-    
-    
-
-
-
-    
-
-
-
-
-
-    
-        
-    
-    
-    
-
-
-
-
-    
-    
-        
-            
-                
-            
-            
-                
-            
-        
-    
-    
-    
-        
-    
-
-
-
-
-    
-    
-        
-        
-            
-            
-                
-            
-            
-            
-                
-            
-        
-        
-            
-            
-                
-            
-        
-    
-
-
-
-
-    
-    
-        
-            
-                
-            
-            
-            
-                
-            
-        
-        
-            
-                
-            
-            
-            
-                
-            
-        
-        
-            
-        
-    
-
-
-
-
-    
-    
-
-
-
-
-    
-    
-
-
-
-
diff --git a/xhtml2odt/xsl/document-content/html5.xsl b/xhtml2odt/xsl/document-content/html5.xsl
deleted file mode 100644
index aff901af7..000000000
--- a/xhtml2odt/xsl/document-content/html5.xsl
+++ /dev/null
@@ -1,122 +0,0 @@
-
-
-
-
-
-
-    
-
-
-
-    
-
-
-
-    
-
-
-
-    
-    
-
-
-
-    
-
-
- 
-
-
-    
-        
-            
-                
-            
-        
-    
-
-
-
-    
-
-
-
-    
-
-
-
-
-    
-    
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    
-
-
-
-
diff --git a/xhtml2odt/xsl/document-content/ignore.xsl b/xhtml2odt/xsl/document-content/ignore.xsl
deleted file mode 100644
index d9c95bc00..000000000
--- a/xhtml2odt/xsl/document-content/ignore.xsl
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
-
-
-    
-
-
-    
-
-
-
-    
-
-
-
-
-
-    
-
-
-
-
-    
-        
-            
-            
-                
-                
-            
-        
-        
-            
-        
-    
-
-
-
-
-
-
-
-
-
-
diff --git a/xhtml2odt/xsl/document-content/inline.xsl b/xhtml2odt/xsl/document-content/inline.xsl
deleted file mode 100644
index 54701b7ce..000000000
--- a/xhtml2odt/xsl/document-content/inline.xsl
+++ /dev/null
@@ -1,167 +0,0 @@
-
-
-
-
-
-
-
-    
-        
-    
-
-
-
-
-    
-        
-    
-
-
-
-
-    
-        
-    
-
-
-
-
-    
-        
-    
-
-
-
-
-    
-        
-    
-
-
-
-    
-
-
-    
-
-
-
-
-    
-        
-    
-
-
-
-
-    
-    
-    
-        
-            ftn
-            
-        
-        
-            
-        
-        
-            
-                
-            
-        
-    
-
-
-
-
-    
-        
-    
-
-
-
-
-    
-        
-    
-
-
-
-
-    
-        
-    
-
-
-
-
-    "
-    
-    "
-
-
-
-
-    
-        
-    
-
-
-
-
-    
-        
-    
-
-
-
-
diff --git a/xhtml2odt/xsl/document-content/link.xsl b/xhtml2odt/xsl/document-content/link.xsl
deleted file mode 100644
index aa3c58266..000000000
--- a/xhtml2odt/xsl/document-content/link.xsl
+++ /dev/null
@@ -1,127 +0,0 @@
-
-
-
-
-
-
-    
-        
-    
-
-
-    
-        
-    
-
-
-
-    
-    
-        
-            
-                
-                    
-                
-            
-        
-        
-            
-                
-                    
-                
-            
-        
-    
-
-
-
-    
-    simple
-    
-        
-            
-                #
-            
-            
-                
-            
-        
-    
-    
-        
-            
-                
-                    
-                
-            
-        
-    
-    
-        
-            
-        
-        
-            
-        
-    
-    
-        
-            
-                
-                    
-                
-            
-        
-    
-
-
-
-
diff --git a/xhtml2odt/xsl/document-content/lists.xsl b/xhtml2odt/xsl/document-content/lists.xsl
deleted file mode 100644
index aa0d8eb05..000000000
--- a/xhtml2odt/xsl/document-content/lists.xsl
+++ /dev/null
@@ -1,130 +0,0 @@
-
-
-
-
-
-
-
-    
-    
-    
-        
-            
-        
-    
-
-
-
-
-
-    
-    
-    
-        
-            
-        
-    
-
-
-
-
-
-
-    
-        
-            
-                list-item
-                
-                    -bullet
-                    -number
-                    
-                
-            
-            
-                
-                
-            
-        
-        
-    
-
-
-
-
-
-
-    
-    
-
-
-
-
-    
-    
-
-
-
-
-    
-    
-
-
-
-
diff --git a/xhtml2odt/xsl/document-content/media.xsl b/xhtml2odt/xsl/document-content/media.xsl
deleted file mode 100644
index 5397a06df..000000000
--- a/xhtml2odt/xsl/document-content/media.xsl
+++ /dev/null
@@ -1,130 +0,0 @@
-
-
-
-
-
-
-    
-        
-    
-
-
-    
-
-
-
-
-    
-    
-    
-    
-    
-    
-    
-    
-    
-    
-
-    
-
-        
-            
-                as-char
-                image-inline
-            
-            
-                paragraph
-                image-left
-            
-            
-                paragraph
-                image-right
-            
-            
-                paragraph
-                image-center
-            
-        
-
-        imageobject-
-
-        
-            
-                
-                
-            
-            
-                
-                
-                
-            
-        
-
-        0.20cm
-
-        1
-        
-            
-            simple
-            embed
-            onLoad
-        
-
-        
-
-    
-
-
-
-
-
-
diff --git a/xhtml2odt/xsl/document-content/paragraph.xsl b/xhtml2odt/xsl/document-content/paragraph.xsl
deleted file mode 100644
index b9ffbec55..000000000
--- a/xhtml2odt/xsl/document-content/paragraph.xsl
+++ /dev/null
@@ -1,151 +0,0 @@
-
-
-
-
-
-
-    
-
-
-    
-
-
-
-    
-        
-            
-                
-                
-                    
-                        
-                    
-                
-                
-                
-                
-                    
-                    
-                        
-                    
-                
-            
-        
-        
-            
-                
-            
-        
-    
-
-
-
-
-
-    
-
-    
-
-        
-            
-                
-                
-                    list-item-bullet
-                
-                
-                    list-item-number
-                
-                Quotations
-                left
-                center
-                right
-                justify
-                Sender
-                center
-                Table_20_Heading
-                Table_20_Contents
-                Definition_20_Term
-                Definition_20_Description
-                Text_20_body
-            
-        
-
-        
-            
-                
-                    
-                    
-                
-                
-                    
-                
-            
-        
-
-    
-
-
-
-
-
diff --git a/xhtml2odt/xsl/document-content/section.xsl b/xhtml2odt/xsl/document-content/section.xsl
deleted file mode 100644
index 72f1479f2..000000000
--- a/xhtml2odt/xsl/document-content/section.xsl
+++ /dev/null
@@ -1,80 +0,0 @@
-
-
-
-
-
-
-
-    
-    
-        
-    
-
-    
-        section level 
-    
-
-    
-        Heading_20_
-            
-        
-        
-            
-        
-
-        
-
-    
-
-
-
-
-
diff --git a/xhtml2odt/xsl/document-content/tables.xsl b/xhtml2odt/xsl/document-content/tables.xsl
deleted file mode 100644
index f17354455..000000000
--- a/xhtml2odt/xsl/document-content/tables.xsl
+++ /dev/null
@@ -1,334 +0,0 @@
-
-
-
-
-
-
-    
-    
-
-
-
-    
-        
-            
-        
-        
-            Table 
-            
-                
-            
-            : 
-        
-    
-    
-        
-            
-                
-            
-        
-        
-        
-        
-    
-
-
-
-
-
-    
-    
-
-
-
-    
-
-
-
-    
-
-
-
-    
-        
-        
-            
-                
-            
-        
-        
-            
-        
-    
-
-
-
-    
-        
-        
-            
-                
-                    
-                
-            
-        
-        
-        
-    
-
-
-
-    
-        
-        
-        
-        
-    
-
-
-
-    
-        
-        
-        
-        
-    
-
-
-
-
-
-
-
-    
-    
-    
-    
-
-    horizontal-position=
-    horizontal-count=
-    vertical-position=
-    vertical-count=
-
-    
-
-        
-            table-default.cell-
-            
-            
-                H-
-            
-            
-                F-
-            
-            
-            
-            
-
-                
-                
-                    single
-                
-
-                
-                
-                    A4
-                
-                
-                
-                    C4
-                
-                
-                
-                    B4
-                
-
-                
-                
-                    A3
-                
-                
-                
-                    C3
-                
-                
-                
-                    B3
-                
-
-                
-                
-                    A3
-                
-                
-                
-                    C3
-                
-                
-                
-                    B3
-                
-
-                
-                
-                    A1
-                
-                
-                
-                    C1
-                
-                
-                
-                    B1
-                
-
-                
-                
-                    A2
-                
-                
-                
-                    C2
-                
-
-                
-                
-                    B2
-                
-
-            
-
-        
-
-        
-            
-                
-            
-        
-
-        
-            
-                
-            
-        
-
-        
-        
-             
-                
-            
-            
-                
-            
-        
-
-    
-
-    
-    
-        
-            
-                
-            
-        
-    
-
-    
-    
-        
-            
-                
-            
-        
-    
-
-
-
-
-
-    
-    
-        
-        
-            
-                
-            
-        
-    
-
-
-
-    
-    
-    
-        
-    
-
-
-
-
diff --git a/xhtml2odt/xsl/param.xsl b/xhtml2odt/xsl/param.xsl
deleted file mode 100644
index 5117d59fa..000000000
--- a/xhtml2odt/xsl/param.xsl
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
-
-
-    
-
-    
-    http://localhost
-
-    
-    0
-
-    
-    8cm
-    6cm
-
-    
-    2
-
-
-
diff --git a/xhtml2odt/xsl/specific.xsl b/xhtml2odt/xsl/specific.xsl
deleted file mode 100644
index bba06f2a4..000000000
--- a/xhtml2odt/xsl/specific.xsl
+++ /dev/null
@@ -1,56 +0,0 @@
-
-
-
-
-
-
-
-
-
diff --git a/xhtml2odt/xsl/specific/geshi.xsl b/xhtml2odt/xsl/specific/geshi.xsl
deleted file mode 100644
index a0795f473..000000000
--- a/xhtml2odt/xsl/specific/geshi.xsl
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
-
-
-
-
-    
-        
-            
-                
-            
-        
-        
-            
-        
-    
-    
-    
-
-
-
-    
-        
-    
-
-
-
-    
-        
-    
-
-
-
-     
-        
-    
-
-
-
-    
-        
-     
-
-
-
diff --git a/xhtml2odt/xsl/specific/pygments.xsl b/xhtml2odt/xsl/specific/pygments.xsl
deleted file mode 100644
index 0d46a36b0..000000000
--- a/xhtml2odt/xsl/specific/pygments.xsl
+++ /dev/null
@@ -1,170 +0,0 @@
-
-
-
-
-
-
-    
-        
-    
-    
-    
-
-
-
-
-
-    
-        
-        
-            
-                
-            
-        
-        
-        
-            
-                
-            
-        
-        
-        
-            
-                
-            
-        
-        
-        
-            
-                
-            
-        
-        
-        
-            
-                
-            
-        
-        
-        
-            
-                
-            
-        
-        
-        
-            
-                
-            
-        
-        
-        
-            
-                
-            
-        
-        
-        
-            
-                
-            
-        
-        
-        
-            
-                
-            
-        
-        
-        
-            
-                
-            
-        
-        
-        
-            
-                
-            
-        
-        
-        
-            
-                
-            
-        
-        
-        
-            
-        
-        
-        
-            
-                
-            
-        
-        
-        
-            
-                
-            
-        
-        
-            
-        
-    
-
-
-
diff --git a/xhtml2odt/xsl/specific/trac.xsl b/xhtml2odt/xsl/specific/trac.xsl
deleted file mode 100644
index 859bd3c83..000000000
--- a/xhtml2odt/xsl/specific/trac.xsl
+++ /dev/null
@@ -1,61 +0,0 @@
-
-
-
-
-
-
-
-    
-        
-    
-
-
-
diff --git a/xhtml2odt/xsl/styles.xsl b/xhtml2odt/xsl/styles.xsl
deleted file mode 100644
index 44c5bca64..000000000
--- a/xhtml2odt/xsl/styles.xsl
+++ /dev/null
@@ -1,143 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    
-
-
-
-
-
-    
-        
-        
-            
-                
-                
-            
-        
-        
-        
-        
-        
-        
-        
-    
-
-
-
-
-    
-        
-        
-            
-                
-                
-            
-        
-        
-        
-    
-
-
-
-
-    
-        
-        
-            
-                
-                
-            
-        
-        
-        
-    
-
-
-
-
-    
-        
-            inline-style.
-            
-        
-        
-    
-
-
-
-
-    
-        
-        
-    
-
-
-
diff --git a/xhtml2odt/xsl/styles/automatic-styles.xsl b/xhtml2odt/xsl/styles/automatic-styles.xsl
deleted file mode 100644
index 6c079be9d..000000000
--- a/xhtml2odt/xsl/styles/automatic-styles.xsl
+++ /dev/null
@@ -1,388 +0,0 @@
-
-
-
-
-
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-    
-        
-    
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-    
-
-    
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-             
-        
-    
-
-    
-        
-             
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-
-
-
-    
-        
-            
-        
-    
-
-
-
-
diff --git a/xhtml2odt/xsl/styles/fonts.xsl b/xhtml2odt/xsl/styles/fonts.xsl
deleted file mode 100644
index 31bd2ea96..000000000
--- a/xhtml2odt/xsl/styles/fonts.xsl
+++ /dev/null
@@ -1,62 +0,0 @@
-
-
-
-
-
-
-    
-        
-    
-
-
-
-
diff --git a/xhtml2odt/xsl/styles/highlight.xsl b/xhtml2odt/xsl/styles/highlight.xsl
deleted file mode 100644
index 46e4d2627..000000000
--- a/xhtml2odt/xsl/styles/highlight.xsl
+++ /dev/null
@@ -1,152 +0,0 @@
-
-
-
-
-
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-
-
-
diff --git a/xhtml2odt/xsl/styles/inline.xsl b/xhtml2odt/xsl/styles/inline.xsl
deleted file mode 100644
index c000259e1..000000000
--- a/xhtml2odt/xsl/styles/inline.xsl
+++ /dev/null
@@ -1,114 +0,0 @@
-
-
-
-
-
-
-
-
-    
-        
-            
-                
-            
-            
-                
-                    
-                
-            
-        
-    
-
-
-
-
-
-    
-    
-        
-            
-                
-            
-            
-                
-            
-        
-        
-            
-                
-                
-            
-        
-    
-
-
-
-
-    
-    
-    
-        
-            
-        
-    
-
-
-
diff --git a/xhtml2odt/xsl/styles/main-styles.xsl b/xhtml2odt/xsl/styles/main-styles.xsl
deleted file mode 100644
index 7ebd3c9c4..000000000
--- a/xhtml2odt/xsl/styles/main-styles.xsl
+++ /dev/null
@@ -1,435 +0,0 @@
-
-
-
-
-
-
-    
-        
-            
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-            
-        
-    
-
-    
-        
-            
-                
-            
-            
-                
-            
-            
-                
-            
-            
-                
-            
-            
-                
-            
-            
-                
-            
-            
-                
-            
-            
-                
-            
-            
-                
-            
-            
-                
-            
-        
-    
-
-    
-        
-            
-                
-            
-            
-                
-            
-            
-                
-            
-            
-                
-            
-            
-                
-            
-            
-                
-            
-            
-                
-            
-            
-                
-            
-            
-                
-            
-            
-                
-            
-        
-    
-
-    
-        
-            
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-            
-        
-    
-
-    
-        
-            
-        
-    
-
-    
-        
-            
-            
-        
-    
-
-
-
-
diff --git a/xhtml2odt/xsl/xhtml2odt.xsl b/xhtml2odt/xsl/xhtml2odt.xsl
deleted file mode 100644
index 62f24326f..000000000
--- a/xhtml2odt/xsl/xhtml2odt.xsl
+++ /dev/null
@@ -1,116 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-    
-
-
-
-
-    
-        
-            
-
-            
-            
-            
-            
-                
-            
-        
-        
-            
-                
-                
-            
-        
-    
-
-
-
-
-    
-        Unknown tag : 
-    
-    
-        
-        
-    
-
-
-
-
-- 
cgit v1.2.3