Diferencia entre revisiones de «Solución a Esquema XML do Bánco Simpático Galego»
Ir a la navegación
Ir a la búsqueda
(Página creada con « <syntaxhighlight lang="XML> XSD – banco.xsd <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wmh="http://www.wmhe…») |
|||
| Línea 1: | Línea 1: | ||
| + | |||
| + | = Esquema XML do Bánco Simpático Galego = | ||
| + | Crea un esquema XML que valide o fichero XML creado no exercicio anterior. | ||
| + | |||
| + | Inclúense a continuación as especificacións que tiñamos para a creación do fichero XML e alguhna máis que deben ser consideradas para a realización deste exercicio. | ||
| + | * O banco consta de sucursais e de empregados. Para coñecer os empregados que traballan nunha sucursal debense utilizar claves. | ||
| + | * O banco ten o código 4444, e tamén queremos coñecer o seu nome completo, abreviatura, nome e apelidos do seu presidente, data de creación que debe ter 3 atributos: día, mes y año, e información das sucursais das que consta. | ||
| + | * Cada sucursal ten un código de catro díxitos e unha superficie que terá un atributo unidade que tomará sempre coma valor “m2”. | ||
| + | * Para cada sucursal queremos coñecer o personal do que consta. Os empregados identificaranse cun código, e ademáis para cada un dos empregados queremos coñecer o seu nome e apelidos (que serán obligatorios), o seu NSS (constará de 12 díxitos) e o cargo que ocupan na sucursal (que pode ser “Director”, “Interventor” e “Outros”). | ||
| + | * O formato do código será o seguinte: | ||
| + | :* Como moito terá 6 caracteres | ||
| + | :* Comenzará pola letra E seguida deuhna vogal en maiúsculas. | ||
| + | :* A continuación poden vir: dous número do 3 ao 6, ou o número 9. | ||
| + | :* Termina con duos ou tres letras en minúscula. | ||
| + | * No caso de non coñecer o cargo que ocupa unha persona, este debe tomar o valor nulo. | ||
| + | * Debes crear como mínimo dúas sucursais coa información correspondente. | ||
| + | |||
| + | '''NOTA'''. Valorarase o uso de diferentes tipos de datos, a reutilización de tipos e calquer outra característica propia dos XML Schemas. | ||
| + | |||
| + | = Solución = | ||
<syntaxhighlight lang="XML> | <syntaxhighlight lang="XML> | ||
Revisión del 19:38 18 ago 2022
Esquema XML do Bánco Simpático Galego
Crea un esquema XML que valide o fichero XML creado no exercicio anterior.
Inclúense a continuación as especificacións que tiñamos para a creación do fichero XML e alguhna máis que deben ser consideradas para a realización deste exercicio.
- O banco consta de sucursais e de empregados. Para coñecer os empregados que traballan nunha sucursal debense utilizar claves.
- O banco ten o código 4444, e tamén queremos coñecer o seu nome completo, abreviatura, nome e apelidos do seu presidente, data de creación que debe ter 3 atributos: día, mes y año, e información das sucursais das que consta.
- Cada sucursal ten un código de catro díxitos e unha superficie que terá un atributo unidade que tomará sempre coma valor “m2”.
- Para cada sucursal queremos coñecer o personal do que consta. Os empregados identificaranse cun código, e ademáis para cada un dos empregados queremos coñecer o seu nome e apelidos (que serán obligatorios), o seu NSS (constará de 12 díxitos) e o cargo que ocupan na sucursal (que pode ser “Director”, “Interventor” e “Outros”).
- O formato do código será o seguinte:
- Como moito terá 6 caracteres
- Comenzará pola letra E seguida deuhna vogal en maiúsculas.
- A continuación poden vir: dous número do 3 ao 6, ou o número 9.
- Termina con duos ou tres letras en minúscula.
- No caso de non coñecer o cargo que ocupa unha persona, este debe tomar o valor nulo.
- Debes crear como mínimo dúas sucursais coa información correspondente.
NOTA. Valorarase o uso de diferentes tipos de datos, a reutilización de tipos e calquer outra característica propia dos XML Schemas.
Solución
XSD – banco.xsd
<?xml version="1.0" encoding="utf-8"?>
<xs:schema
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:wmh="http://www.wmhelp.com/2003/eGenerator" elementFormDefault="qualified">
<xs:group name="nomeCompleto">
<xs:sequence>
<xs:element name="nome" type="nomeCorto"/>
<xs:element name="apelido1" type="nomeCorto"/>
<xs:element name="apelido2" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:group>
<xs:element name="banco">
<xs:complexType>
<xs:sequence>
<xs:element name="nome" type="nomeLongo"/>
<xs:element ref="presidente"/>
<xs:element ref="dataCreación"/>
<xs:element ref="sucursais"/>
<xs:element ref="empregados"/>
</xs:sequence>
<xs:attribute name="codigo" type="tipoCodigo" fixed="4444"/>
<xs:attribute name="abreviatura" type="xs:string"/>
</xs:complexType>
<xs:key name="sucursal">
<xs:selector xpath="sucursais/sucursal"/>
<xs:field xpath="@codigo"/>
</xs:key>
<xs:keyref name="departamento" refer="sucursal">
<xs:selector xpath="empregados/empregado"/>
<xs:field xpath="sucursal"/>
</xs:keyref>
</xs:element>
<xs:element name="presidente">
<xs:complexType>
<xs:sequence>
<xs:group ref="nomeCompleto"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="dataCreación">
<xs:complexType>
<xs:attribute name="día" type="xs:string" use="required"/>
<xs:attribute name="mes" type="xs:string" use="required"/>
<xs:attribute name="ano" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="sucursais">
<xs:complexType>
<xs:sequence>
<xs:element ref="sucursal" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="sucursal">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="superficie"/>
</xs:choice>
<xs:attribute name="codigo" type="tipoCodigo"/>
</xs:complexType>
</xs:element>
<xs:element name="superficie">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
UD3-PR.02 – XSD solución LMSXI
3
<xs:attribute name="unidade" type="xs:string" fixed="m2"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="empregados">
<xs:complexType>
<xs:sequence>
<xs:element ref="empregado" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="empregado">
<xs:complexType>
<xs:sequence>
<xs:group ref="nomeCompleto"/>
<xs:element name="sucursal" type="xs:string"/>
<xs:element name="cargo" type="tipoCargo" nillable="true"/>
</xs:sequence>
<xs:attribute name="codigo" type="tipoCodigoEmpregado" use="required"/>
<xs:attribute name="NSS" type="tipoNSS" use="required"/>
</xs:complexType>
</xs:element>
<xs:simpleType name="tipoCodigo">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9][0-9][0-9][0-9]"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="nomeCorto">
<xs:restriction base="xs:string">
<xs:maxLength value="30"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="nomeLongo">
<xs:restriction base="xs:string">
<xs:maxLength value="150"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="tipoNSS">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{12}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="tipoCodigoEmpregado">
<xs:restriction base="xs:string">
<xs:maxLength value="6"/>
<xs:pattern value="E[AEIOU]([3-6][3-6]|9)[a-z]{2,3}"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="tipoCargo">
<xs:restriction base="xs:string">
<xs:enumeration value="Director"/>
<xs:enumeration value="Interventor"/>
<xs:enumeration value="outros"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>