package org.docx4j.convert.out.html; import java.util.HashMap; import javax.xml.transform.TransformerException; import org.docx4j.XmlUtils; import org.docx4j.openpackaging.packages.WordprocessingMLPackage; import org.docx4j.wml.SdtPr; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; import org.w3c.dom.DocumentFragment; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.traversal.NodeIterator; public class SdtToListSdtTagHandler extends SdtTagHandler { private static Logger log = LoggerFactory.getLogger(SdtToListSdtTagHandler.class); @Override public Node toNode(WordprocessingMLPackage wmlPackage, SdtPr sdtPr, HashMap<String, String> tagMap, NodeIterator childResults) throws TransformerException { try { // Create a DOM builder and parse the fragment Document document = XmlUtils.getNewDocumentBuilder().newDocument(); DocumentFragment docfrag = document.createDocumentFragment(); if (tagMap.get("HTML_ELEMENT") == null) { // don't add a list return attachContents(docfrag, docfrag, childResults); } else if (tagMap.get("HTML_ELEMENT").equals("OL")) { Element xhtmlDiv = document.createElement("ol"); docfrag.appendChild(xhtmlDiv); return attachContents(docfrag, xhtmlDiv, childResults); } else { // if (tagMap.get("HTML_ELEMENT").equals("UL")) { Element xhtmlDiv = document.createElement("ul"); docfrag.appendChild(xhtmlDiv); return attachContents(docfrag, xhtmlDiv, childResults); } } catch (Exception e) { log.error(e.getMessage(), e); throw new TransformerException(e); } } @Override public Node toNode(WordprocessingMLPackage wmlPackage, SdtPr sdtPr, HashMap<String, String> tagMap, Node resultSoFar) throws TransformerException { try { // Create a DOM builder and parse the fragment Document document = XmlUtils.getNewDocumentBuilder().newDocument(); DocumentFragment docfrag = document.createDocumentFragment(); if (tagMap.get("HTML_ELEMENT") == null) { // don't add a list return attachContents(docfrag, docfrag, resultSoFar); } else if (tagMap.get("HTML_ELEMENT").equals("OL")) { Element xhtmlDiv = document.createElement("ol"); docfrag.appendChild(xhtmlDiv); return attachContents(docfrag, xhtmlDiv, resultSoFar); } else { // if (tagMap.get("HTML_ELEMENT").equals("UL")) { Element xhtmlDiv = document.createElement("ul"); docfrag.appendChild(xhtmlDiv); return attachContents(docfrag, xhtmlDiv, resultSoFar); } } catch (Exception e) { log.error(e.getMessage(), e); throw new TransformerException(e); } } }