У меня есть XML-схема, подобная той, что показана ниже, но я заметил, что ее будет очень сложно поддерживать.
Я хочу улучшить текущую схему одним из следующих способов, но я не уверен, что они будут наилучшим / правильным маршрутом:
Вариант 1: Использованиессылка на все элементы movieDetails
в movies
.
Опция 2: Добавить movieDetails
в качестве подэлемента movies
(чего я, честно говоря, изо всех сил пытаюсь достичь)
Какой маршрут будет наилучшим и как будет лучше его структурировать?
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://xml.netbeans.org/schema/AmazingMovies"
xmlns:tns="http://xml.netbeans.org/schema/AmazingMovies"
elementFormDefault="qualified">
<xsd:complexType name="movies">
<xsd:sequence>
<xsd:element name="Title" type="xsd:string"/>
<xsd:element name="Director" type="xsd:string"></xsd:element>
<xsd:element name="Year" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="movieDetails">
<xsd:sequence>
<xsd:element name="Actor" type="xsd:string"/>
<xsd:element name="numberOfCast" type="xsd:int"></xsd:element>
<xsd:element name="releaseDate" type="xsd:date"/>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="OnDisplay">
<xsd:complexType>
<xsd:sequence >
<xsd:element name="collectionOfMovies" type="tns:movies" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Дополнительная информация
*Элемент 1025 * добавил бы все элементы movies
в список, чтобы использовать их при отмене маршалинга.Однако я также хочу добавить movieDetails
к OnDisplay
, поэтому было бы удобно включить их в movies
в качестве ссылки, подэлемента или другой формы.
Пробовал следующие методы, но не прошел проверку XML
Метод 1
<xsd:element name="MoviesAndDetails">
<xsd:complexType name="movies">
<xsd:sequence>
<xsd:element name="Title" type="xsd:string"/>
<xsd:element name="Director" type="xsd:string"></xsd:element>
<xsd:element name="Year" type="xsd:int"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="movieDetails">
<xsd:sequence>
<xsd:element name="Actor" type="xsd:string"/>
<xsd:element name="numberOfCast" type="xsd:int"> </xsd:element>
<xsd:element name="releaseDate" type="xsd:date"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
Метод 2
<xsd:complexType name="MoviesAndDetails">
<xsd:complexType name="movies">
<xsd:sequence>
<xsd:element name="Title" type="xsd:string"/>
<xsd:element name="Director" type="xsd:string"></xsd:element>
<xsd:element name="Year" type="xsd:int"/>
<xsd:element ref="Actor"/>
<xsd:element ref="numberOfCast"/>
<xsd:element ref="releaseDate"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="movieDetails">
<xsd:sequence>
<xsd:element name="Actor" type="xsd:string"/>
<xsd:element name="numberOfCast" type="xsd:int"> </xsd:element>
<xsd:element name="releaseDate" type="xsd:date"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>