1
我試圖通過xdmp:document-insert()
插入文檔,然後調用我正在通過validate strict { $xml }
驗證文檔,並在插入調用中使用該輸出。但是,validate
調用的輸出不包含架構中指定的默認值。MarkLogic中的默認模式值
簡化架構:
<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驗證規範here輸出應該具有指定的默認值。
我不認爲你理解我的問題。在'xs:element'模式中設置的默認屬性應該在調用'validate'之後使'an_author'的值爲'Faulkner'。從XML-Schema規範[這裏](http://www.w3.org/TR/xmlschema-0/#OccurrenceConstraints)中可以看出,「模式處理器提供的元素的值等於默認屬性的值」。 – sinemetu1
我想她有可能不理解你的問題,但是讀過這個問題,答案和你的評論,它對我來說更像是你不明白答案。你有沒有嘗試這個建議?你是否有一個例子顯示,即使在聲明選項xdmp:output「default-attributes = yes」;'序列化文檔仍然沒有默認值?你是否用路徑表達式來檢查,看看在調用'validate'之後,默認值是否實際顯示在數據模型中? –