根据C#中的模式验证XSD时得到上述错误。Schema查找列出的标记,而进入的其他标记是可选的。下面是我的XSD文件。xml文件需要如何修改,以确保它在XSD中具有下面列出的标记,并忽略额外的标记
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="InvoiceExport" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="InvoiceExport" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Invoice">
<xs:complexType>
<xs:sequence>
<xs:element name="Invoice_ID" type="xs:string" minOccurs="1" />
<xs:element name="BillingEntity" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string" minOccurs="1" />
<xs:element name="VendorNumber" type="xs:string" minOccurs="1" />
<xs:any processContents="lax" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="InvoiceBaseInfo" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="InvoiceDate" type="xs:string" minOccurs="1" />
<xs:element name="BillingEntityInvoiceNumber" type="xs:string" minOccurs="1" />
<xs:element name="ReceivedDate" type="xs:string" minOccurs="1" />
<xs:element name="AdjustedBilledAmount" type="xs:string" minOccurs="1" />
<xs:element name="UserFields" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:all>
<xs:element name="FirstApproverID" type="xs:string" minOccurs="1" />
<xs:element name="LastApproverID" type="xs:string" minOccurs="1" />
<xs:element name="LegalSpendCode" type="xs:string" minOccurs="0" />
</xs:all>
</xs:complexType>
</xs:element>
<xs:any processContents="lax" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="InvoiceMatter" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Priority_CD" type="xs:string" minOccurs="1" />
<xs:element name="InvoiceMatterDetail" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:any processContents="lax" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="InvoiceMatterAllocation" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="AllocationAmount" type="xs:string" minOccurs="1" />
<xs:element name="ChargeBackAccount1" type="xs:string" minOccurs="1" />
<xs:element name="ChargeBackAccount2" type="xs:string" minOccurs="1" />
<xs:element name="ChargeBackAccount3" type="xs:string" minOccurs="1" />
<xs:element name="UserFields" type="xs:string" minOccurs="0" />
<xs:any processContents="lax" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="InvoiceMatterApproval" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="EmployeeName" type="xs:string" minOccurs="1" />
<xs:any processContents="lax" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:any processContents="lax" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
问题是,您的模式允许任何数量的名为InvoiceMatter的元素,后面跟着一个可以具有任何名称的元素(包括名称InvoiceMatter);因此,如果找到了InvoiceMatter元素,那么它是否匹配特定的元素粒子或通配符就不明确了。
XSD 1.1通过说特定的元素粒子总是优先解决这一问题,因此一个解决方案就是简单地使用XSD 1.1处理器(如Saxon)。
如果不能这样做,通常的XSD 1.0解决方案是在xs:any通配符上使用targetNamespace属性,以通过名称空间来限制它(例如targetNamespace=“##other”
)。但这是对您的设计的改变;如果您希望允许元素在同一个名称空间中,那么您就遇到了一个问题。
下面是XSD。 下面是xml文件。 当尝试使用http://www.utilities-online.info/xsdvalidation验证它时,我得到以下错误 第2行62:org.xml.sax.SAXParseException;行号:2;列号:62;CVC-ELT.1:找不到元素“Message”的声明。
我对XML非常陌生,我面临着验证问题,如果我的XML和XSD文件结构良好,我也希望得到一些反馈。 在根据XSD验证XML时,我经常遇到错误- 下面的XML XSD 如果你发现其中任何一个有任何错误,请随时指出。它们都有从图案到最大长度的限制。 谢谢!!!!
尝试使用@SpringBootTest注释来运行单元测试时,我从Hibernate得到了这个错误。我能在网上找到的所有信息都说要将“hibernate.id.new_generator_mappings”设置为false,但这并不能解决我的问题。 2017-11-17 13:20:28.885警告11396--[main]O.s.w.cs.GenericWebApplicationContext:
问题内容: 但是,这将返回一条错误消息:线程“ main”中的异常java.lang.IllegalArgumentException:无法加载实现由http://www.w3.org/2001/XMLSchema -instance 指定的模式语言的SchemaFactory。 这是我的代码还是实际的xsd文件有问题? 问题答案: 该错误意味着您安装的Java没有任何可解析XMLSchema文件
使用eclipse时,我消除了所有错误,但当我更改xml文档中的元素内容时,超出了中设置的限制。xsd文件没有出现验证错误。我已尝试使用联机验证http://www.freeformatter.com/xml-validator-xsd.html我得到了错误“Cvc elt.1:找不到元素“DatabaseInventory”…行“4”,列“69”的声明”,但在eclipse中它验证得很好。不知道