XML解析器不会抱怨,但XMLeditor会抱怨空属性

时间:2009-09-10 09:12:07

标签: xml xml-validation

我有一个程序使用XSL-FO(org.apache.fop.apps.Driver)从XML文件生成PDF打印。

我正在研究Stylesheets(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 个答案:

答案 0 :(得分:1)

带有attr_value和no =的XML无效W3C XML specification,因此所有XML工具都应该抱怨。你用的是什么工具?

答案 1 :(得分:1)

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

如前所述,该行无效。认为可以的程序可能正在使用它自己的自定义XML解析器,它将忽略这些无效的属性。这使我怀疑创建该程序的人的编程质量。在我看来,他们只是通过XML-DOM机制将这个XML写成文本。不过,这应该没问题,但不幸的是,他们的代码有一个错误。

大多数 - 如果不是全部 - XML编辑器,解析器和转换器将在处理之前验证XML。所以不幸的是,没有很好的解决方案来解决XSLT文件中的这个问题。使用RegEx,您可以通过向它们附加=“”来删除无效属性或使它们有效,但在XSLT验证XML之前无法执行此操作。

要解决此问题,需要更改程序以生成有效的XML。因为现在,这可能被认为是一个非常严重的错误。 (除非程序仅将此伪XML用于内部目的。)

答案 2 :(得分:0)

好的,我刚刚使用了Regular Expression Find&amp;替换所有属性名称,如果它们不以=“”结尾,那么添加它,现在一切似乎都没问题......跛脚,但它现在可以满足我的需求