无法调试XSD

时间:2012-05-08 17:29:42

标签: xml xsd

这是我的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>

2 个答案:

答案 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>