Существует следующая задача — нужно построить полное дерево типов, определяемое набором XSD файлов — которые могут включать друг друга (импортировать). Требуется иметь некий API который позволит пройти по этому дереву, собрать все simple types, enumerations, complex types и т.д. На данный момент рассматривается XmlBeans, однако он предоставляет крайне ограниченные возможности в случае не стандартного XSD — то есть если мы добавляем дополнительный аттрибут, к, скажем, <xs:element...> то он уже отказывается его понимать.
Приведу пример. Пусть у нас есть некий элемент в XSD схеме, (скажем, enumeration), и для него определен какой-то нестандартный аттрибут — например APIName="FirstChoice". Средствами XmlBeans достать его нельзя. В то же время, если использовать стандартные XML средства, то работа сильно усложняется — начиная с импортов XSD схем, заканчивая "разнесением" — это complex type, это simple type, здесь он наследует такой-то и т.д.
Может немного не в тему... но если надо построить модель XSD схемы, потом по ней полазить и собрать simple, complex types, то я бы в первую очередь смотрел на Xerces.
Например у него есть XML Schema API http://xerces.apache.org/xerces2-j/javadocs/xs/index.html. Т.е. схему можно зачитать, получить ее модель и по модели уже лазить.
Здравствуйте, korostoff, Вы писали:
K>Здравствуйте, rkirillov, Вы писали:
K>Может немного не в тему... но если надо построить модель XSD схемы, потом по ней полазить и собрать simple, complex types, то я бы в первую очередь смотрел на Xerces. K>Например у него есть XML Schema API http://xerces.apache.org/xerces2-j/javadocs/xs/index.html. Т.е. схему можно зачитать, получить ее модель и по модели уже лазить.
Спасибо, идея отнюдь не дурна! А что скажете про Eclipse EMF — XSD SDK? Там вроде бы тоже неплохой набор классов для манипуляции? Сам пока не баловался, только читал...
Здравствуйте, rkirillov, Вы писали:
R>А что скажете про Eclipse EMF — XSD SDK? Там вроде бы тоже неплохой набор классов для манипуляции? Сам пока не баловался, только читал...
Скажу что использовать Eclipse XSD http://www.eclipse.org/xsd/ (вы ведь его имели ввиду?) тоже хорошая идея.
Как говориться выбор за вами. Я XSD не пользовался, но "XSD and SDO require EMF and Eclipse to run" поэтому я бы для начала попробовал более "легковесный" xerces.