Я пытаюсь создать саксонский XPathCompiler. У меня один и тот же код в Java и .NET, каждый из которых вызывает соответствующую библиотеку Saxon. Код:
protected void ctor(InputStream xmlData, InputStream schemaFile, boolean preserveWhiteSpace) throws SAXException, SchemaException, SaxonApiException {
this.rootNode = makeDataSourceNode(null);
XMLReader reader = XMLReaderFactory.createXMLReader();
InputSource xmlSource = new InputSource(xmlData);
SAXSource saxSource = new SAXSource(reader, xmlSource);
Source schemaSource = new StreamSource(schemaFile);
Configuration config = createEnterpriseConfiguration();
config.addSchemaSource(schemaSource);
// ...
В случае .NET InputStreams - это класс, который переносит .NET Stream и делает его Java InputStream. Для Java приведенный выше код работает нормально. Но в .NET последняя строка config.addSchemaSource (schemaSource) выдает:
$ exception {"Содержимое запрещено в
пролог. "} org.xml.sax.SAXParseException
В Java и .NET все работает нормально, если нет схемы.
Используются следующие файлы: http://www.thielen.com/test/SouthWind.xml & http://www.thielen.com/test/SouthWind.xsd
Похоже, что в этом вопросе нет никаких проблем. И если это было проблемой, разве у Java и .NET не должно быть одинаковых проблем.
Я думаю, может быть, это оболочка для .NET Stream, чтобы сделать его Java InputStream, но мы используем этот класс везде без каких-либо проблем.