Создание XML по XSD
От: Аноним  
Дата: 22.08.05 09:03
Оценка: 3 (1)
Такая проблема
по существующей XSD построить пустой XML
как это лучше реализовать?
програмно?
применить XSL к XSD?
а может в парсерах уже есть встроенные функции?
Re: Создание XML по XSD
От: achp  
Дата: 22.08.05 09:46
Оценка:
Здравствуйте, Аноним, Вы писали:

А>по существующей XSD построить пустой XML


Это как? Что является критерием пустоты?
Re: Создание XML по XSD
От: Crash2002  
Дата: 22.08.05 11:10
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Такая проблема

А>по существующей XSD построить пустой XML
А>как это лучше реализовать?
А>програмно?
А>применить XSL к XSD?
А>а может в парсерах уже есть встроенные функции?

Altova XMLSpy это умеет
Re[2]: Создание XML по XSD
От: Аноним  
Дата: 22.08.05 11:23
Оценка:
Здравствуйте, Crash2002, Вы писали:

C>Здравствуйте, Аноним, Вы писали:


А>>Такая проблема

А>>по существующей XSD построить пустой XML
А>>как это лучше реализовать?
А>>програмно?
А>>применить XSL к XSD?
А>>а может в парсерах уже есть встроенные функции?

C>Altova XMLSpy это умеет

Нет Altova XMLSpy не подойдет — это нужно сделать программно
А критерий пустоты — просто XML с элементами и атрибутами(только теми которые обязательны)
<root atr="1">
  <subroot1>
    <first/>
    <second/>
  </subroot1>
  <subroot2/>
</root>

такого типа
Re[3]: Создание XML по XSD
От: achp  
Дата: 22.08.05 12:04
Оценка:
Здравствуйте, Аноним, Вы писали:

А>А критерий пустоты — просто XML с элементами и атрибутами(только теми которые обязательны)


Первая проблема в том, что нужно выбрать корневой элемент. Впрочем, это не так уж и сложно.

Вторая проблема в том, что есть ещё и частицы типа <choice>, и анализ на предмет того, как выбирать альтернативы и не войти в бесконечную рекурсию, — штука нетривиальная.

Третья проблема в том, что схема может быть отягощена всякими деталями, вроде фасета <pattern>, или абстрактными элементами и типами данных, или ключами, которые также усложняют задачу.

Если бы знать, что схемы будут строиться на основе какого-то подмножества языка определения схем, то, возможно, задача могла бы быть упрощена.

В самом общем виде задача очень сложна, и я даже не вполне уверен, что разрешима алгоритмически.
Re[4]: Так никто и не написал, а я тоже ищу.
От: Аноним  
Дата: 24.10.05 07:56
Оценка:
A>В самом общем виде задача очень сложна, и я даже не вполне уверен, что разрешима алгоритмически.

Spy — справляется же.

В особо общем виде и не надо. Положим, я могу предположить, какие элементы описания могут присутствовать.
Могу я распарсить XSD и перемещаясь по его дереву — создать дерево XML?

— У интерфейса IXMLDOMSchemaCollection2 есть метод getSchema()
— Он возвращает ISchema
— У он и есть "головной" узел. В нем все правильно описано. Но вот как достучаться до тех узлов, которые обязаны присутствовать в нем? Есть у него свойство attributies и elements. Но в elements только головной узел. Без указания его типа(по типам можно было бы найти в свойстве types).

В общем, можно где-то найти пример последовательного прохода по дереву XSD-файла? С получением ISchemaType для каждого эл-та.
Можно на бейсике, делфи или си.
Re[5]: Так никто и не написал, а я тоже ищу.
От: achp  
Дата: 24.10.05 16:17
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Spy — справляется же.


Справляется, но очень условно. Он создаёт только заготовку, причём эта заготовка сама по себе может оказаться некорректной с точки зрения схемы (например, включать в себя абстрактные элементы, которые должны быть замещены элементами соответствующей группы подстановки, не удовлетворять требованиям ограничений key, unique, keyRef; значения простых типов могут не удовлеворять фасетам pattern и т. д.) и требовать последующей правки.
Re[6]: Жаль
От: Аноним  
Дата: 26.10.05 05:26
Оценка:
Здравствуйте, achp, Вы писали:

A>Справляется, но очень условно. Он создаёт только заготовку, причём эта заготовка сама по себе может оказаться некорректной с точки зрения схемы (например, включать в себя абстрактные элементы, которые должны быть замещены элементами соответствующей группы подстановки, не удовлетворять требованиям ограничений key, unique, keyRef; значения простых типов могут не удовлеворять фасетам pattern и т. д.) и требовать последующей правки.


Да Бог с ним, со SPY, не до жиру. Требуется хотя бы определять обязательность наличия элементов, их порядок, тип, ограничения по длине. Неужели никто это не анализировал и не встречал.
Огромная благодарность заранее
Re[7]: Жаль
От: AlexMDL  
Дата: 22.01.08 07:59
Оценка:
Здравствуйте, Аноним, Вы писали:


А>Да Бог с ним, со SPY, не до жиру. Требуется хотя бы определять обязательность наличия элементов, их порядок, тип, ограничения по длине. Неужели никто это не анализировал и не встречал.

А>Огромная благодарность заранее

У меня очень похожий вопрос, как по xml-схеме (xsd) для каждого элемента определить обязательность наличия подэлементов и их порядок?
Re: Создание XML по XSD
От: GhostCoders Россия  
Дата: 13.03.08 15:11
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Такая проблема

А>по существующей XSD построить пустой XML
А>как это лучше реализовать?
А>програмно?
А>применить XSL к XSD?
А>а может в парсерах уже есть встроенные функции?

Извиняюсь за вопрос немного не по теме. Где можно прочитать про схемы XML? Это XSD как я понимаю?
Третий Рим должен пасть!
Re[2]: Создание XML по XSD
От: Lloyd Россия  
Дата: 13.03.08 15:13
Оценка:
Здравствуйте, GhostCoders, Вы писали:

GC>Извиняюсь за вопрос немного не по теме. Где можно прочитать про схемы XML? Это XSD как я понимаю?


здесь
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[2]: Создание XML по XSD
От: AlexMDL  
Дата: 14.03.08 08:52
Оценка:
Здравствуйте, GhostCoders, Вы писали:

GC>Здравствуйте, Аноним, Вы писали:


А>>Такая проблема

А>>по существующей XSD построить пустой XML
А>>как это лучше реализовать?
А>>програмно?
А>>применить XSL к XSD?
А>>а может в парсерах уже есть встроенные функции?

GC>Извиняюсь за вопрос немного не по теме. Где можно прочитать про схемы XML? Это XSD как я понимаю?


http://khpi-iip.mipk.kharkiv.edu/library/extent/prog/iipXML/x-valid.html
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.