Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 元素';断言';无效、错位或发生频率过高_Java_Xml_Xsd_Jaxb_Xsd 1.1 - Fatal编程技术网

Java 元素';断言';无效、错位或发生频率过高

Java 元素';断言';无效、错位或发生频率过高,java,xml,xsd,jaxb,xsd-1.1,Java,Xml,Xsd,Jaxb,Xsd 1.1,供应商向我们提供了一组架构(我们也向他们发出了错误警报)。 当我尝试使用xjc生成Java类时,它失败了,错误如下 C:\Users\...>"C:\Program Files (x86)\Java\jdk1.7.0_80\bin\xjc.exe" -d output ICSv1.01.xsd 正在分析架构 [错误]s4s elt的内容无效。1:“ICSBatchV01”的内容无效 无效的元素“assert”无效、放错位置或出现频率过高。 文件的第77行:/C:/Users/../ICS

供应商向我们提供了一组架构(我们也向他们发出了错误警报)。
当我尝试使用xjc生成Java类时,它失败了,错误如下

C:\Users\...>"C:\Program Files (x86)\Java\jdk1.7.0_80\bin\xjc.exe" -d output ICSv1.01.xsd
正在分析架构

[错误]s4s elt的内容无效。1:“ICSBatchV01”的内容无效 无效的元素“assert”无效、放错位置或出现频率过高。 文件的第77行:/C:/Users/../ICSv1.01.xsd

[错误]s4s elt无效内容。1:“ICSDocBody”的内容无效 无效的元素“assert”无效、放错位置或出现频率过高。 文件的第215行:/C:/Users/../ICSv1.01.xsd

未能分析架构

我还尝试了Java8和最新、最伟大的jaxb(Javadist之外)

然而,它确实可以与Altova的xmlspy软件配合使用,但它试图避免供应商锁定/非标准的东西。
我在这里和网上做了一些搜索(大部分在这里)

这是标题

<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2015 rel. 4 sp1 (x64) (http://www.altova.com)  -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"     xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" xmlns:msg01="urn:cccc:tech:xsd:ics.msg01.001" xmlns:msg02="urn:cccc:tech:xsd:ics.msg02.001" xmlns:msg03="urn:cccc:tech:xsd:ics.msg03.001" xmlns:msg04="urn:cccc:tech:xsd:ics.msg04.001" xmlns:msg05="urn:cccc:tech:xsd:ics.msg05.001" xmlns:msg06="urn:cccc:tech:xsd:ics.msg06.001" xmlns:msg07="urn:cccc:tech:xsd:ics.msg07.001" xmlns:msg08="urn:cccc:tech:xsd:ics.msg08.001" xmlns:msg09="urn:cccc:tech:xsd:ics.msg09.001" xmlns:msg11="urn:cccc:tech:xsd:ics.msg11.001" xmlns:msg12="urn:cccc:tech:xsd:ics.msg12.001" xmlns:msg13="urn:cccc:tech:xsd:ics.msg13.001" xmlns:msg14="urn:cccc:tech:xsd:ics.msg14.001" xmlns:msq01="urn:cccc:tech:xsd:ics.msq01.001" xmlns:msq02="urn:cccc:tech:xsd:ics.msq02.001" xmlns:msq03="urn:cccc:tech:xsd:ics.msq03.001" xmlns:msq04="urn:cccc:tech:xsd:ics.msq04.001" xmlns:msq05="urn:cccc:tech:xsd:ics.msq05.001" xmlns:msf01="urn:cccc:tech:xsd:ics.msf01.001" xmlns:msf02="urn:cccc:tech:xsd:ics.msf02.001" xmlns:msf03="urn:cccc:tech:xsd:ics.msf03.001" xmlns:msf04="urn:cccc:tech:xsd:ics.msf04.001" xmlns:mss01="urn:cccc:tech:xsd:ics.mss01.001" xmlns:mss02="urn:cccc:tech:xsd:ics.mss02.001" xmlns:mss03="urn:cccc:tech:xsd:ics.mss03.001" xmlns:mss04="urn:cccc:tech:xsd:ics.mss04.001" xmlns:msp01="urn:cccc:tech:xsd:ics.msp01.001" xmlns:msp02="urn:cccc:tech:xsd:ics.msp02.001" xmlns:msp03="urn:cccc:tech:xsd:ics.msp03.001" xmlns:msp04="urn:cccc:tech:xsd:ics.msp04.001" xmlns:doc="urn:cccc:tech:xsd:ics.doc.001" xmlns="urn:cccc:tech:xsd:ics.doc.001" targetNamespace="urn:cccc:tech:xsd:ics.doc.001" elementFormDefault="qualified" attributeFormDefault="unqualified" vc:minVersion="1.1">

以下是相关的代码片段。
从第44行开始,到第77行结束(xjc转换器报告了第一个错误)


MIG 10.1 NbOfTxs(MWR030):文件中信息的计数
MIG 10.1 DocTyp:标识文件内容的代码

xs:assert
需要xsd1.1,但JAXB只支持xsd1.0,不支持xsd1.1。没有一个请求添加对XSD 1.1的支持(参考文献:和)

怎么办:
  • 贡献自己的力量,或者希望别人做(不太可能)
  • 同时,分析XSD的1.1依赖关系。如果是温和的, 例如只使用
    xs:assert
    ,编写一个简单的XSLT转换 剥离
    xs:assert
    验证,以便仍然可以生成 上课。(参见下面的XSLT。)根据需要,也可以执行
    xs:assert
    检查 在Java代码中手动输入
剥离XSLT
xs:assert

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="xs:assert"/>
</xsl:stylesheet>


谢谢kjhughes,我手动删除了xs:asserts,并得到了一些其他错误(不幸的是,我手头没有这些错误)。在删除所有asserts后手动删除asserts后,我找到了错误的草稿行C:\perforce\COMMON\ICSv1.01>“C:\Program Files(x86)\Java\jdk1.7.0\u 80\bin\xjc.exe”-d src/main/java-p com.netdeposit.ics src/main/resources/ICSv1.01.xsd解析架构。。。[错误]属性“Any”已定义。使用jaxb:property>解决此冲突。文件的第177行:/C:/perforce/COMMON/ICSv1.01/src/main/resources/ICSv1.01.xsd[错误]以下位置与文件的上述错误行178相关:/C:/perforce/COMMON/ICSv1.01/src/main/resources/ICSv1.01。xsd@unsavorycoder:不客气。如果这些新错误仍然是一个问题,请发布一个新问题;您可能想在此处链接到它。@KJ认为给定的资源链接不起作用。JAXB支持xsd 1.1吗?@SangamBelose:我已经更新了答案,因为这些链接已经损坏了。不幸的是,JAXB中仍然不支持XSD 1.1,目前看来不太可能支持XSD 1.1。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>

  <xsl:template match="xs:assert"/>
</xsl:stylesheet>