[英]Is it valid for XSD to define a complex element as compulsory but all children elements are optional?
我正在嘗試從一組 xpath 和值編寫一個 XML 生成器。 而生成的 XML 需要根據其 XSD 有效。所以一個例子如下
XSD。XSD 版本為 1.0。
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="products">
<xs:complexType>
<xs:sequence>
<xs:element name="books">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="book" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="cards" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element type="xs:string" name="card" maxOccurs="unbounded" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
根據XSD,需要cards
。 盡管minOccurs="0"
不需要任何卡片。
這組 xpath 和值位於 CSV 文件中。 值可能來自數據庫,所以不保證有cards
。
/products/books/book[0],book1_name
/products/books/book[1],book2_name
生成 XML
<products>
<books>
<book>book1_name</book>
<book>book2_name</book>
</books>
</products>
因此 XML 對其 XSD 無效,因為cards
節點不存在。
cards
)必填,所有孩子( card
)可選是否有效?cards
但沒有任何孩子或價值是否有意義?感謝您的解釋 - 它確實有助於理解總體任務是什么。
就XSD而言,父母(卡)必填,所有孩子(卡)可選是否有效?
是的,它是有效的。 XML Schema 規范不要求復雜元素具有任何內容。 有一些方法可以檢查 XSD 是否有效。 大多數 XSD 處理器(包括 Java)在加載時會檢查 XSD。 不過要小心 - 一些 XML 架構有效性規則並未在所有處理器中實現(例如https://en.wikipedia.org/wiki/Unique_Particle_Attribution )
就XML的意義而言,有卡但沒有任何孩子或價值是否有意義?
當然。 它完全等同於擁有一個包含零個元素的非空數組。 你為什么認為它沒有意義?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.