が呼び出される前にドキュメントを挿入しようとしていますxdmp:document-insert()
。ドキュメントをそれぞれのスキーマに対して検証し、validate strict { $xml }
その出力を挿入呼び出しで使用しています。ただし、validate
呼び出しの出力には、スキーマで指定されたデフォルト値は含まれていません。
簡略化されたスキーマ:
<xs:schema>
<xs:complexType name="fields-type" abstract="false" mixed="false">
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element default="Faulkner" maxOccurs="1" minOccurs="0" name="an_author" nillable="false" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="document-type" abstract="false" mixed="false">
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="fields" type="fields-type" minOccurs="1" maxOccurs="1" nillable="false"/>
</xs:sequence>
</xs:complexType>
<xs:element name="document" type="document-type" abstract="false" nillable="false"/>
</xs:schema>
ドキュメント:
<document>
<fields>
<an_author/>
</fields>
</document>
出力ドキュメントを呼び出した後は、要素validate strict { $xml }
にデフォルト値が追加されていない上記と同じです。<an_author>
注:スキーマのfixed
代わりに属性を使用しようとしましたが、同じ結果が得られました。エラーも返しません。default
xdmp:validate($xml, "strict")
編集:ここでのXQuery検証仕様によれば、出力にはデフォルト値が指定されている必要があります。