Анализатор XML не жалуется, но редактор XML жалуется на пустые атрибуты
-
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 для внутренних целей.)
Другие советы
XML с attr_value и no = недействителен спецификация W3C XML а> и поэтому все инструменты XML должны жаловаться. Какой инструмент вы используете?
Хорошо, я только что использовал поиск по регулярному выражению & amp; замените все имена атрибутов, если они не заканчиваются = " " затем добавьте, что теперь все вроде бы нормально ... хромает, но на данный момент это нормально для моих потребностей