2014 ·English ·47 slides ·2747 views

Plone Integration with eXist-db - Structured Content rocks

This document discusses integrating the eXist-db XML database with Plone. It presents an XML-based workflow for publishing medical guidelines, including converting documents to XML, storing them in eXist-db with a structured folder structure, and mapping that structure to Plone using a custom content type. This allows managing XML documents and assets in eXist-db while surfacing them through Plone. The integration provides benefits like improved production safety, validation, and a smaller codebase compared to the original HTML-based system.

Slide 1 of 47 — Plone Integration with eXist-db - Structured Content rocks
1/47 arrow keys or swipe · click image for fullscreen
Slide 1 of 47 — Plone Integration with eXist-db - Structured Content rocks
1/47

Details

Uploaded
30 October 2014
Updated
24 November 2022
Language
English
Slides
47
Image size
2048x1536
Views
2747
SlideShare ID
40913011
Uploaded format
PDF, PPTX
Collected
2026-09-27

The description above is SlideShare's automatically generated summary, not the author's own text.

Source & completeness

Content
original + reconstructed
Validation
passed
Slide text
available (33 slides)
Original files
yes
  • original.pdf PDF · 6.8 MB · 47 slides
  • original.pptx PPTX · 6.1 MB · 47 slides
Checksums (SHA-256)
  • original.pdf: d5035baa155cb815d99abdd4a8164d9d53913bb24d3314e04fa8adbe8c3c961c
  • original.pptx: 453a2178968fc388008079d38b5270995a7e6035141cf8297df4ac4bbcb1023c

Slide images come from SlideShare's public renderings (2048x1536 px, WebP). Any file marked as reconstructed is assembled from those images and is not the author's original source file.

Full text of every slide

Text extracted by SlideShare from the slide images — may contain OCR errors. 33 of 47 slides have text.

1
Structured Content Rocks! Integration of eXist-db with Plone Andreas Jung/@MacYET ZOPYX • www.zopyx.com Plone Conference 2014 • Bristol, UK
3
Python, Plone, Zope nerd Publishing wizard Dinosaur of Zope (Paul Everitt)
8
Agenda
9
Agenda ‣ XML-based publication workflows ‣ context: ‣ DOCX ➝ XML conversion ‣ XML➝ PDF/EPub conversion ‣ Integration of Plone with XML database eXist-db www.produce-and-publish.com Professional XML Publishing (C) 2014 ZOPYX
10
What is Structured Content? ‣ XML of course ‣ HTML is not suitable for publishing purposes in general ‣ XML Schemas or Document Type Definition for ‣ defining the exact structure of a document ‣ syntactical and semantical validation ‣ industry standard in the publishing world ‣ defacto exchange format with third-party applications www.produce-and-publish.com Professional XML Publishing (C) 2014 ZOPYX
11
What is ? ‣ A NoSQL Document Database and Application platform ‣ Open-source XML database written in Java ‣ stores documents: XML/HTML ‣ stores arbitrary (binary) data (DOCX, PDF, images, …) ‣ XML technology: XPath 3, XForms, XSLT 2, XQuery 3, XUpdate ‣ comes with Lucence for fulltext indexing ‣ open for all related Java XML technology www.produce-and-publish.com Professional XML Publishing (C) 2014 ZOPYX
12
Why ? ‣ Hierarchical storage model (collections -> folders) ‣ Content and scripts accessible through WebDAV ‣ Scripting using XQuery ‣ XQuery scripts callable through REST API ‣ Scripts results serializable to JSON, HTML, XML ‣ Very good experience during evaluation period www.produce-and-publish.com Professional XML Publishing (C) 2014 ZOPYX
13
How do we use ‣ storing XML documents ‣ indexing XML documents ‣ searching XML documents ‣ aggregation of XML documents ‣ manipulation of XML documents ? www.produce-and-publish.com Professional XML Publishing (C) 2014 ZOPYX
14
Onkopedia project? ‣ www.dgho-onkopedia.de www.onkopedia-guidelines.info ‣ Plone project since 2010 ‣ Portal for medical guidelines for diagnosis and treatment of hematology and oncology diseases ‣ DOCX ➝ HTML ➝ PDF (Produce & Publish) ‣ Owned by Deutsche Gesellschaft für Hämatologie und Medizinische Onkologie in cooperation with further medical societies (AT, CH) www.produce-and-publish.com Professional XML Publishing (C) 2014 ZOPYX
24
Current editorial workflow Word -> XHTML (OpenOffice, webservice) Editorial fine-tuning for images, imagemaps, linking Conversion to EPUB and PDF Publishing www.produce-and-publish.com Professional XML Publishing (C) 2014 ZOPYX
25
Reasons for switching to XML ‣ HTML not suitable for further requirements ‣ implementation too tight coupled to Plone ‣ a lot of fragile and workaround code for Plone ‣ need for better production-safety ‣ need for better automated production ‣ interfaces and APIs for external systems requested by other vendors www.produce-and-publish.com Professional XML Publishing (C) 2014 ZOPYX
26
Content structure inside eXist-db
27
root de en onkopedia my-onkopedia onkopedia-p knowledge-database mammakarzinom-der-frau mammakarzinom-des-mannes mammakarzinom-der-frau … … onkopedia draft current archive source xml html media pdf incoming.docx index.xml index.html 1.jpg 2.jpg … index.pdf Version 25.03.2012 Version 01.04.2013 Version 07.08.2014 my-onkopedia source incoming.docx xml index.xml html index.html media 1.jpg 2.jpg … pdf index.pdf source incoming.docx xml index.xml html index.html media 1.jpg 2.jpg … pdf index.pdf
28
onkopedia onkopedia mammakarzinom-der-frau mammakarzinom-des-mannes mammakarzinom-der-frau … draft current archive source xml html media pdf incoming.docx index.xml index.html 1.jpg 2.jpg … index.pdf source incoming.docx xml index.xml html index.html media 1.jpg 2.jpg … pdf index.pdf Version 25.03.2012 source incoming.docx xml index.xml html index.html media 1.jpg 2.jpg … pdf index.pdf
29
onkopedia onkopedia mammakarzinom-der-frau mammakarzinom-des-mannes mammakarzinom-der-frau … draft current archive source xml html media pdf incoming.docx index.xml index.html 1.jpg 2.jpg … index.pdf source incoming.docx xml index.xml html index.html media 1.jpg 2.jpg … pdf index.pdf Version 25.03.2012 Publish source incoming.docx xml index.xml html index.html media 1.jpg 2.jpg … pdf index.pdf
30
mammakarzinom-der-frau draft current archive html media pdf index.html 1.jpg 2.jpg … index.pdf source incoming.docx xml index.xml html index.html media 1.jpg 2.jpg … pdf index.pdf Version 25.03.2012 Version 01.04.2013 Version 07.08.2014 source incoming.docx xml index.xml html index.html media 1.jpg 2.jpg … pdf index.pdf Archive
31
root de en onkopedia my-onkopedia onkopedia-p knowledge-database mammakarzinom-der-frau mammakarzinom-des-mannes mammakarzinom-der-frau … … onkopedia draft current archive source xml html media pdf incoming.docx index.xml index.html 1.jpg 2.jpg … index.pdf Version 25.03.2012 Version 01.04.2013 Version 07.08.2014 my-onkopedia source incoming.docx xml index.xml html index.html media 1.jpg 2.jpg … pdf index.pdf source incoming.docx xml index.xml html index.html media 1.jpg 2.jpg … pdf index.pdf
32
How to map this into Plone?
33
root de en onkopedia my-onkopedia onkopedia-p knowledge-database mammakarzinom-der-frau mammakarzinom-des-mannes mammakarzinom-der-frau … … onkopedia draft current archive source xml html media pdf incoming.docx index.xml index.html 1.jpg 2.jpg … index.pdf Version 25.03.2012 Version 01.04.2013 Version 07.08.2014 my-onkopedia source incoming.docx xml index.xml html index.html media 1.jpg 2.jpg … pdf index.pdf source incoming.docx xml index.xml html index.html media 1.jpg 2.jpg … pdf index.pdf
34
de en my-onkopedia onkopedia-p knowledge-database mammakarzinom-des-mannes mammakarzinom-der-frau … onkopedia draft current archive source xml html media pdf incoming.docx index.xml index.html 1.jpg 2.jpg … index.pdf source incoming.docx xml index.xml html index.html media 1.jpg 2.jpg … pdf index.pdf Version 25.03.2012 Version 01.04.2013 Version 07.08.2014 Connector Connector source incoming.docx xml index.xml html index.html media 1.jpg 2.jpg … pdf index.pdf Connector http://host/de/my-onkopedia/mammakarzinom-der-frau/archive/version-25.03.2014/@@view/xml/index.xml
35
de en my-onkopedia onkopedia-p knowledge-database mammakarzinom-des-mannes mammakarzinom-der-frau … onkopedia draft current archive source xml html media pdf incoming.docx index.xml index.html 1.jpg 2.jpg … index.pdf source incoming.docx xml index.xml html index.html media 1.jpg 2.jpg … pdf index.pdf Version 25.03.2012 Version 01.04.2013 Version 07.08.2014 source incoming.docx xml index.xml html index.html media 1.jpg 2.jpg … pdf index.pdf Connector http://host/de/my-onkopedia/mammakarzinom-der-frau/archive/version-25.03.2014/@@view/xml/index.xml
36
zopyx.existdb ‣ Plone content-type (Dexterity) ‣ maps a subtree from eXist-db into Plone (similar to Reflecto) ‣ traversal support ‣ UI for managing collections (add, remove, rename) ‣ ACE editor integration ‣ pluggable view registry for eXist-db content (by-suffix) ‣ ZIP import/export ‣ support for XQuery scripts called through the RESTXQ layer of eXist-db ‣ persistent per-connector logging ‣ small and extensible ‣ Plone security & rights management apply on the connector level www.produce-and-publish.com Professional XML Publishing (C) 2014 ZOPYX
37
Use cases and anti patterns ‣ Use cases: ‣ Mapping existing collections of XML documents and associated resources into Plone ‣ Building supplementary (web) applications and functionality on top of XML collections ‣ Anti patterns: ‣ not a general storage replacement for content-types ‣ not a transparent storage like AttributeStorage, SQLStorage (AT) etc. www.produce-and-publish.com Professional XML Publishing (C) 2014 ZOPYX
38
Architecture Onkopedia Onkopedia Editor (Intern) Produce & Publish XML to PDF Guidelines (XML) REST API Addendums (XML) Query Server Word2XML Plone CMS DGHO Member Database DOCX Authentication Onkopedia Site Visitor Onkopedia Site Visitor XML, Assets Authorization Onkopedia Editor (Intern) Onkopedia Editor (Intern) PDF, EPUB HTML, XML + CSS XQuery XML, HTML, JSON Mac Assets (Images, Styles) XML Editing, Assets Editing PDF DOCX XML Editing, Assets Editing WebDAV WebDAV Windows JSON HTML XQuery XML WebDAV External Systems Clinical systems Medical applications Medical databases HTTP eXist-db XML database www.produce-and-publish.com Professional XML Publishing (C) 2014 ZOPYX
39
Onkopedia Onkopedia Editor (Intern) Produce & Publish XML to PDF Word2XML Plone CMS DOCX Authentication Onkopedia Site Visitor XML, Assets Authorization PDF, EPUB HTML, XML + CSS JSON HTML XQuery XML WebDAV Onkopedia Editor (Intern) Onkopedia Site Visitor Onkopedia Editor (Intern)
40
Produce & Publish XML to PDF Query Server Word2XML Onkopedia Site Visitor Editor Onkopedia Plone CMS DGHO Member Database DOCX Authentication XML, Assets Authorization PDF, EPUB HTML, XML + CSS XQuery XML, HTML, JSON Mac XML Editing, Assets Editing XML Editing, Assets Editing WebDAV WebDAV Windows JSON HTML XQuery XML WebDAV Onkopedia Site Visitor Onkopedia Editor HTTP Guidelines (XML) REST API Addendums (XML) Assets (Images, Styles) PDF DOCX eXist-db XML database
41
Produce & Publish XML to PDF Query Server Onkopedia Site Visitor Editor Onkopedia Plone CMS XML, Assets Authorization PDF, EPUB HTML, XML + CSS XQuery XML, HTML, JSON Mac XML Editing, Assets Editing XML Editing, Assets Editing WebDAV WebDAV JSON HTML XQuery XML WebDAV Onkopedia Site Visitor Onkopedia Editor External Systems Clinical systems Medical applications Medical databases HTTP Guidelines (XML) REST API Addendums (XML) Assets (Images, Styles) PDF DOCX eXist-db XML database
42
Architecture Onkopedia Onkopedia Editor (Intern) Produce & Publish XML to PDF Guidelines (XML) REST API Addendums (XML) Query Server Word2XML Plone CMS DGHO Member Database DOCX Authentication Onkopedia Site Visitor Onkopedia Site Visitor XML, Assets Authorization Onkopedia Editor (Intern) Onkopedia Editor (Intern) PDF, EPUB HTML, XML + CSS XQuery XML, HTML, JSON Mac Assets (Images, Styles) XML Editing, Assets Editing PDF DOCX XML Editing, Assets Editing WebDAV WebDAV Windows JSON HTML XQuery XML WebDAV External Systems Clinical systems Medical applications Medical databases HTTP eXist-db XML database www.produce-and-publish.com Professional XML Publishing (C) 2014 ZOPYX
43
Hidden gem: pyfilesystem
44
pyfilesystem ‣ unified Python API for accessing different filesystems ‣ local ‣ WebDAV ‣ Dropbox ‣ SFTP/SSH ‣ S3 ‣ (Plone) ‣ Write portable code independent of the underlaying FS ‣ the filesystem is just a configuration option www.produce-and-publish.com Professional XML Publishing (C) 2014 ZOPYX
45
pyfilesystem from fs.contrib.davfs import davfs handle = DAVFS(„http://host/existdb/webdavdb“) files = handle.listdir() with handle.open(„foo.txt“, „w“) as fp: fp.write(„hello world“) www.produce-and-publish.com Professional XML Publishing (C) 2014 ZOPYX
46
Conclusion ‣ much better production-safety through XML by applying validations, schema/DTD checks etc. ‣ replaced tons of Plone-specific and fragile Plone code ‣ well-defined DOCX ➝ XML conversion workflow ‣ much smaller code base ‣ easy to build Plone-XML apps on top of zopyx.existdb www.produce-and-publish.com Professional XML Publishing (C) 2014 ZOPYX
47
Questions?