xml 模式选择选择一个项目选项或另一个具有公共部分的选项
xml schema choice selecting one item option or the other with a common part
我有一个关于 xml 的问题 schema.I 不知道如何正确使用选择。
这是我的 xml 文本。
<serials>
<serial>
<title></title>
<country></country>
<director></director>
<release date></release date>
</serial>
.
.some of the same as the one above
.
<serial>
<title></title>
<country></country>
<director></director>
<uncertaine></uncertainee>
</serial>
<serial>
<title></title>
<country></country>
<director></director>
<scheduled time></scheduled time>
</serial>
</serials>
这是 xml 架构中有问题的部分
<xsd:group name="serialData">
<xsd:choice>
<xsd:sequence>
<xsd:element name="title" type="xsd"string"/>
<xsd:element name="country" type="xsd"string"/>
<xsd:element name="director" type="xsd"string"/>
<xsd:element name="release date" type="xsd"string"/>
</xsd:sequence>
<xsd:sequence>
<xsd:element name="title" type="xsd"string"/>
<xsd:element name="country" type="xsd"string"/>
<xsd:element name="director" type="xsd"string"/>
<xsd:element name="scheduled time" type="xsd"string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="uncertaineetime" type="xsd"string" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:choice>
</xsd:group>
问题是后者的非典型系列想要和前者一样的属性,却得不到
假设您的负载看起来像这样,这是有效的 XML
<serials>
<serial>
<title>Title</title>
<country>Country</country>
<director>Director</director>
<release_date>2021-12-06</release_date>
</serial>
<serial>
<title>Title2</title>
<country>Country</country>
<director>Director</director>
<uncertain_time>Uncertain</uncertain_time>
</serial>
<serial>
<title>Title3</title>
<country>Country</country>
<director>Director</director>
<scheduled_time>Scheduled</scheduled_time>
</serial>
</serials>
您可以简单地使用下面的模式,其中一些是可选的。
<?xml version="1.0" encoding="utf-16"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="serials">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="serial">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string" />
<xs:element name="country" type="xs:string" />
<xs:element name="director" type="xs:string" />
<xs:element minOccurs="0" name="scheduled_time" type="xs:string" />
<xs:element minOccurs="0" name="uncertain_time" type="xs:string" />
<xs:element minOccurs="0" name="release_date" type="xs:date" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
如果你的意思是你可以有不确定的时间或计划时间或发布日期,那么这些就是你按照下面放在选择节点中的项目
<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="serials">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="serial">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string" />
<xs:element name="country" type="xs:string" />
<xs:element name="director" type="xs:string" />
<xs:choice>
<xs:element name="scheduled_time" type="xs:string" />
<xs:element name="uncertain_time" type="xs:string" />
<xs:element name="release_date" type="xs:date" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
我有一个关于 xml 的问题 schema.I 不知道如何正确使用选择。 这是我的 xml 文本。
<serials>
<serial>
<title></title>
<country></country>
<director></director>
<release date></release date>
</serial>
.
.some of the same as the one above
.
<serial>
<title></title>
<country></country>
<director></director>
<uncertaine></uncertainee>
</serial>
<serial>
<title></title>
<country></country>
<director></director>
<scheduled time></scheduled time>
</serial>
</serials>
这是 xml 架构中有问题的部分
<xsd:group name="serialData">
<xsd:choice>
<xsd:sequence>
<xsd:element name="title" type="xsd"string"/>
<xsd:element name="country" type="xsd"string"/>
<xsd:element name="director" type="xsd"string"/>
<xsd:element name="release date" type="xsd"string"/>
</xsd:sequence>
<xsd:sequence>
<xsd:element name="title" type="xsd"string"/>
<xsd:element name="country" type="xsd"string"/>
<xsd:element name="director" type="xsd"string"/>
<xsd:element name="scheduled time" type="xsd"string" minOccurs="0" maxOccurs="1"/>
<xsd:element name="uncertaineetime" type="xsd"string" minOccurs="0" maxOccurs="1"/>
</xsd:sequence>
</xsd:choice>
</xsd:group>
问题是后者的非典型系列想要和前者一样的属性,却得不到
假设您的负载看起来像这样,这是有效的 XML
<serials>
<serial>
<title>Title</title>
<country>Country</country>
<director>Director</director>
<release_date>2021-12-06</release_date>
</serial>
<serial>
<title>Title2</title>
<country>Country</country>
<director>Director</director>
<uncertain_time>Uncertain</uncertain_time>
</serial>
<serial>
<title>Title3</title>
<country>Country</country>
<director>Director</director>
<scheduled_time>Scheduled</scheduled_time>
</serial>
</serials>
您可以简单地使用下面的模式,其中一些是可选的。
<?xml version="1.0" encoding="utf-16"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="serials">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="serial">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string" />
<xs:element name="country" type="xs:string" />
<xs:element name="director" type="xs:string" />
<xs:element minOccurs="0" name="scheduled_time" type="xs:string" />
<xs:element minOccurs="0" name="uncertain_time" type="xs:string" />
<xs:element minOccurs="0" name="release_date" type="xs:date" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
如果你的意思是你可以有不确定的时间或计划时间或发布日期,那么这些就是你按照下面放在选择节点中的项目
<?xml version="1.0" encoding="utf-16"?>
<xs:schema xmlns:b="http://schemas.microsoft.com/BizTalk/2003" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="serials">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="serial">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string" />
<xs:element name="country" type="xs:string" />
<xs:element name="director" type="xs:string" />
<xs:choice>
<xs:element name="scheduled_time" type="xs:string" />
<xs:element name="uncertain_time" type="xs:string" />
<xs:element name="release_date" type="xs:date" />
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>