在 iReport 5.6 打开 JRXML 时出错:“属性‘hTextAlign’不允许出现在元素‘样式’中”

Jer*_*tos 4 jasper-reports ireport

有没有人在iReport 5.6 中尝试打开jrxml文件时遇到过这个错误?

属性 'hTextAlign' 不允许出现在元素 'style' 中

Ale*_*x K 5

问题原因

jrxml文件只是一个xml文件。借助XSD模式验证xml文件是一种常见的做法。

JasperReports引擎也在做同样的事情 - 它使用xsd模式来验证报告的模板(jrxml文件)。

5.x版本相比, 6.x版本的 xsd发生了变化。

最新版本JasperReports的架构可通过url获取。您始终可以在jrxml文件的标题中找到架构的链接:

<?xml version="1.0" encoding="UTF-8"?>
<jasperReport ... xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" ...>
Run Code Online (Sandbox Code Playgroud)

看起来您的模板(jrxml文件)是使用6.x版本的JasperReports Studio创建或编辑的,并且保存时没有应用与5.x 版本选项的兼容性(兼容性警告对话框)。

如何解决这个问题:

  1. 您可以使用Jaspersoft Studio ( JSS ) 来修改报告的模板。也许这是最好的选择,因为iReport已被弃用(自 2015 年底以来不再支持)并且仅支持5.6 和最旧版本JasperReports模板/功能。

  2. 您可以在JSS中将兼容模式下的模板保存为5.x版本,然后继续使用iReport编辑jrxml文件

在JSS中保存模板期间会出现该对话框,如下所示:

JSS 的对话

要启用此对话框,您应该更改通过“窗口”->“首选项”菜单调用的表单中的设置。

JSS 的偏好

  1. 始终仅使用iReport设计器。但请注意:它不支持6+版本的JasperReports模板。

如何检查5.x6.x版本的schema差异

任何版本的JasperReports的xsd模式都可以在带有源代码的 JasperReports 包或源代码存储库中找到。

这是比较5.6.1(左图)和6.3.0(右图)版本的xsd文件的片段(屏幕截图) 。

两个xsd的差异

正如您所看到的,hTextAlign错误消息中的属性仅出现在6.x版本的xsd中。这是您收到错误的原因