diff --git a/src/main/java/org/olat/core/util/openxml/HTMLToOpenXMLHandler.java b/src/main/java/org/olat/core/util/openxml/HTMLToOpenXMLHandler.java
index f797311a649a30166ca417d4a63a56ea6356850e..0357b84f2858849f3264b5d07a2597ff1ef07362 100644
--- a/src/main/java/org/olat/core/util/openxml/HTMLToOpenXMLHandler.java
+++ b/src/main/java/org/olat/core/util/openxml/HTMLToOpenXMLHandler.java
@@ -55,6 +55,7 @@ public class HTMLToOpenXMLHandler extends DefaultHandler {
 	private boolean latex = false;
 	private StringBuilder textBuffer;
 	private Spacing startSpacing;
+	protected String relPath;
 	
 	private boolean appendToCursor = true;
 	protected final OpenXMLDocument factory;
@@ -72,17 +73,17 @@ public class HTMLToOpenXMLHandler extends DefaultHandler {
 	public HTMLToOpenXMLHandler(OpenXMLDocument document) {
 		this.factory = document;
 	}
-	
 
 	/**
 	 * @param document The OpenXML document
 	 * @param paragraph The current paragraph
 	 * @param appendToCursor If true, append automatically to the document
 	 */
-	public HTMLToOpenXMLHandler(OpenXMLDocument document, Element paragraph, boolean appendToCursor) {
+	public HTMLToOpenXMLHandler(OpenXMLDocument document, String relPath, Element paragraph, boolean appendToCursor) {
 		this(document);
 		this.currentParagraph = paragraph;
 		this.appendToCursor = appendToCursor;
+		this.relPath = relPath;
 	}
 	
 	public HTMLToOpenXMLHandler(OpenXMLDocument document, Spacing spacing) {
@@ -239,7 +240,7 @@ public class HTMLToOpenXMLHandler extends DefaultHandler {
 		if(cssStyles == null) {
 			return setTextPreferences();
 		} else {
-			List<Style> styles = new ArrayList<Style>(4);
+			List<Style> styles = new ArrayList<>(4);
 			if(cssStyles.contains("bold")) styles.add(Style.bold);
 			if(cssStyles.contains("italic")) styles.add(Style.italic);
 			if(cssStyles.contains("underline")) styles.add(Style.underline);
@@ -497,7 +498,10 @@ public class HTMLToOpenXMLHandler extends DefaultHandler {
 		}
 	}
 	
-	protected String path(String path) {
+	public String path(String path) {
+		if(relPath != null) {
+			return relPath.concat(path);
+		}
 		return path;
 	}
 
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 57f25cca3defd6482b6d1072f1832cb7adb2928f..b8ac1e4c3de0a966e4de7e879bf689fac6f4a368 100644
--- a/src/main/java/org/olat/core/util/openxml/OpenXMLDocument.java
+++ b/src/main/java/org/olat/core/util/openxml/OpenXMLDocument.java
@@ -435,7 +435,7 @@ public class OpenXMLDocument {
 			html = cleanUpHTML(html);
 			SAXParser parser = new SAXParser();
 			Element paragraphEl = getParagraphToAppendTo(newParagraph);
-			parser.setContentHandler(new HTMLToOpenXMLHandler(this, paragraphEl, true));
+			parser.setContentHandler(new HTMLToOpenXMLHandler(this, null, paragraphEl, true));
 			parser.parse(new InputSource(new StringReader(html)));
 		} catch (SAXException e) {
 			log.error("", e);
diff --git a/src/main/java/org/olat/ims/qti21/manager/openxml/QTI21WordExport.java b/src/main/java/org/olat/ims/qti21/manager/openxml/QTI21WordExport.java
index 7ce330be6c302143baea920e88843521e456e2f5..0860be054553e5178994ddc11fbfacbb426370cc 100644
--- a/src/main/java/org/olat/ims/qti21/manager/openxml/QTI21WordExport.java
+++ b/src/main/java/org/olat/ims/qti21/manager/openxml/QTI21WordExport.java
@@ -374,7 +374,6 @@ public class QTI21WordExport implements MediaResource {
 	private static class QTI21AndHTMLToOpenXMLHandler extends HTMLToOpenXMLHandler {
 		
 		private final File itemFile;
-		private final String relPath;
 		private final AssessmentItem assessmentItem;
 		private final boolean withResponses;
 		private final AssessmentHtmlBuilder htmlBuilder;
@@ -489,11 +488,6 @@ public class QTI21WordExport implements MediaResource {
 				}
 			}
 		}
-		
-		@Override
-		protected String path(String path) {
-			return relPath.concat(path);
-		}
 
 		@Override
 		public void characters(char[] ch, int start, int length) {
@@ -773,7 +767,7 @@ public class QTI21WordExport implements MediaResource {
 
 				// add the drop panels
 				Element wrapEl = factory.createParagraphEl();
-				HTMLToOpenXMLHandler dropTable = new HTMLToOpenXMLHandler(factory, wrapEl, false);
+				HTMLToOpenXMLHandler dropTable = new HTMLToOpenXMLHandler(factory, relPath, wrapEl, false);
 				dropTable.setMaxWidthCm(7);
 				dropTable.startTable(Columns.valueOf(columnWidthPct - 50));
 				if(withResponses) {
@@ -941,7 +935,7 @@ public class QTI21WordExport implements MediaResource {
 			String backgroundColor = "FFFFFF";
 			Border sourceBorder = new Border(0, 6, "E9EAF2");
 			
-			HTMLToOpenXMLHandler innerTable = new HTMLToOpenXMLHandler(factory, wrapEl, false);
+			HTMLToOpenXMLHandler innerTable = new HTMLToOpenXMLHandler(factory, relPath, wrapEl, false);
 			innerTable.setMaxWidthCm(7.5);
 			innerTable.startTable(Columns.valueOf(columnWidthPct));
 			for(SimpleAssociableChoice choice:choices) {
@@ -950,7 +944,7 @@ public class QTI21WordExport implements MediaResource {
 				
 				String html = htmlBuilder.flowStaticString(choice.getFlowStatics());
 				List<Node> nodes = appendHtmlText(html, factory.createParagraphEl(), 7.5);
-				if(nodes.size() == 0) {
+				if(nodes.isEmpty()) {
 					contentCell.appendChild(factory.createParagraphEl());
 				} else {
 					for(Node node:nodes) {
@@ -978,7 +972,7 @@ public class QTI21WordExport implements MediaResource {
 			Border dropBorder = new Border(0, 6, "EEEEEE");
 			Element wrapEl = factory.createParagraphEl();
 
-			HTMLToOpenXMLHandler innerTable = new HTMLToOpenXMLHandler(factory, wrapEl, false);
+			HTMLToOpenXMLHandler innerTable = new HTMLToOpenXMLHandler(factory, relPath, wrapEl, false);
 			innerTable.setMaxWidthCm(7.5);
 			innerTable.startTable(Columns.valueOf(columnWidthPct));
 			for(SimpleAssociableChoice choice:targetChoices) {
@@ -992,7 +986,7 @@ public class QTI21WordExport implements MediaResource {
 				}
 
 				// add the drop panels
-				HTMLToOpenXMLHandler dropTable = new HTMLToOpenXMLHandler(factory, wrapEl, false);
+				HTMLToOpenXMLHandler dropTable = new HTMLToOpenXMLHandler(factory, relPath, wrapEl, false);
 				dropTable.setMaxWidthCm(7);
 				dropTable.startTable(Columns.valueOf(columnWidthPct - 50));
 				if(withResponses) {
@@ -1003,7 +997,7 @@ public class QTI21WordExport implements MediaResource {
 							Node answerCell = dropTable.addCell(factory.createTableCell(dropBackgroundColor, targetBorder, columnWidthPct - 10, Unit.pct));
 							String answerHtml = htmlBuilder.flowStaticString(sourceChoice.getFlowStatics());
 							List<Node> answerNodes = appendHtmlText(answerHtml, factory.createParagraphEl(), 7.5);
-							if(answerNodes.size() == 0) {
+							if(answerNodes.isEmpty()) {
 								answerCell.appendChild(factory.createParagraphEl());
 							} else {
 								for(Node answerNode:answerNodes) {
@@ -1115,7 +1109,7 @@ public class QTI21WordExport implements MediaResource {
 			}
 			try {
 				SAXParser parser = new SAXParser();
-				HTMLToOpenXMLHandler handler = new HTMLToOpenXMLHandler(factory, wrapEl, false);
+				HTMLToOpenXMLHandler handler = new HTMLToOpenXMLHandler(factory, relPath, wrapEl, false);
 				handler.setMaxWidthCm(widthCm);
 				parser.setContentHandler(handler);
 				parser.parse(new InputSource(new StringReader(html)));