Что-то у меня полный ступор.
Есть XML-документ
Для него никак не могу составить нормальную схему.
Вот его эелементы
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE pinnacle_line_feed [
<!ELEMENT PinnacleFeedTime (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT event (event_datetimeGMT, gamenumber,sporttype, league, description?, (participants | periods | total)+)>
<!ELEMENT event_datetimeGMT (#PCDATA)>
<!ELEMENT gamenumber (#PCDATA)>
<!ELEMENT league (#PCDATA)>
<!ELEMENT odds (moneyline, to_base?)>
<!ELEMENT over_adjust (#PCDATA)>
<!ELEMENT participants (participant*)>
<!ELEMENT participant (participant_name, contestantnum, rotnum, visiting_home_draw?, odds?, pitcher?)>
<!ELEMENT participant_name (#PCDATA)>
<!ELEMENT periods (period*)>
<!ELEMENT period (period_number, period_description, periodcutoff_datetimeGMT, period_status,periodnumber, moneyline, spread, total)>
<!ELEMENT period_number (#PCDATA)>
<!ELEMENT period_description (#PCDATA)>
<!ELEMENT period_status (#PCDATA)>
<!ELEMENT periodnumber (#PCDATA)>
<!ELEMENT periodcutoff_datetimeGMT (#PCDATA)>
<!ELEMENT pinnacle_line_feed (PinnacleFeedTime, events)>
<!ELEMENT events (event*)>
<!ELEMENT pitcher (#PCDATA)>
<!ELEMENT rotnum (#PCDATA)>
<!ELEMENT sporttype (#PCDATA)>
<!ELEMENT moneyline (moneyline_visiting,moneyline_home,moneyline_draw?)>
<!ELEMENT moneyline_visiting (#PCDATA)>
<!ELEMENT moneyline_home (#PCDATA)>
<!ELEMENT moneyline_draw (#PCDATA)>
<!ELEMENT spread (spread_visiting, spread_adjust_visiting, spread_home, spread_adjust_home)>
<!ELEMENT spread_adjust_home (#PCDATA)>
<!ELEMENT spread_adjust_visiting (#PCDATA)>
<!ELEMENT spread_home (#PCDATA)>
<!ELEMENT spread_visiting (#PCDATA)>
<!ELEMENT to_base (#PCDATA)>
<!ELEMENT total (total_points, over_adjust?, under_adjust?, units?)>
<!ELEMENT total_points (#PCDATA)>
<!ELEMENT under_adjust (#PCDATA)>
<!ELEMENT units (#PCDATA)>
<!ELEMENT visiting_home_draw (#PCDATA)>
]>
Есть два одинковых по названию элемента но разные по структуре
moneyline .
В первом случае это простой элемент с данными
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
<event>
<event_datetimeGMT> 2006 - 08 - 14 13 : 00 </event_datetimeGMT>
<sporttype>Tennis</sporttype>
<league> 151 * Mens US Open. Flushing Meadows: Big 2 (Federer/Nadal) vs Field</league>
<gamenumber> 73464331 </gamenumber>
<description>Who Will Win US Open? (Both Must Start Rnd 1 )</description>
<participants>
<participant>
<participant_name>Big 2 (Federer/Nadal)</participant_name>
<rotnum> 905 </rotnum>
<contestantnum> 73464400 </contestantnum>
<odds>
<moneyline>- 557 </moneyline>
<to_base> 0 </to_base>
</odds>
</participant>
<participant>
<participant_name>The Field</participant_name>
<rotnum> 906 </rotnum>
<contestantnum> 73464401 </contestantnum>
<odds>
<moneyline> 507 </moneyline>
<to_base> 0 </to_base>
</odds>
</participant>
</participants>
</event>
В другом случае это структурированный элемент
moneyline имеющий дочернии элементы
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<period>
<periodnumber> 0 </periodnumber>
<period_description>Game</period_description>
<periodcutoff_datetimeGMT> 2006 - 09 - 02 23 : 00 </periodcutoff_datetimeGMT>
<period_status>I</period_status>
<moneyline>
<moneyline_visiting>null</moneyline_visiting>
<moneyline_home>null</moneyline_home>
</moneyline>
<spread>
<spread_visiting>- 10 </spread_visiting>
<spread_adjust_visiting>- 105 </spread_adjust_visiting>
<spread_home> 10 </spread_home>
<spread_adjust_home>- 105 </spread_adjust_home>
</spread>
<total>
<total_points>null</total_points>
<over_adjust>null</over_adjust>
<under_adjust>null</under_adjust>
</total>
</period>
Вот схема которая у меня получилась на весь документ.
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="PinnacleFeedTime" type="PinnacleFeedTimeType"/>
<xs:simpleType name="PinnacleFeedTimeType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="description" type="descriptionType"/>
<xs:simpleType name="descriptionType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="event" type="eventType"/>
<xs:complexType name="eventType">
<xs:sequence>
<xs:element name="event_datetimeGMT" type="event_datetimeGMTType"/>
<xs:element name="gamenumber" type="gamenumberType"/>
<xs:element name="sporttype" type="sporttypeType"/>
<xs:element name="league" type="leagueType"/>
<xs:element name="description" type="descriptionType"/>
<xs:element name="participants" type="participantsType" minOccurs="1" maxOccurs="unbounded"/>
<xs:element name="periods" type="periodsType" minOccurs="1" maxOccurs="unbounded"/>
<xs:element name="total" type="totalType" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="event_datetimeGMT" type="event_datetimeGMTType"/>
<xs:simpleType name="event_datetimeGMTType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="gamenumber" type="gamenumberType"/>
<xs:simpleType name="gamenumberType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="league" type="leagueType"/>
<xs:simpleType name="leagueType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="odds" type="oddsType"/>
<xs:complexType name="oddsType">
<xs:sequence>
<xs:element name="moneyline" type="moneylineType"/>
<xs:element name="to_base" type="to_baseType" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:element name="over_adjust" type="over_adjustType"/>
<xs:simpleType name="over_adjustType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="participants" type="participantsType"/>
<xs:complexType name="participantsType">
<xs:sequence>
<xs:element name="participant" type="participantType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="participant" type="participantType"/>
<xs:complexType name="participantType">
<xs:sequence>
<xs:element name="participant_name" type="participant_nameType"/>
<xs:element name="contestantnum" type="contestantnumType"/>
<xs:element name="rotnum" type="rotnumType"/>
<xs:element name="visiting_home_draw" type="visiting_home_drawType"/>
<xs:element name="odds" type="oddsType"/>
<xs:element name="pitcher" type="pitcherType" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:element name="participant_name" type="participant_nameType"/>
<xs:simpleType name="participant_nameType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="periods" type="periodsType"/>
<xs:complexType name="periodsType">
<xs:sequence>
<xs:element name="period" type="periodType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="period" type="periodType"/>
<xs:complexType name="periodType">
<xs:sequence>
<xs:element name="period_number" type="period_numberType"/>
<xs:element name="period_description" type="period_descriptionType"/>
<xs:element name="periodcutoff_datetimeGMT" type="periodcutoff_datetimeGMTType"/>
<xs:element name="period_status" type="period_statusType"/>
<xs:element name="periodnumber" type="periodnumberType"/>
<xs:element name="moneyline" type="moneylineType"/>
<xs:element name="spread" type="spreadType"/>
<xs:element name="total" type="totalType"/>
</xs:sequence>
</xs:complexType>
<xs:element name="period_number" type="period_numberType"/>
<xs:simpleType name="period_numberType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="period_description" type="period_descriptionType"/>
<xs:simpleType name="period_descriptionType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="period_status" type="period_statusType"/>
<xs:simpleType name="period_statusType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="periodnumber" type="periodnumberType"/>
<xs:simpleType name="periodnumberType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="periodcutoff_datetimeGMT" type="periodcutoff_datetimeGMTType"/>
<xs:simpleType name="periodcutoff_datetimeGMTType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="pinnacle_line_feed" type="pinnacle_line_feedType"/>
<xs:complexType name="pinnacle_line_feedType">
<xs:sequence>
<xs:element name="PinnacleFeedTime" type="PinnacleFeedTimeType"/>
<xs:element name="events" type="eventsType"/>
</xs:sequence>
</xs:complexType>
<xs:element name="events" type="eventsType"/>
<xs:complexType name="eventsType">
<xs:sequence>
<xs:element name="event" type="eventType" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:element name="pitcher" type="pitcherType"/>
<xs:simpleType name="pitcherType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="rotnum" type="rotnumType"/>
<xs:simpleType name="rotnumType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="sporttype" type="sporttypeType"/>
<xs:simpleType name="sporttypeType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="moneyline" type="moneylineType"/>
<xs:complexType name="moneylineType">
<xs:sequence>
<xs:element name="moneyline_visiting" type="moneyline_visitingType"/>
<xs:element name="moneyline_home" type="moneyline_homeType"/>
<xs:element name="moneyline_draw" type="moneyline_drawType" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:element name="moneyline_visiting" type="moneyline_visitingType"/>
<xs:simpleType name="moneyline_visitingType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="moneyline_home" type="moneyline_homeType"/>
<xs:simpleType name="moneyline_homeType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="moneyline_draw" type="moneyline_drawType"/>
<xs:simpleType name="moneyline_drawType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="spread" type="spreadType"/>
<xs:complexType name="spreadType">
<xs:sequence>
<xs:element name="spread_visiting" type="spread_visitingType"/>
<xs:element name="spread_adjust_visiting" type="spread_adjust_visitingType"/>
<xs:element name="spread_home" type="spread_homeType"/>
<xs:element name="spread_adjust_home" type="spread_adjust_homeType"/>
</xs:sequence>
</xs:complexType>
<xs:element name="spread_adjust_home" type="spread_adjust_homeType"/>
<xs:simpleType name="spread_adjust_homeType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="spread_adjust_visiting" type="spread_adjust_visitingType"/>
<xs:simpleType name="spread_adjust_visitingType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="spread_home" type="spread_homeType"/>
<xs:simpleType name="spread_homeType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="spread_visiting" type="spread_visitingType"/>
<xs:simpleType name="spread_visitingType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="to_base" type="to_baseType"/>
<xs:simpleType name="to_baseType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="total" type="totalType"/>
<xs:complexType name="totalType">
<xs:sequence>
<xs:element name="total_points" type="total_pointsType"/>
<xs:element name="over_adjust" type="over_adjustType"/>
<xs:element name="under_adjust" type="under_adjustType"/>
<xs:element name="units" type="unitsType" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:element name="total_points" type="total_pointsType"/>
<xs:simpleType name="total_pointsType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="under_adjust" type="under_adjustType"/>
<xs:simpleType name="under_adjustType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="units" type="unitsType"/>
<xs:simpleType name="unitsType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="visiting_home_draw" type="visiting_home_drawType"/>
<xs:simpleType name="visiting_home_drawType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:element name="contestantnum" type="contestantnumType"/>
<xs:simpleType name="contestantnumType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
</xs:schema>
Здесь описывается только один структурированный
moneyline . Как описать простой элемент
moneyline ?