Анализатор XML не жалуется, но XMLeditor жалуется на пустые атрибуты - PullRequest
0 голосов
/ 10 сентября 2009

У меня есть программа, которая использует XSL-FO (org.apache.fop.apps.Driver) для создания распечатки PDF из файла XML.

Я работаю над таблицами стилей (xsl) и пытаюсь упростить отладку. У меня есть XML & XSL-файл, теперь я просто хочу, чтобы мой редактор показывал мне сгенерированный PDF, когда я работаю над XSL-файлом.

Я перепробовал несколько редакторов, и они дали ошибки, с которыми у программы, похоже, нет проблем.

похоже, проблема в том, что редактор ожидает увидеть:

<ATTRVALUE attribute_id="92" attrname="Date Required" attr_value="" />

в то время как фактический XML, сгенерированный программой, равен

<ATTRVALUE attribute_id="92" attrname="Date Required" attr_value />

Как вы видите, пустое значение attr_value явно пропускает = "" - есть ли способ сделать редактор менее строгим? Таким образом, он может генерировать PDF так же, как и моя программа?

Ответы [ 3 ]

1 голос
/ 10 сентября 2009

XML с attr_value и no = недействителен W3C XML-спецификация , поэтому все инструменты XML должны жаловаться Какой инструмент вы используете?

1 голос
/ 10 сентября 2009
<ATTRVALUE attribute_id="92" attrname="Date Required" attr_value />

Эта строка недействительна, как упоминалось ранее. Программа, которая думает, что все в порядке, вероятно, использует свой собственный XML-парсер, который просто игнорирует эти недействительные атрибуты. Это заставляет меня сомневаться в качествах программирования людей, которые создали эту программу. Мне просто кажется, что они просто пишут этот XML как текст, а не через механизм XML-DOM. Тем не менее, это должно быть хорошо, но, к сожалению, в их коде есть ошибка.

Большинство - если не все - редакторы, анализаторы и преобразователи XML проверяют XML до его обработки. Так что, к сожалению, нет хорошего решения, чтобы исправить эту проблему из файла XSLT. Используя RegEx, вы можете удалить недопустимые атрибуты или сделать их допустимыми, добавив к ним = "", но это невозможно сделать, пока XSLT не проверит XML.

Чтобы решить эту проблему, необходимо изменить программу для генерации правильного XML. Потому что сейчас это можно считать очень серьезной ошибкой. (Если только программа не использует этот поддельный XML для внутренних целей.)

0 голосов
/ 10 сентября 2009

Хорошо, я только что использовал Регулярное выражение Найти и заменить все имена атрибутов, если они не заканчиваются = "", то добавьте это, теперь все вроде бы нормально ... хромает, но это нормально для моего нужно на данный момент

...