0

这是我的 XSD。我无法理解为什么我不断收到此错误:

CDIER0202E: 加载 XML 模式时遇到内部致命 DOM 错误=:urn|library|Test123247_1|resource|SmallCase.xsd:urn|library|Test123247_1|resource|SmallCase.xsd:urn|library|Test123247_1|resource|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>

4

2 回答 2

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>
于 2012-05-08T17:35:14.813 回答
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>

于 2012-05-09T13:08:36.377 回答