Я пытаюсь написать генератор XML из набора значений xpath и значений. И сгенерированный 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"
.
Набор значений xpaths и значений находится в файле 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
, но без каких-либо детей или значения?