* [RFH] thoughts on porting an Emacs etc/schema/ change
@ 2021-05-24 4:57 Kyle Meyer
0 siblings, 0 replies; only message in thread
From: Kyle Meyer @ 2021-05-24 4:57 UTC (permalink / raw)
To: emacs-orgmode; +Cc: Mark A. Hershberger
I'm trying to figure out how to port changes to etc/schema/ files in the
Emacs repo back to the Org repo. I'd appreciate feedback from anyone
who knows anything about the etc/schema/ files in Org's tree and/or
ox-odt.
Background
==========
Org has a few files in etc/schema:
org$ git ls-files --stage etc/schema
100644 87f84d1ea87e1e0eef759fac1bd7db74ce0a704e 0 etc/schema/od-manifest-schema-v1.2-os.rnc
100644 8d679d62e4ef1a21707250cf4cabcd5b657d7683 0 etc/schema/od-schema-v1.2-os.rnc
100644 f1e0ed7856f24c58488bbeac1df922a7d5100776 0 etc/schema/schemas.xml
Two of those are in Emacs's tree as is:
emacs$ git ls-tree -r origin/emacs-27 -- etc/schema/ | grep od
100644 blob 87f84d1ea87e1e0eef759fac1bd7db74ce0a704e etc/schema/od-manifest-schema-v1.2-os.rnc
100644 blob 8d679d62e4ef1a21707250cf4cabcd5b657d7683 etc/schema/od-schema-v1.2-os.rnc
The contents of Org's etc/schema/schemas.xml, on the other hand, are
_added_ within Emacs's etc/schema/schemas.xml.
org$ git show f1e0ed7856f24c58488bbeac1df922a7d5100776
<?xml version="1.0"?>
<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
<documentElement prefix="office" typeId="OpenDocument"/>
<documentElement prefix="manifest" localName="manifest" typeId="OpenDocument Manifest"/>
<typeId id="OpenDocument" uri="od-schema-v1.2-os.rnc"/>
<typeId id="OpenDocument Manifest" uri="od-manifest-schema-v1.2-os.rnc"/>
</locatingRules>
emacs$ git show origin/emacs-27:etc/schema/schemas.xml | wc -l
65
emacs$ git show origin/emacs-27:etc/schema/schemas.xml | grep -i 'opendoc\|od-'
<documentElement prefix="office" typeId="OpenDocument"/>
<documentElement prefix="manifest" localName="manifest" typeId="OpenDocument Manifest"/>
<typeId id="OpenDocument" uri="od-schema-v1.2-os.rnc"/>
<typeId id="OpenDocument Manifest" uri="od-manifest-schema-v1.2-os.rnc"/>
Changes on the Emacs master branch
==================================
A commit on Emacs's master branch (author cc'd) makes changes to these
files.
emacs $ git ls-tree -r master -- etc/schema/ | grep od
100644 blob 87f84d1ea87e1e0eef759fac1bd7db74ce0a704e etc/schema/od-manifest-schema-v1.2-os.rnc
emacs$ git show --numstat --format=%B f1f351def3d84813d2c4b2174dfef07b01bec058
Update rnc to use Open Document's Relax-NG schema to version 1.3
* Use the LibreOffice Relax-NG files since they include a hack to
support 1.2.
* rng source:
https://raw.githubusercontent.com/freedesktop/libreoffice-core/master/
schema/libreoffice/OpenDocument-schema-v1.3%2Blibreoffice.rng
* translation to rnc with trang:
trang -I rng -O rnc OpenDocument-schema-v1.3+libreoffice.rng \
OpenDocument-schema-v1.3+libreoffice.rnc
892 0 etc/schema/OpenDocument-schema-v1.3+libreoffice.rnc
5914 5780 etc/schema/{od-schema-v1.2-os.rnc => OpenDocument-schema-v1.3.rnc}
5 1 etc/schema/schemas.xml
Here are the changes to schemas.xml:
emacs$ git diff f1f351def3d84813d2c4b2174dfef07b01bec058^- etc/schema/schemas.xml
diff --git a/etc/schema/schemas.xml b/etc/schema/schemas.xml
index 7fd91b8c72..f8acb0d40c 100644
--- a/etc/schema/schemas.xml
+++ b/etc/schema/schemas.xml
@@ -31,6 +31,10 @@
<namespace ns="http://relaxng.org/ns/structure/1.0" typeId="RELAX NG"/>
<namespace ns="http://thaiopensource.com/ns/locating-rules/1.0"
uri="locate.rnc"/>
+ <namespace ns="urn:oasis:names:tc:opendocument:xmlns:office:1.0" typeId="LibreOffice"/>
+ <namespace ns="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" typeId="LibreOffice"/>
+ <namespace ns="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" typeId="LibreOffice"/>
+ <namespace ns="urn:oasis:names:tc:opendocument:xmlns:manifest:1.0" typeId="OpenDocument Manifest"/>
<documentElement localName="stylesheet" typeId="XSLT"/>
<documentElement prefix="xsl" localName="transform" typeId="XSLT"/>
@@ -59,7 +63,7 @@
<documentElement prefix="office" typeId="OpenDocument"/>
<documentElement prefix="manifest" localName="manifest" typeId="OpenDocument Manifest"/>
- <typeId id="OpenDocument" uri="od-schema-v1.2-os.rnc"/>
+ <typeId id="LibreOffice" uri="OpenDocument-schema-v1.3+libreoffice.rnc"/>
<typeId id="OpenDocument Manifest" uri="od-manifest-schema-v1.2-os.rnc"/>
</locatingRules>
Porting to Org's tree
=====================
So, coming back to the Org repo, I guess that'd be
* delete the od-schema-v1.2-os.rnc file and add
OpenDocument-schema-v1.3.rnc
* update the typeID line for od-schema-v1.2-os.rnc in Org's
etc/schema/schemas.xml to match the
OpenDocument-schema-v1.3+libreoffice.rnc line in the diff above
* add the namespace lines to Org's etc/schema/schemas.xml (?)
But I know nothing about those files or ox-odt, so testing it on my end
would mostly be fumbling around to see if I spot any breakage when
exporting with ox-odt.
Does the above approach look reasonable? Will it break ox-odt or be
problematic for some other reason?
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2021-05-24 5:01 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-05-24 4:57 [RFH] thoughts on porting an Emacs etc/schema/ change Kyle Meyer
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).