Solución a Esquema XML do Bánco Simpático Galego
Revisión del 19:36 18 ago 2022 de Joselv (discusión | contribuciones) (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…»)
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>