www - xml schema design
Diferencias/similitudes entre xsd: any y xsd: anyType (2)
Estoy leyendo sobre XML, XML-Schema, DTD y realmente no entiendo la diferencia entre xsd: any y xsd: anyType .
¿Puede alguien explicarme esto o señalar algún buen artículo? (por favor, no enlace a las especificaciones del esquema XML - lo leí y estoy más confundido)
TIA
La publicación de la lista de correo vinculada a la respuesta de dogbane no me quedó clara hasta que creé el siguiente ejemplo:
Con el esquema anyType:
<xsd:complexType name="Outer">
<xsd:element name="e" type="xsd:anyType" />
</xsd:complexType>
Lo que permite este formato:
<Outer>
<e> // must be called "e"
// but anything can go inside
</e>
</Outer>
Y con cualquier esquema:
<xsd:complexType name="Outer">
<xsd:any />
</xsd:complexType>
Lo que permite este formato:
<Outer>
//anything can go inside
</Outer>
Así que anyType es un tipo, y any es un elemento
Este post lo explica muy bien. Yo cito:
xsd: anyType es un tipo, como xsd: integer (aunque xsd: anyType es especial porque puede actuar como un tipo simple o complejo, y prácticamente no impone restricciones en el árbol que valida; considérelo como el Lenguaje de esquema análogo de java.lang.Object).
Un ejemplo de uso sería:
<xsd:element name="e" type="xsd:anyType"/>
Esto significaría que los elementos denominados
<e>
pueden tener cualquier contenido, cualquier atributo, etc.xs: any es un comodín, que se puede usar como término en un modelo de contenido. Por ejemplo:
<xsd:complexType name="T">
<xsd:sequence>
<xsd:element ref="A"/>
<xsd:any />
<xsd:element ref="C"/>
</xsd:sequence>
</xsd:complexType>
Los elementos del tipo T deben tener contenido
<A/><???/><C/>
, donde<???>
puede ser cualquier elemento con nombre. Ahora, si observa de cerca, hay una aproximación a la definición de xsd: anyType dado como referencia en la Recomendación, y utiliza un comodín xsd: cualquier comodín como medio para decir que permite cualquier elemento.
También eche un vistazo al esquema XML .