我试图了解schema-element()
用作SequenceType
文字结果元素时的工作原理。这是我的样式表
<xsl:stylesheet
version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs">
<xsl:import-schema>
<xs:schema>
<xs:element name="foo">
<xs:complexType>
<xs:attribute name="bar"/>
</xs:complexType>
</xs:element>
</xs:schema>
</xsl:import-schema>
<xsl:variable name="test" as="schema-element(foo)">
<foo bar="baz"/>
</xsl:variable>
<xsl:template match="/">
<xsl:sequence select="$test"/>
</xsl:template>
</xsl:stylesheet>
Saxon-EE 9.4.0.4(在 Oxygen 14.1 中)给了我以下编译错误Required item type of value of variable $test is schema-element(foo); supplied value has item type element(foo, {http://www.w3.org/2001/XMLSchema}untyped)
当在 SequenceType 中使用构造 «schema-element(N)» ... 时,N 必须是全局元素的名称 ... 在导入的模式中声明。
同一来源的其他地方
«as="schema-element(EVENT)"» 表示 [a parameter] 必须是元素节点,该元素节点被验证为 EVENT 或 EVENT 替换组中的元素。
似乎应该通过导入的模式<foo bar="baz"/>
验证为元素。似乎它会有所帮助,但前提是我在导入的模式中有一个命名的复杂类型。我错过了什么或做错了什么?foo
@xsl:type