リテラルの結果要素を持つ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)
XSLT 2.0 および XPath 2.0 Programmer's Referenceによると
構文 «schema-element(N)» … が SequenceType で使用される場合、N はグローバル要素の名前でなければなりません… インポートされたスキーマの宣言。
同じソースの別の場所
«as="schema-element(EVENT)"» は、[a parameter] が EVENT または EVENT の置換グループ内の要素であると検証された要素ノードでなければならないことを示します。
インポートされたスキーマによって要素<foo bar="baz"/>
として検証する必要があるようです。役立つように思えますが、インポートしたスキーマに名前付きの複合型がある場合に限ります。私は何が欠けているか、間違っていますか?foo
@xsl:type