Я унаследовал задачу создания схемы для некоторого XML, который уже существует - и ИМХО не самое лучшее, что можно было бы сделать. Раздел, в котором описаны проблемы, является элементом в конце элемента scan-result.
Лучшее, на что я надеюсь в отношении данных в элементе spectrum, - это обрабатывать их как type = "xs: string". Я программно разделю числовые пары, которые составляют данные в строке позже. (Хотя этот шаг не понадобился бы, если бы данные были правильно структурированы в первую очередь.)
Вот кусок XML-данных, с которым мне приходится работать ...
<scan-result>
<spectrum-index>0</spectrum-index>
<scan-index>2</scan-index>
<time-stamp>5609</time-stamp>
<tic>55510</tic>
<start-mass>22.0</start-mass>
<stop-mass>71.0</stop-mass>
<spectrum count="5">30,11352;31,360;32,16634;45,1161;46,26003</spectrum>
</scan-result>
Проблема в том, что я не могу получить рабочее определение для элемента «спектр», который имеет атрибут «count» и позволяет мне определить тип элемента «спектр» как «xs: string».
Я хотел бы что-то вроде следующего:
<xs:complexType name="ctypScanResult">
<xs:sequence>
<xs:element name="spectrum-index" type="xs:integer"/>
<xs:element name="scan-index" type="xs:integer"/>
<xs:element name="time-stamp" type="xs:integer"/>
<xs:element name="tic" type="xs:integer"/>
<xs:element name="start-mass" type="xs:float"/>
<xs:element name="stop-mass" type="xs:float"/>
<xs:element name="spectrum" type="xs:string">
<xs:complexType>
<xs:attribute name="count" type="xs:integer"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="count" type="xs:integer"/>
</xs:complexType>
Проблема в том, что я могу определить тип элемента «спектр» как «xs: string» XOR Я могу определить анонимный «xs: complexType» в элементе «спектр», что позволяет мне вставить «счетчик» атрибут. Но мне нужно уметь выразить и то, и другое.
Учитывая, что я как бы застрял с XML, каким он был передан мне, есть ли определение схемы, которое позволит мне описать эти данные?
Извините, это долго, но спасибо всем, кто откликнется,
AlarmTripper
Продолжение: я знаю, почему возникает ошибка ...
Цитируется по W3C:
3.3.3 Ограничения на XML-представления объявлений элементов
Ограничение представления схемы: представление объявления элемента OK
В дополнение к условиям, налагаемым на элементы информации об элементе схемами для схем: должно выполняться все следующее:
1 default и fixed не должны присутствовать оба.
2 Если родитель элемента не является, тогда все следующее должно быть верно:
2.1 Должен присутствовать один из ref или name, но не оба.
2.2 Если ref присутствует, тогда все,,,,, nillable, default, fixed, form, block и type должны отсутствовать, то есть только minOccurs, maxOccurs, id допускаются в дополнение к ref вместе с.
3 типа и либо либо являются взаимоисключающими.
4 Соответствующие объявления частиц и / или элементов должны удовлетворять условиям, изложенным в Ограничениях на компоненты схемы объявления элементов (§3.3.6) и Ограничениях на компоненты схемы частиц (§3.9.6).
Но я все еще нахожусь в том же состоянии, что и раньше ... Как я могу на самом деле выполнить то, что напоминает мою цель?
Спасибо
AlarmTripper