Text extracted by SlideShare from the slide images — may contain OCR errors. 33 of 47 slides have text.
1Structured Content Rocks!
Integration of eXist-db with Plone
Andreas Jung/@MacYET
ZOPYX • www.zopyx.com
Plone Conference 2014 • Bristol, UK
3Python, Plone, Zope nerd
Publishing wizard
Dinosaur of Zope (Paul Everitt)
9Agenda
‣ 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
10What 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
11What 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
12Why
?
‣ 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
13How 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
14Onkopedia 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
24Current 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
25Reasons 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
26Content structure
inside eXist-db
27root
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
28onkopedia
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
29onkopedia
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
30mammakarzinom-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
31root
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
32How to map this into Plone?
33root
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
34de
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
35de
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
36zopyx.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
37Use 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
38Architecture
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
39Onkopedia 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)
40Produce & 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
41Produce & 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
42Architecture
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
43Hidden gem:
pyfilesystem
44pyfilesystem
‣ 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
45pyfilesystem
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
46Conclusion
‣ 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