我使用XML编辑器18.1编写和运行XSL样式表如下:二更新XSLT
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fo="http://www.w3.org/1999/XSL/Format" exclude-result-prefixes="xs" version="2.0">
<xsl:import-schema schema-location="orig.xsd"/>
<xsl:template match="schema-element(orig)">
...
</xsl:template>
</xsl:stylesheet>
<orig>
被定义为在下面的没有命名空间模式中的顶级元素:
<?xml version="1.1" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" elementFormDefault="qualified"
xmlns:xml="http://www.w3.org/XML/1998/namespace" xmlns:xi="http://www.w3.org/2001/XInclude"
vc:minVersion="1.1">
<xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="xml_namespace.xsd"/>
<xs:element name="orig">
<xs:complexType>
<xs:sequence>
...
</xs:sequence>
<xs:attributeGroup ref="pointer_attributes"/>
</xs:complexType>
</xs:element>
在样式表编译,撒克逊-EE 9.6.0.7返回下面的错误消息:
系统ID:主验证文件:...引擎名称:Saxon-EE 9.6.0.7 严重性:fatal描述:XPST0008 XSLT模式语法错误 {schema-element(orig)}中第12行的字符26:There没有 声明元素的导入模式开始位置: 12:26网址:http://www.w3.org/TR/xpath20/#ERRXPST0008
编译罚款与下面的模式:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="orig">
<xs:complexType>
<xs:sequence>
<xs:element name="nested_element" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
但是,只要我添加vc:minVersion="1.1"
的错误再次发生。
是否满足https://www.w3.org/TR/xpath-30/#id-schema-element-test中的条件?您真的应该向我们展示最小但完整的XSLT样本,XSD,我们需要查看该模式是否具有顶级'xsl:element name =“orig”'。 –
对不起,我忘了提,是的,''是一个顶级元素(它可以作为这个模式的一个实例的根元素)。我试图用一个只有'xsl:import-schema'和schema-element(orig)模板的简单样式表来调试XSLT,但是Saxon仍然告诉我'orig'没有在模式中声明。 –
colibrisson
正如我所说的,如果您希望其他人在这里提供帮助,那么最好发布最少但完整的代码示例,以便我们重现问题,因为您在使用Saxon时可能还想解释如何尝试运行架构完全意识到转换(例如在oXygen中或从显示确切命令行的命令行中)。 –