From 14211506665d460091c8d93d9bd10fdb57f87c69 Mon Sep 17 00:00:00 2001 From: "Dr. Martin Goik" <goik@hdm-stuttgart.de> Date: Sun, 2 Jun 2019 14:52:41 +0200 Subject: [PATCH] Embedded SVG data in ILIAS pages --- bin/docbook2ilias | 11 ++++- ws/Docbook/CustomLayer/Klausur/common.xsl | 22 +++++++++ .../CustomLayer/Klausur/docbook2klausur.xsl | 23 ++++++--- .../CustomLayer/Klausur/docbook2svgembedd.xsl | 48 +++++++++++++++++++ 4 files changed, 96 insertions(+), 8 deletions(-) create mode 100644 ws/Docbook/CustomLayer/Klausur/common.xsl create mode 100644 ws/Docbook/CustomLayer/Klausur/docbook2svgembedd.xsl diff --git a/bin/docbook2ilias b/bin/docbook2ilias index 0a23bc280..59ade8e8f 100755 --- a/bin/docbook2ilias +++ b/bin/docbook2ilias @@ -7,12 +7,21 @@ #-s:$1 \ # -xsl:/usr/share/hdm-docbook-xsl/CustomLayer/Klausur/docbook2klausur.xsl +destdir=/tmp/__gensvg_$$ +svgGenerateScript=$destdir/__create__.sh +mkdir -p $destdir + +java -cp "/usr/share/hdm-docbook-xsl/lib/xslthl-2.1.3.jar:/usr/share/hdm-docbook-xsl/docbook-xsl-1.79.2/tools/lib/saxon.jar:/usr/share/java/xercesImpl.jar" -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl -Dorg.apache.xerces.xni.parser.XMLParserConfiguration=org.apache.xerces.parsers.XIncludeParserConfiguration com.icl.saxon.StyleSheet klausur.xml /usr/share/hdm-docbook-xsl/CustomLayer/Klausur/docbook2svgembedd.xsl tmpDestDir=$destdir > $svgGenerateScript + +sh $svgGenerateScript java -cp "/usr/share/hdm-docbook-xsl/lib/xslthl-2.1.3.jar:/usr/share/hdm-docbook-xsl/docbook-xsl-1.79.2/tools/lib/saxon.jar:/usr/share/java/xercesImpl.jar" \ -Djavax.xml.parsers.SAXParserFactory=org.apache.xerces.jaxp.SAXParserFactoryImpl \ -Dorg.apache.xerces.xni.parser.XMLParserConfiguration=org.apache.xerces.parsers.XIncludeParserConfiguration \ com.icl.saxon.StyleSheet \ $1 \ - /usr/share/hdm-docbook-xsl/CustomLayer/Klausur/docbook2klausur.xsl + /usr/share/hdm-docbook-xsl/CustomLayer/Klausur/docbook2klausur.xsl tmpDestDir=$destdir + +rm -rf $destdir #end diff --git a/ws/Docbook/CustomLayer/Klausur/common.xsl b/ws/Docbook/CustomLayer/Klausur/common.xsl new file mode 100644 index 000000000..fed57a15f --- /dev/null +++ b/ws/Docbook/CustomLayer/Klausur/common.xsl @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:html="http://www.w3.org/1999/xhtml" + xmlns:db="http://docbook.org/ns/docbook" + exclude-result-prefixes="xlink db svg html" + version="2.0"> + + <xsl:param name="tmpDestDir"/> + + + <xsl:template name="getBase64Filename"> + <xsl:param name="svgFilename"/> + <xsl:value-of select="$tmpDestDir"/> + <xsl:text>/</xsl:text> + <xsl:value-of select="$svgFilename"/> + <xsl:text>.base64</xsl:text> + </xsl:template> + + +</xsl:stylesheet> diff --git a/ws/Docbook/CustomLayer/Klausur/docbook2klausur.xsl b/ws/Docbook/CustomLayer/Klausur/docbook2klausur.xsl index 843e76c66..979615fb9 100644 --- a/ws/Docbook/CustomLayer/Klausur/docbook2klausur.xsl +++ b/ws/Docbook/CustomLayer/Klausur/docbook2klausur.xsl @@ -9,18 +9,13 @@ xmlns:m="http://www.w3.org/1998/Math/MathML" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:db="http://docbook.org/ns/docbook" - - xmlns:s6hl="java:net.sf.xslthl.ConnectorSaxon6" xmlns:xslthl="http://xslthl.sf.net" extension-element-prefixes="s6hl xslthl" exclude-result-prefixes="xs xlink xila xi trans db svg html m" version="2.0"> - <!-- - xmlns:fn = "http://www.w3.org/2005/xpath-functions" - --> - + <xsl:include href="common.xsl"/> <xsl:template match="/db:book"> <xsl:apply-templates select="db:chapter"/> @@ -149,12 +144,15 @@ <xsl:template match="db:td"> <td valign="top"> <xsl:copy-of select="@colspan"/> + <xsl:copy-of select="@rowspan"/> <xsl:apply-templates/> </td> </xsl:template> <xsl:template match="db:th"> - <td valign="top"><!-- Sigh! ILIAS HTML handling is soooo stupid! --> + <td style="text-align: center; font-weight: bolder;" valign="top"> + <xsl:copy-of select="@colspan"/> + <xsl:copy-of select="@rowspan"/> <xsl:apply-templates/> </td> </xsl:template> @@ -229,7 +227,18 @@ <xsl:apply-templates/> </span> </xsl:template> + + <xsl:template match="db:mediaobject[db:imageobject[db:imagedata]]"> + <xsl:variable name="base64Filename"> + <xsl:call-template name="getBase64Filename"> + <xsl:with-param name="svgFilename" select="db:imageobject/db:imagedata/@fileref"/> + </xsl:call-template> + </xsl:variable> + + <img src="data:image/svg+xml;base64,{document($base64Filename)/data/text()}"/> + </xsl:template> + <!-- link mode --> diff --git a/ws/Docbook/CustomLayer/Klausur/docbook2svgembedd.xsl b/ws/Docbook/CustomLayer/Klausur/docbook2svgembedd.xsl new file mode 100644 index 000000000..bbe961324 --- /dev/null +++ b/ws/Docbook/CustomLayer/Klausur/docbook2svgembedd.xsl @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns:html="http://www.w3.org/1999/xhtml" + xmlns:db="http://docbook.org/ns/docbook" + exclude-result-prefixes="xlink db svg html" + version="2.0"> + + <xsl:include href="common.xsl"/> + + <xsl:variable name="n"> + <xsl:text> +</xsl:text> + </xsl:variable> + + + <xsl:output method="text"/> + <xsl:template match="/"> + <xsl:text>#!/bin/bash</xsl:text> + <xsl:value-of select="$n"/> + <xsl:value-of select="$n"/> + <xsl:apply-templates select="//db:imagedata"/> + </xsl:template> + + <xsl:template match="db:imagedata"> + <xsl:variable name="base64GeneratedFilename"> + <xsl:call-template name="getBase64Filename"> + <xsl:with-param name="svgFilename" select="@fileref"/> + </xsl:call-template> + </xsl:variable> + + + <xsl:text>echo -n '<data>' > </xsl:text> + <xsl:value-of select="$base64GeneratedFilename"/> + <xsl:value-of select="$n"/> + <xsl:text>base64 </xsl:text> + <xsl:value-of select="@fileref"/> + <xsl:text> >> </xsl:text> + <xsl:value-of select="$base64GeneratedFilename"/> + <xsl:value-of select="$n"/> + <xsl:text>echo '</data>' >> </xsl:text> + <xsl:value-of select="$base64GeneratedFilename"/> + <xsl:value-of select="$n"/> + </xsl:template> + + +</xsl:stylesheet> -- GitLab