Skip to content
Snippets Groups Projects
Commit 86b9f77f authored by Thorsten Vitt's avatar Thorsten Vitt
Browse files

Allow to use Saxon for the md2tei transformation.

In Java 8, the built-in XSLTC produces invalid XML (containing a
namespace binding to the prefix `xmlns`, cf. #16730). Saxon however
cannot write to a StAXResult, so we need an adapter to SAXResult.

Fixes #16730.
parent d5ef27cf
No related branches found
No related tags found
No related merge requests found
......@@ -33,9 +33,10 @@
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.XMLEvent;
import javax.xml.transform.stax.StAXResult;
import javax.xml.transform.sax.SAXResult;
import javax.xml.ws.Holder;
import org.springframework.util.xml.StaxUtils;
import com.google.common.base.Joiner;
import com.google.common.base.Throwables;
import com.google.common.collect.ImmutableList;
......@@ -168,7 +169,7 @@ protected void walkAggregation(final ObjectType object, final boolean again) {
}
// writeHeader(object);
stack.writeHeader(new StAXResult(new XMLEventFilter(writer) {
XMLEventFilter xmlEventFilter = new XMLEventFilter(writer) {
@Override
public void add(final XMLEvent event) throws XMLStreamException {
......@@ -176,8 +177,8 @@ public void add(final XMLEvent event) throws XMLStreamException {
super.add(event);
}
}
));
};
stack.writeHeader(new SAXResult(StaxUtils.createContentHandler(xmlEventFilter)));
}
super.walkAggregation(object, again);
......
......@@ -156,7 +156,7 @@ protected Templates getStylesheet()
.getResourceAsStream("md2tei.xsl");
final StreamSource xslSource = new StreamSource(xslStream);
final TransformerFactory factory = TransformerFactory.newInstance("com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl", getClass().getClassLoader());
final TransformerFactory factory = TransformerFactory.newInstance();
stylesheet = factory.newTemplates(xslSource);
}
return stylesheet;
......
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment