Как создать XSLT из примеров XML - PullRequest
5 голосов
/ 27 января 2009

Ищу инструмент для полуавтоматического поколения XSLT.

Учитывая 2 XML-файла, источник:

<elm>XXX</elm>

и цель:

<exx>XXX</exx>

Инструмент должен создать XSLT-файл, который создает цель из источника. Глядя на контент, он должен определять изменения уровня, размещения, имен элементов и т. Д. Нет общего решения для этого , но мне понадобятся только простые преобразования.

Возможная реализация:

1. scan the source, map XML data "XXX" to element path "elm"
2. scan the target, map XML data "XXX" to element path "exx"
3. output target XML structure, output XSLT mapping of "XXX", "elm" -> "exx"

В случае конфликтов необходимо ручное вмешательство. Конфликт может быть «ХХХ» более чем на месте в источнике.

Было бы неплохо, если бы этот инструмент также знал о XSD / DTD, например, для ручного отображения полей.

Редактировать : уточнение.

Ответы [ 3 ]

9 голосов
/ 27 января 2009

Я сомневаюсь, что даже простые правила преобразования можно генерировать автоматически.

Например, возьмите XML

<family>
  <father>Paul</father>
  <mother>Maria</mother>
  <child>Paul</child>
</family>

и цель

<person>Paul</person>

, что должно быть довольно распространенной комбинацией. Я не мог даже вручную решить (без помощи того, кто хочет преобразование), из какого тега была создана цель <person>, из <father> или <child>, поэтому я сомневаюсь, что приложение выдаст что-то вменяемое .

Обновление: Если для вас подойдет какое-то поколение drag & drop-XSLT, есть несколько коммерческих продуктов, но они не могут создать XSLT из целевого файла. Но перетаскивание должно быть как минимум лучшим решением, чем писать полностью вручную:

4 голосов
/ 25 сентября 2010

Вы проверяли Altova MapForce? Это не бесплатная программа, но я считаю, что она справляется с тем, что вы ищете. http://www.altova.com/mapforce.html

2 голосов
/ 13 марта 2015

Я использовал силу Altova Map для генерации XSLT для XML большого размера и работает хорошо. Вы можете использовать почти все логики, такие как логика, строковые функции, математические функции, пользовательские функции и т. Д., Но дело в том, что, когда ваш XML очень большой паук, такой как сеть, иногда запутывает вас много и беспорядок, но это только ожидаемо. И я думаю, что обслуживание в Альтове может быть немного жестким.

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