2012-04-18 67 views
0

我想定義一個XSD到一個XML文件,但我不知道爲什麼它不適用於我。 我有2個文件的XML一個和XSD的一個。元素<xs:choice>不允許在這個位置

這裏是我的XML代碼:

<?xml version="1.0" encoding="UTF-8"?> 
<article href="http://www.ensa-agadir.ac.ma/arti234" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="C:\Users\Mehdi\Desktop\XMLDS~1\DS1-EX1.xsd"> 
<titre>application de web sémantique</titre> 
<nombrePages>12</nombrePages> 
<auteur rond="principale"> 
    <nom>Hassani</nom> 
    <prénom>Jamal</prénom> 
    <établissement>Ensa-Agadir</établissement> 
</auteur> 
<auteur rond="secondaire"> 
    <nom>Karoum</nom> 
    <prénom>Ahmed</prénom> 
    <établissement>Ensa-Agadir</établissement> 
</auteur> 
<auteur rond="secondaire"> 
    <nom>Roumi</nom> 
    <prénom>Jack</prénom> 
    <établissement>Ensa-Rouen</établissement> 
</auteur> 
<résume>Il s'agit d'expliquer comment utiliser et appliquer le web sémantique dans le domaine informatique</résume> 

和我的架構代碼:

<?xml version="1.0" encoding="UTF-8"?> 

<xs:element name="article" type="articleT" /> 

<xs:complexType name="articleT"> 
    <xs:sequence maxOccurs="1"> 
      <xs:element name="titre" type="xs:string" /> 
      <xs:element name="nombrePages" type="nbpagesT" /> 
    </xs:sequence> 

    <xs:choice maxOccurs="unbounded"> 
      <xs:element name="auteur" type="auteurT" /> 
    </xs:choice> 

</xs:complexType> 

<xs:simpleType name="nbpagesT"> 
    <xs:restriction base="xs:string"> 
     <xs:pattern value="[1-9]+" /> 
    </xs:restriction> 
</xs:simpleType> 

但我不知道爲什麼我有這樣的錯誤: enter image description here

謝謝:-)

回答

0

只能有元素的一個內容 - 你需要在序列,選擇,所有等之間進行選擇。但是,這些內容可以組成 - 您的序列可以包含選擇等等。另外,我不確定您對「選擇」的使用情況 - 當您想爲XML提供少量內容選項時使用此選項。所以只有一個元素「auteurT」沒有多大意義。例如,XSD:

<xs:complexType name="phoneT"> 
    <xs:choice> 
    <xs:element name="hardwire" type="xs:string"/> 
    <xs:element name="mobile" type="xs:string"/> 
    </xs:choice> 
</xs:complexType> 

如果分配「phoneT」類型的元素,它可以包含元素「硬線」或「移動」。

+0

謝謝你很多。我現在明白了,我應該使用sequence :-) – Copernic 2012-04-18 21:05:54

+0

在元素中不允許使用屬性'name' – 2018-01-03 21:00:13

0

其中只有一個元素的選擇是毫無意義的(它甚至沒有使該元素可選)。這就像福特說,我們提供的顏色選擇,你可以選擇黑色。

如果有一個以上的選擇,你可以這樣寫:

<xs:complexType name="articleT"> 
    <xs:sequence> 
     <xs:element name="titre" type="xs:string" /> 
     <xs:element name="nombrePages" type="nbpagesT" /> 
     <xs:choice maxOccurs="unbounded"> 
      <xs:element name="auteur" type="auteurT" /> 
      <xs:element name="rédacteur" type="rédacteurT" /> 
     </xs:choice> 
    </xs:sequence> 
</xs:complexType> 

,但我認爲你真正想要的內容模型是:

<xs:complexType name="articleT"> 
    <xs:sequence> 
     <xs:element name="titre" type="xs:string" /> 
     <xs:element name="nombrePages" type="nbpagesT" /> 
     <xs:element name="auteur" type="auteurT" minOccurs="0" maxOccurs="unbounded"/> 
    </xs:sequence> 
</xs:complexType> 
相關問題