我正在嘗試使用<xs:any />節點構建模式。當我驗證它說插入的子節點沒有定義。我認為any允許我有未定義的子節點。
我的架構:
<xs:schema xmlns="Policy" targetNamespace="Policy" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Request">
<xs:complexType>
<xs:sequence>
<xs:any />
</xs:sequence>
<xs:attribute name="Routing" type="xs:string" />
</xs:complexType>
</xs:element>
</xs:schema>
我的 XML:
<gp:Request Routing="foo" xmlns:gp="Policy">
<bar/>
</gp:Request>
它標記bar節點。我究竟做錯了什么?
uj5u.com熱心網友回復:
您正在見證 的預期行為xs:any/@processContents="strict",這是默認值。當@processContents設定為strict時,元素定義必須存在,并且 XML 中的元素必須對該宣告有效。
改成
<xs:any processContents="lax" />
如果您希望僅在元素定義存在時進行驗證,或者
<xs:any processContents="skip" />
如果無論元素是否在 XSD 中定義,都不想進行驗證。
也可以看看
- xsd:any 的 processContents 嚴格 vs 寬松 vs 跳過
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/451534.html
標籤:xml 视觉工作室 xsd xsd-验证 xml 验证
下一篇:如何在VS22中編輯默認代碼生成
