Это относится к проверке входных данных в преобразование XSLT на основе схемы с использованием самой последней версии Saxon EE 9.8.
Мой файл XSLT содержит следующее.
Пространство имен и связанная схема, определенные как таковые:
<xsl:import-schema namespace="http://www.fpml.org/2005/FpML-4-2" schema-location="/path/to/some_swbml.xsd"/>
Результирующий документ, соответствующий вышеуказанной схеме:
<xsl:result-document method="xml" href="{$file}" format="swbml-format" validation="strict">
<SWBML xmlns="http://www.fpml.org/2005/FpML-4-2" xsl:use-attribute-sets="ir">
GENERATE SOME MORE XML TO BE VALIDATED BY THE XSD
</SWBML>
</xsl:result-document>
Вы заметите, что родительский тег в результирующем документе <SWBML>
использует набор атрибутов xsl:use-attribute-sets="ir"
.
Набор атрибутов определен следующим образом:
<xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:attribute-set name="ir">
<xsl:attribute name="version">4-2</xsl:attribute>
</xsl:attribute-set>
</xsl:stylesheet>
Это пример с игрушкой, шаблон не оправдан выше!
Это прекрасно работает, когда я используюэто с:
java net.sf.saxon.Transform -sa -ext:on -it -o:output.xml -xsl:example.xslt
Это ожидается, потому что "-sa" будет проверять только выданный XML-документ, насколько я понимаю.
Это не работает:
java net.sf.saxon.Transform -val:lax -ext:on -it -o:output.xml -xsl:example.xslt
Предоставление:
FORG0001: Attribute @xsl:use-attribute-sets is not allowed on element <SWBML>
Мой вопрос - разве валидатор не должен обрабатывать наборы атрибутов, прежде чем пытаться проверить <SWBML>
?Мне кажется, что он жалуется на то, что инструкция XSLT не разрешена в выходном XML-документе, что, конечно, верно, но, кажется, проверяет преждевременно.
Полученный XML действителен:
<SWBML xmlns="http://www.fpml.org/2005/FpML-4-2" version="4_2">
Как показывает преобразование с опцией "-sa".
Я не уверен, является ли это ограничением XSLT или ошибкой саксонской обработки?Такое чувство, что я должен быть в состоянии сделать это со мной!
Есть идеи?