Я хотел бы создать базу данных XML. У меня есть два варианта интерпретации моих данных:
(A)
<database>
<source tag="78Smith">
<segment tag="78Smith_S1"></segment>
<segment tag="78Smith_S2"></segment>
<line tag="78Smith_S1.1" value="1"/>
<line tag="78Smith_S2.2" value="2"/>
<line tag="78Smith_S1.3" value="3"/>
<line tag="78Smith_S2.4" value="4"/>
</source>
<source tag="..."></source>
<source tag="..."></source>
</database>
(B)
<database>
<source tag="78Smith">
<segment tag="78Smith_S1">
<line tag="78Smith_S1.1" value="1"/>
<line tag="78Smith_S1.3" value="3"/>
</segment>
<segment tag="78Smith_S2">
<line tag="78Smith_S2.2" value="2"/>
<line tag="78Smith_S2.4" value="4"/>
</segment>
</source>
<source tag="..."></source>
<source tag="..."></source>
</database>
Вариант A был бы наиболее полезным для меня, потому что элементы <line>
приходят один за другим из источника данных "78Smith", и было бы гораздо проще перепроверить данные, если список элементов <line>
может быть сохранен последовательно, а не разделен сегментами, как в варианте B . (Конечно, для сегментов определенная роль есть, но здесь нет места для ее объяснения.)
Однако один из моих коллег предупредил меня, что вариант А имеет анти-XML структуру потому что элементы <line>
должны быть подчинены элементам <segment>
, а не элементам <source>
. Он также добавил, что в случае варианта А из этого XML нельзя создавать файлы XSE и XSD и выполнять в них запросы. В результате я должен заменить вариант A на вариант B.
Моя цель состоит в том, чтобы найти структуру, в которой
(a) элементы <line>
могут быть представлены последовательно ( то есть, не встроенные в соответствующие сегменты)
(b) элементы <line>
сегментов 78Smith_S1
и 78Smith_S2
можно каким-либо образом запрашивать (например, по тегам) в средах XSE и XSD.
У вас есть идеи, как выполнить эту задачу, или я должен отказаться от "спасения" последовательного перечисления элементов <line>
в данном элементе <source>
?