Функция документа xslt не разрешает теги xinclude в указанном XML-файле
Я ищу решение для разрешения xinclude в документах, на которые ссылается функция document() (XSLT).
На моей оценке я попробовал xsltproc (не работает), и теперь я остановился на saxon 6.5.5 в сочетании с apache xerces 2.11.0.
Это моя текущая командная строка.
java.exe -cp lib\xercesImpl-2.7.1.jar;\lib\saxon.jar
-Djavax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl
-Djavax.xml.parsers.SAXParserFactory= org.apache.xerces.jaxp.SAXParserFactoryImpl
-Dorg.apache.xerces.xni.parser.XMLParserConfiguration=org.apache.xerces.parsers.XIncludeParserConfiguration
com.icl.saxon.StyleSheet
-o OUTPUT.XML INPUT.XML COPY.XSLT
Может быть, мне нужно добавить некоторые параметры или использовать дополнительные библиотеки. Спасибо за ваш ответ. BR
Markus
2 ответа
Решение
Я просто добавил URI Resolver в командной строке.
-Dorg.apache.xerces.xni.parser.XMLParserConfiguration=org.apache.xerces.parsers.XIncludeParserConfiguration
net.sf.saxon.Transform
-x:org.apache.xml.resolver.tools.ResolvingXMLReader
-y:org.apache.xml.resolver.tools.ResolvingXMLReader
-r:org.apache.xml.resolver.tools.CatalogResolver
Я хочу поблагодарить Микаэля Кея и Дэйва Поусона за помощь.
Я думаю, что Саксонская 9 Java имеет xi
опция командной строки, которая делает XInclude, например, с Saxon 9.6 HE, я пытался -xi -it:main -xsl:test2014112604.xsl
с таблицей стилей
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:mf="http://example.com/mf"
exclude-result-prefixes="xs mf"
version="2.0">
<xsl:template name="main">
<xsl:copy-of select="document('test2014112604.xml')"/>
</xsl:template>
</xsl:stylesheet>
и файлы test2014112604.xsl как
<root>
<include xmlns="http://www.w3.org/2001/XInclude" href="test2014112605.xml"/>
</root>
и включены как
<test>...</test>
и таким образом саксонские выходы
<?xml version="1.0" encoding="UTF-8"?><root>
<test xml:base="test2014112605.xml">...</test>
</root>