Конвертация Xsd в rnc (или rng) (командная строка unix) - PullRequest
10 голосов
/ 23 сентября 2008

Краткий поиск показывает, что все доступные инструменты (командная строка uUnix), которые конвертируют из xsd (XML-схема) в rng (RelaxNG) или rnc (compact RelaxNG), имеют проблемы какого-то рода.

Во-первых, если я использую rngconv:

$ wget https://msv.dev.java.net/files/documents/61/31333/rngconv.20060319.zip
$ unzip rngconv.20060319.zip
$ cd rngconv-20060319/
$ java -jar rngconv.jar my.xsd  > my.rng

У него нет способа отменить нормализацию элементов, поэтому все заканчивают тем, что являются альтернативными начальными элементами (это также кажется немного ошибочным).

Trang является альтернативой, но он не поддерживает файлы xsd на входе только на выходе (почему?). Однако он поддерживает DTD. Сначала приходит на ум переход к DTD, но трудно найти и твердый xsd2dtd. Тот, что ниже:

 $ xsltproc http://crism.maden.org/consulting/pub/xsl/xsd2dtd.xsl in.xsd > out.dtd

Кажется, глючит.

Все это очень удивительно. За все эти годы использования XML (ab) не было достойных инструментов командной строки для этих тривиальных базовых задач? Люди используют только редакторы? Это работает? Я предпочитаю командную строку, особенно потому, что хотел бы автоматизировать эти задачи.

Какие-нибудь поучительные комментарии по этому поводу?

Ответы [ 5 ]

4 голосов
/ 23 сентября 2008

Преобразование XSD - очень сложная задача; спецификация XSD немного кошмарна и чрезвычайно сложна. Из некоторых быстрых исследований кажется, что легко перейти от RelaxNG к XSD, но обратное может быть неверным или даже невозможным (что объясняет ваш вопрос о Транге).

Я не понимаю вашего вопроса о редакторах - если вы спрашиваете, в конечном итоге, большинство людей переводят между XSD и RNG вручную, тогда да, я ожидаю.

Лучшим советом может быть, по возможности, избегать XSD или, по крайней мере, использовать RNG в качестве окончательного документа и генерировать XSD из этого. Вы также можете взглянуть на schematron .

2 голосов
/ 20 февраля 2010

В список добавлен онлайн-конвертер ( XSD -> RNG ) на http://relaxng.org/#conversion. Я попытался преобразовать maven-v4_0_0.xsd для проверки файлов pom.xml в emacs, но безуспешно. Сайт также содержит таблицу стилей XSL, которую вы можете использовать с xsltproc, но не можете ручаться за качество результата ...

2 голосов
/ 08 июля 2009

Правда, trang не принимает xsd на стороне ввода. Однако Trang может взять набор XML-файлов, которые должны соответствовать спецификации, и сгенерировать схему rnc или rng, в отношении которой они все будут действительны.

Downsides:

  • Требуется много совместимых XML-файлов (я думаю, чем больше, тем лучше)
  • Результирующая схема, вероятно, все еще может использовать некоторые настройки.

Пример дела:

Если мои совместимые XML-файлы хранятся в 1.xml 2.xml 3.xml 4.xml 5.xml

следующая команда скажет trang вывести схему rnc, которая будет действительна для всех из них:

java -jar trang.jar -I xml -O rnc 1.xml 2.xml 3.xml 4.xml 5.xml foo.rnc

Заключение

Если у вас есть хороший набор тестовых XML-файлов, которые соответствуют вашей схеме (или вы можете легко их создать), это может быть лучшим вариантом.

Желаю вам удачи.

0 голосов
/ 27 ноября 2008

Другая возможность может быть http://www.brics.dk/schematools/,, но я еще не пробовал.

0 голосов
/ 23 сентября 2008

Опять же, в отношении редакторов: я вижу, что нет способа сделать это с Oxygen, который, кажется, является популярным инструментом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...