我想编写一个XSD文件来验证以下XML
xml
文件:
<?xml version="1.0" encoding="UTF-8"?>
<eventos xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="eventos31.xsd">
<evento tipo="musical">
<compania>
<nombre_compania>La Joven Compañia</nombre_compania>
<interpretes>
<interprete codint="I1"> Javier Ariano</interprete>
<interprete codint="I2"> Alejandro Chaparro</interprete>
<interprete codint="I3"> Jesús Lavi</interprete>
<interprete codint="I4"> Rosa Martí</interprete>
<interprete codint="I5"> Laura Montesinos</interprete>
<interprete codint="I6"> Maria Romero</interprete>
<interprete codint="I7"> Ález Villazán</interprete>
<interprete codint="I8"> Jorge Yumar</interprete>
</interpretes>
<director-a> José Luis Arellano García</director-a>
<web_compania dirweb= "www.lajovencompania.com"/>
</compania>
<nombre_espectaculo>Priscila, reina del desierto</nombre_espectaculo>
<cuando>
<fecha dia="22" mes="febrero" anio="2018"/>
<hora inicio="20:30" fin="23:00"/>
</cuando>
<descripcion>Narra las aventuras de tres artistas drag</descripcion>
<precio>55€</precio>
<duracion>2h 30min</duracion>
</evento>
<evento tipo="magia">
<mago>
<nombre_mago> Jorge Blass</nombre_mago>
<mail dirmail= "naka@7rojo.com"/>
<shows>
<show codshow="C1"> Palabra de Mago</show>
<show codshow="C2"> Arte de la Magia</show>
<show codshow="C3"> Birlibirloque</show>
</shows>
</mago>
<nombre_espectaculo>Palabra de mago</nombre_espectaculo>
<cuando>
<fecha dia="02" mes="Junio" anio="2018"/>
<hora inicio="19:00" fin="20:30"/>
</cuando>
<descripcion>Trucos de magia de Jorge Blas</descripcion>
<precio>18€</precio>
<duracion>1h 30min</duracion>
</evento>
<evento tipo="humor">
<comico>
<nombre_comico> Dani Mateo</nombre_comico>
<ciudad> Granollers</ciudad>
<edad> 38</edad>
<redes_sociales>
<blog> danimateo.blogspot.com</blog>
<twitter> @DaniMateoAgain</twitter>
<facebook> @dani.mateo</facebook>
</redes_sociales>
</comico>
<nombre_espectaculo>Dani Mateo,10 aniversario</nombre_espectaculo>
<cuando>
<fecha dia="09" mes="Junio" anio="2018"/>
<hora inicio="20:30" fin="22:00"/>
</cuando>
<precio>21€</precio>
<duracion>1h 30min</duracion>
</evento>
这就是我到目前为止所尝试的内容
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="eventos">
<xs:complexType>
<xs:sequence>
<xs:element name="evento" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="compania">
<xs:complexType>
<xs:sequence>
<xs:element name="nombre_compania" type="xs:string" />
<xs:element name="interpretes">
<xs:complexType>
<xs:sequence>
<xs:element name="interprete" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="codint" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="director-a" type="xs:string" />
<xs:element name="web_compania"/>
</xs:sequence>
<xs:attribute name="dirweb" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="nombre_espectaculo" type="xs:string" maxOccurs="unbounded"/>
<xs:element name="cuando">
<xs:complexType>
<xs:sequence>
<xs:element name="fecha"/>
<xs:element name="hora"/>
</xs:sequence>
<xs:attribute name="dia" type="xs:integer"/>
<xs:attribute name="mes" type="xs:string"/>
<xs:attribute name="anio" type="xs:integer"/>
<xs:attribute name="inicio" type="xs:string"/>
<xs:attribute name="fin" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="descripcion" type="xs:string"/>
<xs:element name="precio" type="xs:string"/>
<xs:element name="duracion" type="xs:string"/>
<xs:element name="mago" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="nombre_mago" type="xs:string"/>
<xs:element name="mail"/>
<xs:element name="shows">
<xs:complexType>
<xs:sequence>
<xs:element name="show" type="xs:string"/>
</xs:sequence>
<xs:attribute name="codshow" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="dirmail" type="xs:string"/>
</xs:complexType>
</xs:element>
<xs:element name="comico" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="nombre_comico" type="xs:string"/>
<xs:element name="ciudad" type="xs:string"/>
<xs:element name="edad" type="xs:integer"/>
<xs:element name="redes_sociales">
<xs:complexType>
<xs:sequence>
<xs:element name="blog" type="xs:string"/>
<xs:element name="twitter" type="xs:string"/>
<xs:element name="facebook" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="tipo" type="xs:string"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
使用xmllint xmllint -schema eventos31.xsd 48985313.xml
我得到了
48985313.xml:6: element interpretes: Schemas validity error : Element 'interpretes': The attribute 'codint' is required but missing.
48985313.xml:29: element mago: Schemas validity error : Element 'mago': This element is not expected. Expected is ( compania ).
48985313.xml:48: element comico: Schemas validity error : Element 'comico': This element is not expected. Expected is ( compania ).
48985313.xml fails to validate
为现有XML文件获取XSD的最简单方法是什么?
答案 0 :(得分:0)
将文档加载到 Eclipse 并安装“ Eclipse Xml编辑器和工具”我可以看到您的xml文档中存在各种错误。您应该逐行检查错误,并在XSD或XML文件中询问自己在哪里纠正错误。
第6行: cvc-complex-type.4:属性'codint'必须出现在元素'interpretes'上。
这可以通过在&lt; interpretes&gt;中添加codint属性来解决。 XML文件中的标记。我也可以修改相应的XSD定义。
第29行: cvc-complex-type.2.4.a:找到以元素'mago'开头的无效内容。 '{compania}'之一是 预期
...继续...尝试理解错误...尝试修复XSD或XML ...如果什么都不起作用,请问堆栈溢出问题