Использование атрибутов XML для создания динамических таблиц HTML - PullRequest
1 голос
/ 22 августа 2011

Мне кажется, мне нужно решить очень интересную проблему.У меня есть что-то вроде XML:

<elements>
  <element name="nam1" val="John" xpos="10" ypos="10" />
  <element name="nam3" val="Mark" xpos="10" ypos="30" />
  <element name="nam4" val="Rick" xpos="50" ypos="30" />
  <element name="nam5" val="Jeff" xpos="10" ypos="50" />
  <element name="nam6" val="Dean" xpos="50" ypos="50" />
  <element name="nam2" val="Scott" xpos="50" ypos="10" />

Позиции элементов в xml могут быть не последовательными.HTML-таблица.Содержимое TR и TD должно быть установлено «динамически» на основе атрибутов xpos и ypos XML-файла. Вывод должен выглядеть примерно так:не совсем одинаковы, но немного отличаются для 2 смежных элементов .. например,

<elements>
  <element name="nam1" val="John" xpos="10" ypos="12" />
  <element name="nam3" val="Mark" xpos="11" ypos="30" />
  <element name="nam4" val="Rick" xpos="53" ypos="32" />
  <element name="nam5" val="Jeff" xpos="09" ypos="52" />
  <element name="nam6" val="Dean" xpos="51" ypos="51" />
  <element name="nam2" val="Scott" xpos="50" ypos="10" />
</elements>

Есть идеи, как мне этого добиться?используя xslt или Java / Javascript dom парсер?или что-нибудь еще?и как?

Ответы [ 2 ]

0 голосов
/ 22 августа 2011

Я бы не посмел попытаться решить эту проблему с помощью XSLT - XSLT хорош для простых базовых преобразований.Хотя это может быть возможным, это, вероятно, сведет вас с ума в процессе.

Что касается решения вообще:

  1. Используйте округление или аналогичные методы для решенияпроблема "off by 1/2"
  2. Сортировка данных.
  3. Создание таблицы из отсортированных данных должно быть тривиальным

Теперь я ожидаю, что выспросить "а без сортировки?"(потому что это слишком дорого, что угодно).Ответ: Вы будете сортировать данные, так или иначе.Создание огромной карты в памяти и добавление к ней элементов на основе координат сортировки.Это просто неочевидно.

[EDIT] Может быть, этот прием тоже подойдет: вместо таблицы используйте div с position: absolute и масштабируйте координаты до тех пор, пока тексты не перестанутперекрытия.Это будет эмулировать таблицу, но работает ли она для вас, зависит от того, действительно ли координаты что-то значат (т.е. они не случайны, но какая-то другая система использует их для выкладки данных)

0 голосов
/ 22 августа 2011

проще всего написать небольшой код Java, который его анализирует и переводит в нужный формат. Это очень сложно сделать с помощью xslt. на самом деле это кошмар, делать это с xslt, особенно если вы хотите сохранить его позже и изменить правила. Java-код будет легко понять и поддерживать в будущем, но он будет длинным.

...