cvc-elt.1.a:找不到元素“ commentaires”的声明

时间:2018-09-27 12:42:31

标签: xml xsd xsd-validation xml-validation

我想用XSD验证我的XML代码。首先,我没有任何名称空间就创建了它,并且它可以正常工作。但是,我想要一个名称空间,但是这里的事情比较棘手。实际上,使用下面提供的代码,当我尝试验证XML时,即使我认为该元素不正确(例如,写一个字符串而不是一个日期),我的软件(Editix)也会将我放置为元素的任何内容都视为“正确”。 )。

有人可以帮我吗?

这是我的XML代码:

<commentaires xsi:SchemaLocation="benoit@agroparistech.fr DM-commentaires.xsd"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:com="benoit@agroparistech.fr">

<com:commentaire id-commentaire="ID1">
    <com:date>
        2018-03-13
    </com:date>
    <com:auteur>
        Jean Dupont
    </com:auteur>
    <com:texte>
        La cuisine était délicieuce, je ne peux que vous conseiller l'entremet à la fraise!
    </com:texte>
</com:commentaire>
</commentaires>

这是XSD代码:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="benoit@agroparistech.fr" xmlns="benoit@agroparistech.fr" elementFormDefault="qualified">

<xs:element name="auteur" type="xs:string"/>
<xs:element name="date" type="xs:date"/>
<xs:element name="texte" type="xs:string"/>

<xs:attribute name="id-commentaire" type="xs:string"/>


<xs:element name="commentaire">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="date"/>
            <xs:element ref="auteur"/>
            <xs:element ref="texte"/>
        </xs:sequence>
        <xs:attribute ref="id-commentaire" use="required"/>
    </xs:complexType>
</xs:element>

<xs:element name="commentaires">
    <xs:complexType>
        <xs:sequence>
            <xs:element ref="commentaire" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

</xs:schema>

1 个答案:

答案 0 :(得分:0)

更正:

  1. xsi:SchemaLocation更改为xsi:schemaLocation。案件很重要。
  2. commentaires放在目标名称空间中。
  3. id-commentaire放在目标名称空间中。
  4. 将名称空间值从电子邮件地址更改为URI。 (这是可选的,但首选。)

正确,有效的XML和XSD如下:

XML

<com:commentaires xsi:schemaLocation="http://agroparistech.fr/commentaires DM-commentaires.xsd"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xmlns:com="http://agroparistech.fr/commentaires">

  <com:commentaire com:id-commentaire="ID1">
    <com:date>
      2018-03-13
    </com:date>
    <com:auteur>
      Jean Dupont
    </com:auteur>
    <com:texte>
      La cuisine était délicieuce, je ne peux que vous conseiller l'entremet à la fraise!
    </com:texte>
  </com:commentaire>
</com:commentaires>

XSD

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://agroparistech.fr/commentaires"
           xmlns="http://agroparistech.fr/commentaires"
           elementFormDefault="qualified">

  <xs:element name="auteur" type="xs:string"/>
  <xs:element name="date" type="xs:date"/>
  <xs:element name="texte" type="xs:string"/>

  <xs:attribute name="id-commentaire" type="xs:string"/>

  <xs:element name="commentaire">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="date"/>
        <xs:element ref="auteur"/>
        <xs:element ref="texte"/>
      </xs:sequence>
      <xs:attribute ref="id-commentaire" use="required"/>
    </xs:complexType>
  </xs:element>

  <xs:element name="commentaires">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="commentaire" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>

</xs:schema>