【问题标题】:S4s-elt-invalid-content.1: Element 'element' Is Invalid, Misplaced, Or Occurs Too OftenS4s-elt-invalid-content.1:元素“元素”无效、放错位置或过于频繁地出现
【发布时间】:2016-04-29 18:38:28
【问题描述】:

我正在尝试使用给定架构验证我的 XML,但不断收到此错误。

S4s-elt-invalid-content.1:“coreTextType”的内容无效。 元素 'element' 无效、放错位置或频繁出现。

这是我的 XML

<?xml version="1.0" encoding="UTF-8"?>
<authors>
  <coretext>
    <author id="VH">
      <name>Victor Hugo</name>
      <nationality>French</nationality>
     <rating>4.00</rating>
    </author>
    <author period="classical">
      <name>Sophocles</name>
      <nationality>Greek</nationality>
     <rating>15.00</rating>
    </author>
    <author>
      <name>Nikolai Gogol</name>
      <nationality>Russian</nationality>
      <rating>11.00</rating>
    </author>
  </coretext>
  <author>
    <name>Leo Tolstoy</name>
   <nationality>Russian</nationality>
   <rating>12.00</rating>
  </author>
  <author id ="AR">
    <name>Alexander Pushkin</name>
    <nationality>Russian</nationality>
    <rating>13.88</rating>
  </author>
  <author period="classical">
    <name>Plato</name>
    <nationality>Greek</nationality>
    <rating>20.15</rating>
  </author>
</authors> 

这是我的架构

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

    <xs:element name="authors">
        <xs:complexType>
            <xs:choice maxOccurs="unbounded">
                <xs:element name="coretext" type="coreTextType" />
                <xs:element name="author" type="authorType" />
            </xs:choice>
        </xs:complexType>
    </xs:element>

    <xs:complexType name="coreTextType">
        <xs:element name="author" type="authorType" maxOccurs="unbounded"/>
    </xs:complexType>

    <xs:complexType name="authorType">
        <xs:sequence>
            <xs:element name="name" type="xs:string" />
            <xs:element name="nationality" type="xs:string" />
            <xs:element name="rating" type="xs:integer" />
            <xs:attribute name="id" type="xsd:string" />
            <xs:attribute name="binding" type="xsd:string" />
        </xs:sequence>
    </xs:complexType>

</xs:schema>

有人可以指点我正确的方向吗?

【问题讨论】:

    标签: xml xsd xsd-validation xml-validation


    【解决方案1】:

    您的 XML 很好,但您的 XSD 有很多错误:

    • xs:complexType 不能直接拥有xs:element 作为孩子;裹 首先在xs:sequence。 (这是与您当前的错误消息相关的错误。)
    • xs:attribute 不能出现在xs:sequence 中;将它们移到外面但仍在xs:complexType 内。
    • xsd: 未定义;你的意思是xs:
    • rating 的类型应该是xs:decimal,而不是xs:integer
    • @binding 应该是 @period 以匹配您的 XML。

    XSD

    这是您的 XSD 将修复的所有错误:

    <?xml version="1.0"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    
      <xs:element name="authors">
        <xs:complexType>
          <xs:choice maxOccurs="unbounded">
            <xs:element name="coretext" type="coreTextType" />
            <xs:element name="author" type="authorType" />
          </xs:choice>
        </xs:complexType>
      </xs:element>
    
      <xs:complexType name="coreTextType">
        <xs:sequence>
          <xs:element name="author" type="authorType" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:complexType>
    
      <xs:complexType name="authorType">
        <xs:sequence>
          <xs:element name="name" type="xs:string" />
          <xs:element name="nationality" type="xs:string" />
          <xs:element name="rating" type="xs:decimal" />
        </xs:sequence>
        <xs:attribute name="id" type="xs:string" />
        <xs:attribute name="period" type="xs:string" />
      </xs:complexType>
    
    </xs:schema>
    

    现在它将成功验证您的 XML。

    【讨论】:

    • 谢谢,我正在查看 W3C 学校并复制粘贴了属性,因此您指出了 xsd 和绑定错误。这个解决方案很有意义。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多