簡體   English   中英

XSD定義一個復雜元素為必填但所有子元素都是可選的是否有效?

[英]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節點不存在。

  • 就XSD而言,父母( cards )必填,所有孩子( card )可選是否有效?
  • 就XML的意義而言,有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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM