xmlhack.ru XML-форумы
Обсуждение XML и связанных с ним технологий

Как описать дочерние элементы xs:any в XML Schema?


Автор Сообщение
altern
Новичок

Зарегистрирован: 14.01.2009
Сообщения: 5
Откуда: Киев
Посетить сайт автора
[13470] Ср Янв 14, 2009 21:38
Как описать дочерние элементы xs:any в XML Schema?
Есть пример XML:
<root>
...
<scope>
<example_element1>
<child></child>
</example_element1>
<example_element2>
<child></child>
</example_element2>
<example_element3>
<child></child>
</example_element3>
</scope>
...
</root>

Здесь в определенном элементе (в данном случае это элемент scope) может находиться элемент с любым именем, но с обязательным дочерним элементом <child>. Как это описать в XML Schema?
_________________
I'm going to prove that impossible way exists
Vasilisk
Наставник

Зарегистрирован: 17.05.2006
Сообщения: 370
Откуда: Украина, Харьков
[13474] Чт Янв 15, 2009 00:17

Никак. Impossible
_________________
С уважением Vasilisk
Уважайте читающих, используйте тэги [code ][/code]
altern
Новичок

Зарегистрирован: 14.01.2009
Сообщения: 5
Откуда: Киев
Посетить сайт автора
[13475] Чт Янв 15, 2009 00:34

жаль. так хотелось...
_________________
I'm going to prove that impossible way exists
altern
Новичок

Зарегистрирован: 14.01.2009
Сообщения: 5
Откуда: Киев
Посетить сайт автора
[13476] Чт Янв 15, 2009 01:50

Vasilisk писал(а):

Никак. Impossible



Скажите, а можно ли хотя бы указывать шаблоны имен дочерних элементов? я хочу иметь элменты типа <1.0.0> , <2.0.1> итд. Это возможно?
_________________
I'm going to prove that impossible way exists
Vasilisk
Наставник

Зарегистрирован: 17.05.2006
Сообщения: 370
Откуда: Украина, Харьков
[13477] Чт Янв 15, 2009 02:03

Нет. Шаблоны могут быть только для значений. Все имена должны быть строго детерминированы

Может стотит посмотреть в сторону <xsd:choice>?
_________________
С уважением Vasilisk
Уважайте читающих, используйте тэги [code ][/code]
altern
Новичок

Зарегистрирован: 14.01.2009
Сообщения: 5
Откуда: Киев
Посетить сайт автора
[13479] Чт Янв 15, 2009 03:19

К сожалению xs:choice не лучший вариант. содержимое элемента описывается регуляркой вида ([\d])+\.([\dx])+\.([\dx])+(_(.*))?
Другого выхода, кроме как реализации атрибута видимо нет. Это на самом деле логично, но все равно немного меня не устраивает.

Если интересно то, для чего мне это всё нужно, можно взглянуть на диаграмму http://altern.kiev.ua/repostructure/maintenance.html
У меня есть репозиторий с определенной структурой директорий (я планировал генерировать XML на основе правила "имя папки"->"имя элемента"), которую хотел описать c помощью XML Schema. Мне казалось что возможностей языка должно хватить. Но как ни крути, два описанных ранее момента остаются:
1. Как задать шаблон имени элемента версий?
2. Как описать директории (изображены курсивом), которые могут иметь произвольное имя? Как здесь: http://altern.kiev.ua/repostructure/experimental.html - dir1 и dir2

Может я не с той стороны подхожу к решению вопроса? Есть идеи как можно простым способом (без анализа имен директорий) генерить XML на основе структуры директорий и описать результат в XSD-виде? Может можно как-то извратиться с помощью ключей и прочей дребедени?
_________________
I'm going to prove that impossible way exists
Vasilisk
Наставник

Зарегистрирован: 17.05.2006
Сообщения: 370
Откуда: Украина, Харьков
[13493] Чт Янв 15, 2009 23:46

altern писал(а):

Другого выхода, кроме как реализации атрибута видимо нет. Это на самом деле логично, но все равно немного меня не устраивает.


Тем не менее это действительно лучший вариант. Не понятно чем он Вас не устраивает?

У Вас есть объект - репрозиторий. Этот объект содержит дочерние объекты - ветви разработки. У этих объектов есть атрибуты - имя, дата создания, дата последней модификации, номер версии.... Каждая ветвь может в свою очередь содержать некие дочерние элементы
_________________
С уважением Vasilisk
Уважайте читающих, используйте тэги [code ][/code]
altern
Новичок

Зарегистрирован: 14.01.2009
Сообщения: 5
Откуда: Киев
Посетить сайт автора
[13500] Пт Янв 16, 2009 04:18

Vasilisk писал(а):


У Вас есть объект - репозиторий. Этот объект содержит дочерние объекты - ветви разработки. У этих объектов есть атрибуты - имя, дата создания, дата последней модификации, номер версии.... Каждая ветвь может в свою очередь содержать некие дочерние элементы



Я понял. Всё дело в неправильном использовании xml абстракций - элементов и атрибутов. Я просто по-другому буду формировать исходный xml. Спасибо
_________________
I'm going to prove that impossible way exists