El siguiente post pregunta como para indicar que un elemento es el elemento raíz en un esquema XML:esquema XML: elemento raíz
Is it possible to define a root element in an XML Document using Schema?
He seguido las w3schools tutorial sobre esquemas XML, pero todavía le queda algo no es claro. Considere el esquema de ejemplo 2 desde http://www.w3schools.com/schema/schema_example.asp (se reproduce a continuación para mayor comodidad). ¿Cómo indica este código que <shiporder>
es el elemento raíz? ¿No es el ejemplo que dice que todos los elementos son válidos como elementos raíz?
------------------ instancia --------------------------- -------
<?xml version="1.0" encoding="ISO-8859-1"?>
<shiporder orderid="889923"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
<orderperson>John Smith</orderperson>
<shipto>
<name>Ola Nordmann</name>
<address>Langgt 23</address>
<city>4000 Stavanger</city>
<country>Norway</country>
</shipto>
<item>
<title>Empire Burlesque</title>
<note>Special Edition</note>
<quantity>1</quantity>
<price>10.90</price>
</item>
<item>
<title>Hide your heart</title>
<quantity>1</xample saying that all elements are valid as root elements?quantity>
<price>9.90</price>
</item>
</shiporder>
----------------------- schema ------------ ------------
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- definition of simple elements -->
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
<!-- definition of attributes -->
<xs:attribute name="orderid" type="xs:string"/>
<!-- definition of complex elements -->
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="address"/>
<xs:element ref="city"/>
<xs:element ref="country"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="item">
<xs:complexType>
<xs:sequence>
<xs:element ref="title"/>
<xs:element ref="note" minOccurs="0"/>
<xs:element ref="quantity"/>
<xs:element ref="price"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element ref="orderperson"/>
<xs:element ref="shipto"/>
<xs:element ref="item" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="orderid" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
Desde mi punto de vista un esquema XML debe hacer dos cosas:
- def ine lo que puede ocurrir dentro de cada nodo
- definen donde cada nodo puede ser colocado
Y parece que el ejemplo falla en el # 2. ¿Alguna sugerencia?
Estaba siguiendo los consejos del enlace. ¿Tendría razón al afirmar que con el Esquema XML anterior cualquiera de los elementos definidos puede ocurrir como el elemento raíz del documento? Gracias. – johngoche9999
Gracias, Brian Driscoll, por su explicación detallada de exactamente lo que el interlocutor está haciendo mal y cómo puede solucionarlo. – fool4jesus