2009-09-10 2 views
0

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

Я работаю над стилями (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 так же, как программа, которую у меня есть?

+0

Я знаю, что это может помочь, если я упомянул используемый редактор, я попробовал отладчик XSL-FO и некоторые другие. Может быть, вы знаете редактора, у которого нет никаких проблем с этим, или, может быть, я неправильно рассматриваю проблему? –

ответ

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

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

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

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

+0

Я понимаю, но это еще более запутанно. Информация о приложении: это WAR (веб-приложение, написанное на Java), развернутое в SilverStream. Новая версия построена для работы с Tomcat, так как SilverStream был прекращен. Я декомпилировал Java и использовал следующий импорт: import org.w3c.dom.Document; - он объявляет XML-файл как документ ... так почему это работает? Также Transformer, который принимает XML + XSL и генерирует выход в формате PDF, имеет: import org.apache.fop.apps.Driver; import org.xml.sax.XMLReader; transformer.transform (новый DOMSource (doc), новый SAXRslt (driver.getContentHandler())); –

0

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

1

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