我有一个程序使用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吗?
答案 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;替换所有属性名称,如果它们不以=“”结尾,那么添加它,现在一切似乎都没问题......跛脚,但它现在可以满足我的需求