这是我的XSD。我无法理解为什么我一直收到这个错误:
CDIER0202E:加载XML时遇到内部致命DOM错误 架构=:瓮|库| Test123247_1 |资源| SmallCase.xsd:瓮|库| Test123247_1 |资源| SmallCase.xsd:瓮|库| Test123247_1 |资源| SmallCase.xsd:3:35:322:该 元素“xsd:element”的前缀“xsd”未绑定..
以下是编辑后的新XSD:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:scotiaXML="http://xml.scotia.com" targetNamespace="http://xml.scotia.com" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
<!-- Begin Level 1 =============================================-->
<xsd:element name="OTC_Matching" type="temp"/>
<xsd:complexType name="temp" mixed="false">
<xsd:sequence>
<xsd:choice>
<xsd:element ref="PostTrade"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
<!-- End Level 1 =============================================-->
<xsd:element name="PostTrade" type="PostTradeTransaction"/>
<xsd:complexType name="PostTradeTransaction" abstract="true">
<xsd:sequence>
<xsd:choice>
<xsd:element name="elem1" type="xsd:string"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
答案 0 :(得分:3)
您的第一个问题是您没有将名称空间xsd分配给任何内容。你为什么使用xs和xsd?我想你想用xs替换xsd无处不在。
第二个问题是您没有提供贴身标签。
第三个问题是您没有表明PostTrade处于OTC_Matching的序列中。
您是否可以提供要使用此架构验证的示例xml?
这进一步发展并给我错误:
D:\downloads>\bin\xmllint.exe --schema y.xsd x1.xml
<?xml version="1.0"?>
<OTC_Matching xmlns="http://xml.scotia.com">
<PostTrade>
<elem1/>
</PostTrade>
</OTC_Matching>
x1.xml:2: element PostTrade: Schemas validity error : Element '{http://xml.scoti
a.com}PostTrade': The type definition is abstract.
x1.xml fails to validate
有了这个
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:scotiaXML="http://xml.scotia.com" targetNamespace="http://xml.scotia.com" elementFormDefault="qualified" attributeFormDefault="unqualified" version="1.0">
<!-- Begin Level 1 =============================================-->
<xs:element name="OTC_Matching">
<xs:complexType mixed="false">
<xs:sequence>
<xs:choice>
<xs:element name="PostTrade" type="scotiaXML:PostTradeTransaction"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<!-- End Level 1 =============================================-->
<xs:complexType name="PostTradeTransaction" abstract="true">
<xs:sequence>
<xs:choice>
<xs:element name="elem1" type="xs:string"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:schema>
答案 1 :(得分:0)
正确的xsd是:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="foo" version="1.0" >
<!-- Begin Level 1 =============================================-->
<xsd:element name="OTC_Matching">
<xsd:complexType mixed="false">
<xsd:sequence>
<xsd:choice>
<xsd:element ref="PostTrade" xmlns="foo"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- End Level 1 =============================================-->
<xsd:element name="PostTrade" type="PostTradeTransaction" xmlns="foo"/>
<xsd:complexType name="PostTradeTransaction" abstract="true" xmlns="foo">
<xsd:sequence>
<xsd:choice>
<xsd:element ref="PostTrade" xmlns="foo"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>