У меня есть следующий код, который вставляет инструкции обработки перед корневым элементом:
Document doc = builder.parse(file);
doc.insertBefore(
doc.createProcessingInstruction("xml-stylesheet", "type=\"text/xsl\" href=\"annotation.xsl\""),
doc.getDocumentElement());
doc.insertBefore(doc.createProcessingInstruction("oxygen", "NVDLSchema=\"annotation.nvdl\""),
doc.getDocumentElement());
, и я использую это для его сериализации:
FileOutputStream fos = new FileOutputStream(new File(file.getAbsolutePath() + ".out"));
DOMImplementationLS ls = (DOMImplementationLS) builder.getDOMImplementation();
LSOutput lso = ls.createLSOutput();
lso.setByteStream(fos);
ls.createLSSerializer().write(doc, lso);
fos.close();
В качестве вывода я получаю:
<?xml version="1.0" encoding="UTF-8"?>
<fulltext-document>...</fulltext-document><?xml-stylesheet type="text/xsl" href="annotation.xsl"?><?oxygen NVDLSchema="annotation.nvdl"?>
Однако я намеревался получить инструкции по обработке до корневого элемента.Я проверил, что, возможно, DOM 3 неверен (см. Ниже), но все выглядит хорошо.Я что-то пропустил?Любое решение приветствуется.
PS Я использую Java 1.6.0_27 DOM.Если приведенное выше выглядит как ошибка, ссылки на отчеты об ошибках приветствуются.