miércoles, 18 de junio de 2014

<?xml version="1.0" encoding="UTF-8"?>
<!--
===============================
Lenguajes de Marcas
Bloque 5, actividad 5, Schema.
Alumno: Miguel I. García López.
===============================

- La lista de productos tiene asociados un nombre de supermercado, y un logo (atributos).
- Cada producto tiene una referencia, y pertenece a una categoría (atributos).
- Un producto puede estar en oferta.
- Un distribuidor es una empresa, y puede tener cero o más comerciales.
- Una empresa tiene asociados una razón social y un CIF.
- Un comercial puede tener asignado un nº de teléfono (atributo).
- Un producto tiene un precio, una unidad de medida, una fotografía,
 un código de barras, y una URL para obtener más información.
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<!-- TipoReferencia: Letra + 3 dígitos decimales, p. ej. 'P001' -->
<xsd:simpleType name="TipoReferencia">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[A-Z]\d{3}" />
</xsd:restriction>
</xsd:simpleType>

<!-- TipoPrecio: Importe con 2 decimales, p. ej. '12,05' -->
<xsd:simpleType name="TipoPrecio">
<xsd:restriction base="xsd:string">
<xsd:pattern value="\d{1,},\d{2}" />
</xsd:restriction>
</xsd:simpleType>

<!-- TipoCategoria: Categorías disponibles para los productos, p. ej. 'ZUMOS' -->
<xsd:simpleType name="TipoCategoria">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="AGUA" />
<xsd:enumeration value="COSMETICA" />
<xsd:enumeration value="HORTALIZAS" />
<xsd:enumeration value="LACTEOS" />
<xsd:enumeration value="REFRESCOS" />
<xsd:enumeration value="ZUMOS" />
</xsd:restriction>
</xsd:simpleType>

<!-- TipoTelefono: Compuesto por un nº variable de dígitos decimales, p. ej. '96123456' -->
<xsd:simpleType name="TipoTelefono">
<xsd:restriction base="xsd:nonNegativeInteger" />
</xsd:simpleType>

<!-- TipoCodigoBarras: Compuesto por 3 letras + 6 dígitos decimales, p. ej. 'ZUM654321' -->
<xsd:simpleType name="TipoCodigoBarras">
<xsd:restriction base="xsd:string">
<xsd:pattern value="[A-Z]{3}\d{6}" />
</xsd:restriction>
</xsd:simpleType>

<!-- TipoCIF: (letra o dígito decimal) + 7 números + (letra o dígito decimal) -->
<xsd:simpleType name="TipoCIF">
<xsd:restriction base="xsd:string">
<xsd:pattern value="([A-Z]|\d)\d{7}([A-Z]|\d)" />
</xsd:restriction>
</xsd:simpleType>

<xsd:element name="productos">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="producto" minOccurs="1" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="nombre" type="xsd:string" />
<xsd:element name="descripcion" type="xsd:string" />
<xsd:element name="distribuidor">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="empresa">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="razon_social" type="xsd:string" />
<xsd:element name="cif" type="TipoCIF" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="comerciales" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="comercial" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="tlf" type="TipoTelefono" use="optional" />
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="precio" type="TipoPrecio" />
<xsd:element name="unidad" type="xsd:string" />
<xsd:element name="foto" type="xsd:string" />
<xsd:element name="codigo_barras" type="TipoCodigoBarras" />
<xsd:element name="oferta" type="xsd:string" />
<xsd:element name="mas_info" type="xsd:string" />
</xsd:sequence>
<xsd:attribute name="referencia" type="TipoReferencia" use="required" />
<xsd:attribute name="categoria" type="TipoCategoria" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
<xsd:attribute name="supermercado" type="xsd:string" use="required" />
<xsd:attribute name="logo" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:schema>





No hay comentarios:

Publicar un comentario