XSD错误:内容无效。预计是(注释?)

时间:2016-06-29 22:49:56

标签: xml xsd schema xsd-validation xml-validation

我正在尝试编写XSD。当我尝试使用此XSD解析XML时,以下组件导致错误。错误消息是

  

内容无效。预期是(注释?)。,第9行

我尝试删除xs:annotation部分,但没有运气。我在其他地方定义了'Job'和'JobParameter'。有人可以帮助我吗?

<xs:complexType name='JobsType'>
    <xs:annotation>
      <xs:documentation>
        A collection of Jobs for this component
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref='Job' minOccurs='1' maxOccurs='unbounded'>
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>
              A job element
            </xs:documentation>
          </xs:annotation>
          <xs:sequence>
            <xs:element name='JobParameters' type='JobParametersType' minOccurs='0' maxOccurs='1'>
              <xs:annotation>
                <xs:documentation>
                  A collection of job parameters
                </xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name='JobParametersType'>
    <xs:annotation>
      <xs:documentation>
        A collection of Actions for this component
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref='JobParameter' minOccurs='1' maxOccurs='unbounded'/>
    </xs:sequence>
  </xs:complexType>

1 个答案:

答案 0 :(得分:1)

使用xs:element/@ref引用全局声明的元素。

使用xs:element/@name为本地声明的元素指定名称。

使用@ref@name您不能同时使用

以上是适用于您的XSD的更正。请注意,JobParameter元素可能会在其他位置定义可以引用的定义,但由于您未包含它,我继续将其更改为@name属性。你可能想要改变它。

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           elementFormDefault="qualified">

  <xs:complexType name='JobsType'>
    <xs:annotation>
      <xs:documentation>
        A collection of Jobs for this component
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name='Job' minOccurs='1' maxOccurs='unbounded'>
        <xs:complexType>
          <xs:annotation>
            <xs:documentation>
              A job element
            </xs:documentation>
          </xs:annotation>
          <xs:sequence>
            <xs:element name='JobParameters' 
                        type='JobParametersType' minOccurs='0' maxOccurs='1'>
              <xs:annotation>
                <xs:documentation>
                  A collection of job parameters
                </xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name='JobParametersType'>
    <xs:annotation>
      <xs:documentation>
        A collection of Actions for this component
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name='JobParameter' 
                  minOccurs='1' maxOccurs='unbounded'/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>