From: Kyle Meyer <kyle@kyleam.com>
To: emacs-orgmode@gnu.org
Cc: "Mark A. Hershberger" <mah@nichework.com>
Subject: [RFH] thoughts on porting an Emacs etc/schema/ change
Date: Mon, 24 May 2021 00:57:36 -0400 [thread overview]
Message-ID: <87o8d07mpr.fsf@kyleam.com> (raw)
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?
reply other threads:[~2021-05-24 5:01 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87o8d07mpr.fsf@kyleam.com \
--to=kyle@kyleam.com \
--cc=emacs-orgmode@gnu.org \
--cc=mah@nichework.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).