[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[RFH] thoughts on porting an Emacs etc/schema/ change
From: |
Kyle Meyer |
Subject: |
[RFH] thoughts on porting an Emacs etc/schema/ change |
Date: |
Mon, 24 May 2021 00:57:36 -0400 |
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?
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [RFH] thoughts on porting an Emacs etc/schema/ change,
Kyle Meyer <=