diff --git a/src/main/java/org/olat/core/util/openxml/OpenXMLDocument.java b/src/main/java/org/olat/core/util/openxml/OpenXMLDocument.java index d4cf066313d15c238ad557e2475dd3ec2527dc8d..c2e754eab5311bb32d26e6e6e644dc1f3d6b018f 100644 --- a/src/main/java/org/olat/core/util/openxml/OpenXMLDocument.java +++ b/src/main/java/org/olat/core/util/openxml/OpenXMLDocument.java @@ -406,6 +406,7 @@ public class OpenXMLDocument { public void appendHtmlText(String html, Spacing spacing) { if(!StringHelper.containsNonWhitespace(html)) return; try { + html = cleanUpHTML(html); SAXParser parser = new SAXParser(); parser.setContentHandler(new HTMLToOpenXMLHandler(this, spacing)); parser.parse(new InputSource(new StringReader(html))); @@ -419,6 +420,7 @@ public class OpenXMLDocument { public void appendHtmlText(String html, boolean newParagraph) { if(!StringHelper.containsNonWhitespace(html)) return; try { + html = cleanUpHTML(html); SAXParser parser = new SAXParser(); Element paragraphEl = getParagraphToAppendTo(newParagraph); parser.setContentHandler(new HTMLToOpenXMLHandler(this, paragraphEl)); @@ -433,6 +435,7 @@ public class OpenXMLDocument { public void appendHtmlText(String html, boolean newParagraph, HTMLToOpenXMLHandler handler) { if(!StringHelper.containsNonWhitespace(html)) return; try { + html = cleanUpHTML(html); SAXParser parser = new SAXParser(); Element paragraphEl = getParagraphToAppendTo(newParagraph); handler.setInitialParagraph(paragraphEl); @@ -445,6 +448,16 @@ public class OpenXMLDocument { } } + /** + * The Neko HTMl parser has some issues with <p/>. + * + * @param html The HTML to clean up + * @return HTML code which Neko understands + */ + private String cleanUpHTML(String html) { + return html.replace("<p/>", "<p></p>"); + } + public Node appendTable(Integer... width) { Element tableEl = createTable(width); return getCursor().appendChild(tableEl); diff --git a/src/main/java/org/olat/ims/qti21/model/xml/AssessmentHtmlBuilder.java b/src/main/java/org/olat/ims/qti21/model/xml/AssessmentHtmlBuilder.java index 8050498787ba6d3f625c21bfb6ed3f19af6805f8..e05c47167a07e69afe9187e9817cd1a336b1f6f9 100644 --- a/src/main/java/org/olat/ims/qti21/model/xml/AssessmentHtmlBuilder.java +++ b/src/main/java/org/olat/ims/qti21/model/xml/AssessmentHtmlBuilder.java @@ -101,8 +101,11 @@ public class AssessmentHtmlBuilder { private String cleanUpNamespaces(StringOutput sb) { String content = sb.toString(); + content = content.replace(" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"", ""); content = content.replace("xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"", ""); + content = content.replace("\n xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\"", ""); content = content.replace("xmlns=\"http://www.imsglobal.org/xsd/imsqti_v2p1\"", ""); + content = content.replace("\n xsi:schemaLocation=\"http://www.imsglobal.org/xsd/imsqti_v2p1 http://www.imsglobal.org/xsd/imsqti_v2p1.xsd\"", ""); content = content.replace("xsi:schemaLocation=\"http://www.imsglobal.org/xsd/imsqti_v2p1 http://www.imsglobal.org/xsd/imsqti_v2p1.xsd\"", ""); return content.trim(); }