我正在使用XML Editor 18.1编写和运行下面的XSL样式表:
<?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>
被定义为下面的no namespace模式中的顶级元素:
<?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>
在样式表编译期间,Saxon-EE 9.6.0.7返回以下错误消息:
系统ID:主要验证文件:...引擎名称:Saxon-EE 9.6.0.7 严重性:致命描述:XPST0008 XSLT模式语法错误 {schema-element(orig)}中第12行的char 26:没有 导入模式中元素的声明起始位置: 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"
,错误就会再次发生。
答案 0 :(得分:2)
问题几乎肯定会产生,因为Saxon被配置为作为XSD 1.0处理器而不是XSD 1.1处理器运行。默认配置为XSD 1.0。
您说您使用的是XML Editor 18.1(大概是oXygen XML Editor 18.1)。因此,您需要在oXygen中设置此配置参数。在“配置转换场景”中,首先选择Saxon-EE作为变换器引擎;然后单击代表“高级配置选项”的图标。在此表单的底部是标有“Saxon-EE特定选项”的部分,包括用于选择XSD 1.0或XSD 1.1的单选按钮。