Анализатор XML не жалуется, но редактор XML жалуется на пустые атрибуты

StackOverflow https://stackoverflow.com/questions/1404218

  •  05-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

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

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

Это было полезно?

Решение

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

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

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

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

scroll top