0

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

我正在研究样式表(xsl),并且正在尝试使调试更容易。我有 XML 和 XSL 文件,现在我只想让我的编辑器在我处理 XSL 文件时向我展示生成的 PDF。

我尝试了几个编辑器,他们给出了程序似乎没有问题的错误。

似乎问题在于编辑希望看到:

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

而程序生成的实际 XML 是

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

如您所见,空的 attr_value 显然缺少="" - 有没有办法让编辑器不那么严格?所以它可以像我的程序一样生成 PDF 吗?

4

3 回答 3

1

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

于 2009-09-10T10:57:52.620 回答
1
<ATTRVALUE attribute_id="92" attrname="Date Required" attr_value />

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

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

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

于 2009-09-10T11:34:08.617 回答
0

Ok, I've just used the Regular Expression Find & replace all attribute names, if they don't end with ="" then add that, now everything seems to be ok... lame, but it's ok for my needs at the moment

于 2009-09-10T09:57:57.740 回答