SlideShare une entreprise Scribd logo
1  sur  5
Télécharger pour lire hors ligne
Ejercicio - Personal de departamentos | Tutorial de XSD - XML Schema | Abrirllave.com - 1
EJERCICIO RESUELTO - Personal de departamentos (XSD - XML Schema Definition)
Si para representar la siguiente información ficticia:
INFORMACIÓN DEL PERSONAL DE LOS DEPARTAMENTOS A FECHA 20-10-2013
NOMBRE: Navarra 4 Internet NÚMERO DE TRABAJADORES: 6
MULTINACIONAL: NO MONEDA: Euro SECTOR: Tecnología
CÓDIGO DEPARTAMENTO NOMBRE Y APELLIDOS BAJA SALARIO USUARIO CLAVE
ADMIN Administración Ana Sanz Ruiz (Jefe) NO 4700.58 anasan 3%abZKi6
Juan Gil Rus (Empleado) SI 2200.58
Lucas López Tapia (Empleado) NO 2215.65
INFOR Informática Isabel Gómez Pérez (Jefe) SI 5200.77 isabelgo 8$abcdHj
Oscar Lee Blesa (Empleado) NO 3109.26
MARKE Marketing Luis Mar Herreros (Jefe) NO 5111.09 invitado 2$xlzY#@
Se ha escrito el siguiente documento XML:
<?xml version="1.0" encoding="UTF-8"?>
<personal xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="personal.xsd"
fecha="2013-10-20" multinacional="false" moneda="Euro">
<datos-generales>
<nombre-empresa>Navarra 4 Internet</nombre-empresa>
<número-trabajadores>6</número-trabajadores>
<sector>
<tecnología />
</sector>
</datos-generales>
<datos-departamentos>
<departamento código="ADMIN" nombre-departamento="Administración">
<jefe>
<nombre-y-apellidos>Ana Sanz Ruiz</nombre-y-apellidos>
<salario>4700.58</salario>
<clave usuario="anasan">3%abZKi6</clave>
</jefe>
<empleado>
<nombre-y-apellidos>Juan Gil Rus</nombre-y-apellidos>
<baja />
<salario>2200.58</salario>
</empleado>
<empleado>
<nombre-y-apellidos>Lucas López Tapia</nombre-y-apellidos>
<salario>2215.65</salario>
</empleado>
</departamento>
<departamento código="INFOR" nombre-departamento="Informática">
<jefe>
<nombre-y-apellidos>Isabel Gómez Pérez</nombre-y-apellidos>
<baja />
<salario>5200.77</salario>
<clave usuario="isabelgo">8$abcdHj</clave>
</jefe>
<empleado>
<nombre-y-apellidos>Oscar Lee Blesa</nombre-y-apellidos>
<salario>3109.26</salario>
</empleado>
</departamento>
<departamento código="MARKE" nombre-departamento="Marketing">
<jefe>
<nombre-y-apellidos>Luis Mar Herreros</nombre-y-apellidos>
<salario>5111.09</salario>
<clave>2$xlzY#@</clave>
</jefe>
</departamento>
</datos-departamentos>
</personal>
Ejercicio - Personal de departamentos | Tutorial de XSD - XML Schema | Abrirllave.com - 2
Escribir el código del archivo “personal.xsd” que permita validarlo, teniendo en cuenta que:
 Todos los elementos y atributos son obligatorios, a menos que se indique lo contrario.
 Los elementos datos-generales y datos-departamentos pueden aparecer indistintamente uno antes que el otro.
 Excepto para los hijos directos de los elementos personal, datos-generales y departamento, siempre que sea
posible agrupar al menos dos elementos o dos atributos, se debe utilizar group o attributeGroup.
 Los datos generales de la empresa deben ser de un tipo definido por nosotros al que llamaremos
tipoDatosGenerales, donde hay que definir los elementos nombre-empresa, número-trabajadores (que debe ser
un valor entero mayor que 0) y sector. Estos elementos deben escribirse en dicho orden en el documento XML.
 El atributo fecha debe definirse del tipo que se considere más apropiado, de entre los proporcionados por XML
Schema.
 El atributo multinacional indica si la empresa lo es, o no, con un valor lógico.
 El atributo moneda debe indicarse que es un valor fijo. Pero, no es obligatorio.
 El elemento nombre-empresa y el elemento nombre-y-apellidos de los trabajadores, deben ser del mismo tipo, al
que llamaremos tipoTexto, y donde debe indicarse que los valores admitidos para dichos elementos pueden ser
cadenas de un mínimo de 1 carácter y un máximo de 40.
 Los posibles sectores son educación, finanzas o tecnología. De tal forma que, sólo uno de ellos debe escribirse en
el archivo XML mediante un elemento vacío, como en este caso se ha escrito <tecnología />.
 Se tiene que indicar que el código de cada departamento ha de ser único.
 Sin hacer uso pattern indicar que los posibles nombres de departamento son Administración, Informática,
Marketing o Recursos humanos, no permitiéndose otro valor. Para ello, se debe definir un tipo de dato llamado
tipoDepartamento, que debe poder ser utilizado por otros atributos o elementos.
 Empleado (en cada departamento puede haber de 0 a 3) debe ser de un tipo definido por nosotros al que
llamaremos tipoEmpleado, donde hay que definir los posibles valores que pueden tener los elementos nombre-y-
apellidos, baja y salario (que deberán escribirse en ese orden en el documento XML). Por otro lado, jefe
(obligatoriamente habrá 1 por departamento) ha de ser de otro tipo llamado tipoJefe, definido como una
extensión de tipoEmpleado añadiéndole el elemento clave.
 De cada departamento (pueden haber de 1 a ilimitados), primero debe escribirse el jefe y, después, los
empleados que hubiese.
 Para indicar si un trabajador está de baja, se debe utilizar un elemento vacío, que podrá aparecer (en el caso de
que sí esté de baja) o no aparecer (en el caso contrario).
 Sin hacer de uso pattern hay que indicar que el valor del salario debe ser un número decimal mayor que 1000,
pero no mayor que 9999. Además, dicho valor podrá contener 6 dígitos como máximo y, de ellos, sólo dos podrán
ser decimales.
 La clave debe ser de un tipo definido por nosotros al que llamaremos tipoClave, y donde debe indicarse, que los
valores admitidos por este tipo pueden ser cadenas de ocho caracteres donde el primero debe ser un dígito del 0
al 9; el segundo debe ser un carácter distinto a un dígito; después, pueden aparecer de 2 a 4 letras de la “a” a la
“z”; posteriormente, podrá aparecer, o no, una letra de la “A” a la “Z”; a continuación, tendrá que estar una de
estas tres letras mayúsculas (K, Y, H); y finalmente, podrá aparecer de 0 a 3 caracteres cualesquiera.
 Usuario no es un atributo obligatorio. Ahora bien, si se escribe, debe estar formado por un mínimo de 6
caracteres y un máximo de 8 (hay que escribir esta restricción sin hacer uso de pattern). Por otro lado, se debe
indicar “invitado” como su valor por defecto.
 No hay que definir en el schema más tipos de datos que los indicados en el ejercicio: tipoDatosGenerales,
tipoDepartamento, tipoEmpleado, tipoJefe, tipoTexto y tipoClave.
Ejercicio - Personal de departamentos | Tutorial de XSD - XML Schema | Abrirllave.com - 3
Solución:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="personal">
<xs:complexType>
<xs:all>
<xs:element name="datos-generales" type="tipoDatosGenerales"/>
<xs:element name="datos-departamentos">
<xs:complexType>
<xs:sequence>
<xs:element name="departamento" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="jefe" type="tipoJefe"/>
<xs:element name="empleado" type="tipoEmpleado"
minOccurs="0" maxOccurs="3"/>
</xs:sequence>
<xs:attributeGroup ref="atributosDepartamento"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:all>
<xs:attributeGroup ref="atributosPersonal"/>
</xs:complexType>
</xs:element>
<xs:complexType name="tipoDatosGenerales">
<xs:sequence>
<xs:element name="nombre-empresa" type="tipoTexto"/>
<xs:element name="número-trabajadores" type="xs:positiveInteger"/>
<xs:element name="sector">
<xs:complexType>
<xs:sequence>
<xs:group ref="sectores"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
Ejercicio - Personal de departamentos | Tutorial de XSD - XML Schema | Abrirllave.com - 4
<xs:complexType name="tipoJefe">
<xs:complexContent>
<xs:extension base="tipoEmpleado">
<xs:sequence>
<xs:element name="clave">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="tipoClave">
<xs:attribute name="usuario" default="invitado">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="6"/>
<xs:maxLength value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
<xs:complexType name="tipoEmpleado">
<xs:sequence>
<xs:group ref="datosEmpleado"/>
</xs:sequence>
</xs:complexType>
<xs:group name="datosEmpleado">
<xs:sequence>
<xs:element name="nombre-y-apellidos" type="tipoTexto"/>
<xs:element name="baja" minOccurs="0"/>
<xs:element name="salario">
<xs:simpleType>
<xs:restriction base="xs:decimal">
<xs:minExclusive value="1000"/>
<xs:maxInclusive value="9999"/>
<xs:totalDigits value="6"/>
<xs:fractionDigits value="2"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:group>
<xs:group name="sectores">
<xs:choice>
<xs:element name="educación"/>
<xs:element name="finanzas"/>
<xs:element name="tecnología"/>
</xs:choice>
</xs:group>
<xs:attributeGroup name="atributosPersonal">
<xs:attribute name="fecha" type="xs:date" use="required"/>
<xs:attribute name="multinacional" type="xs:boolean" use="required"/>
<xs:attribute name="moneda" fixed="Euro"/>
</xs:attributeGroup>
Ejercicio - Personal de departamentos | Tutorial de XSD - XML Schema | Abrirllave.com - 5
<xs:attributeGroup name="atributosDepartamento">
<xs:attribute name="código" type="xs:ID" use="required"/>
<xs:attribute name="nombre-departamento" type="tipoDepartamento"
use="required"/>
</xs:attributeGroup>
<xs:simpleType name="tipoDepartamento">
<xs:restriction base="xs:string">
<xs:enumeration value="Administración"/>
<xs:enumeration value="Informática"/>
<xs:enumeration value="Marketing"/>
<xs:enumeration value="Recursos humanos"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="tipoTexto">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
<xs:maxLength value="40"/>
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="tipoClave">
<xs:restriction base="xs:string">
<xs:pattern value="dD[a-z]{2,4}[A-Z]?[KYH].{0,3}"/>
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
Véase más ejercicios resueltos de XSD en www.abrirllave.com/xsd/ejercicios-resueltos.php con Licencia Creative Commons (CC BY-SA 4.0).

Contenu connexe

Tendances

Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)
Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)
Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)Sergio Sanchez
 
Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)michell_quitian
 
SQL Pattern Matching – should I start using it?
SQL Pattern Matching – should I start using it?SQL Pattern Matching – should I start using it?
SQL Pattern Matching – should I start using it?Andrej Pashchenko
 
Busqueda Binaria
Busqueda BinariaBusqueda Binaria
Busqueda BinariaITCV
 
Cuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamientoCuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamientoLutzo Guzmán
 
Normalizacion de bases de datos
Normalizacion de bases de datosNormalizacion de bases de datos
Normalizacion de bases de datosCaro_Noirgean
 
Tipos de usuarios de base de datos diapositivas
Tipos de usuarios de base de datos diapositivasTipos de usuarios de base de datos diapositivas
Tipos de usuarios de base de datos diapositivasgrupo niche ortega
 
Importancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datosImportancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datospepelebu1313
 
Examen De Estructura De Datos
Examen De Estructura De DatosExamen De Estructura De Datos
Examen De Estructura De Datosvanessa peñafiel
 
Estructura de Datos - Unidad III Estructuras Lineales
Estructura de Datos - Unidad III Estructuras LinealesEstructura de Datos - Unidad III Estructuras Lineales
Estructura de Datos - Unidad III Estructuras LinealesJosé Antonio Sandoval Acosta
 
HASH Organizacion de Archivos en Bases de Datos
HASH Organizacion de Archivos en Bases de DatosHASH Organizacion de Archivos en Bases de Datos
HASH Organizacion de Archivos en Bases de DatosAngel Feijo
 

Tendances (20)

Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)
Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)
Unidad 6 Lenguaje Sql 4 (Consultas Dml Avanzado)
 
Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)Normalización de la base de datos (3 formas normales)
Normalización de la base de datos (3 formas normales)
 
Normalizacion
NormalizacionNormalizacion
Normalizacion
 
Xml dtd
Xml dtdXml dtd
Xml dtd
 
SQL Pattern Matching – should I start using it?
SQL Pattern Matching – should I start using it?SQL Pattern Matching – should I start using it?
SQL Pattern Matching – should I start using it?
 
Programa de Cola Estática
Programa de Cola EstáticaPrograma de Cola Estática
Programa de Cola Estática
 
Fundamentos de BD - Unidad 6 lenguaje sql
Fundamentos de BD - Unidad 6 lenguaje sqlFundamentos de BD - Unidad 6 lenguaje sql
Fundamentos de BD - Unidad 6 lenguaje sql
 
Busqueda Binaria
Busqueda BinariaBusqueda Binaria
Busqueda Binaria
 
Cuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamientoCuadro comparativo algoritmos de ordenamiento
Cuadro comparativo algoritmos de ordenamiento
 
Introducción a XML Schema
Introducción a XML SchemaIntroducción a XML Schema
Introducción a XML Schema
 
Normalizacion de bases de datos
Normalizacion de bases de datosNormalizacion de bases de datos
Normalizacion de bases de datos
 
Ejercicio parciall 2
Ejercicio parciall 2Ejercicio parciall 2
Ejercicio parciall 2
 
Access propiedades
Access  propiedadesAccess  propiedades
Access propiedades
 
Tipos de usuarios de base de datos diapositivas
Tipos de usuarios de base de datos diapositivasTipos de usuarios de base de datos diapositivas
Tipos de usuarios de base de datos diapositivas
 
Importancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datosImportancia de la implementación de las listas para la estructura de datos
Importancia de la implementación de las listas para la estructura de datos
 
Tipos de datos Java
Tipos de datos JavaTipos de datos Java
Tipos de datos Java
 
Examen De Estructura De Datos
Examen De Estructura De DatosExamen De Estructura De Datos
Examen De Estructura De Datos
 
Historia de la Programacion funcional
Historia de la Programacion funcionalHistoria de la Programacion funcional
Historia de la Programacion funcional
 
Estructura de Datos - Unidad III Estructuras Lineales
Estructura de Datos - Unidad III Estructuras LinealesEstructura de Datos - Unidad III Estructuras Lineales
Estructura de Datos - Unidad III Estructuras Lineales
 
HASH Organizacion de Archivos en Bases de Datos
HASH Organizacion de Archivos en Bases de DatosHASH Organizacion de Archivos en Bases de Datos
HASH Organizacion de Archivos en Bases de Datos
 

Similaire à Personal departamentos XSD

Similaire à Personal departamentos XSD (20)

Videoconferencia
VideoconferenciaVideoconferencia
Videoconferencia
 
F unciones exel
F unciones exelF unciones exel
F unciones exel
 
EXCEL ESTADISTICA
EXCEL ESTADISTICAEXCEL ESTADISTICA
EXCEL ESTADISTICA
 
Manual de PSeInt
Manual de PSeIntManual de PSeInt
Manual de PSeInt
 
Ejerciciocompletocolegio 100508161155-phpapp02
Ejerciciocompletocolegio 100508161155-phpapp02Ejerciciocompletocolegio 100508161155-phpapp02
Ejerciciocompletocolegio 100508161155-phpapp02
 
Excel pestañas terminada
Excel pestañas terminadaExcel pestañas terminada
Excel pestañas terminada
 
Bases de datos colegio
Bases de datos colegioBases de datos colegio
Bases de datos colegio
 
Ambiente excel laura eugenia martinez garcia
Ambiente excel laura eugenia martinez garciaAmbiente excel laura eugenia martinez garcia
Ambiente excel laura eugenia martinez garcia
 
Funsion si; sumar.si; promedio.si; contar.si
Funsion si; sumar.si; promedio.si; contar.siFunsion si; sumar.si; promedio.si; contar.si
Funsion si; sumar.si; promedio.si; contar.si
 
Excel martinez laura
Excel martinez lauraExcel martinez laura
Excel martinez laura
 
3ra actividad 4to periodo 7
3ra actividad 4to periodo 73ra actividad 4to periodo 7
3ra actividad 4to periodo 7
 
Funciones de estadisticas
Funciones de estadisticasFunciones de estadisticas
Funciones de estadisticas
 
Xml
XmlXml
Xml
 
Colegio 11 2
Colegio 11 2Colegio 11 2
Colegio 11 2
 
Trabajo Práctico Access
Trabajo Práctico AccessTrabajo Práctico Access
Trabajo Práctico Access
 
ACCESS 2010 1º PARTE (1).pptx
ACCESS 2010 1º PARTE (1).pptxACCESS 2010 1º PARTE (1).pptx
ACCESS 2010 1º PARTE (1).pptx
 
EL AMBIENTE DE EXCELL
EL AMBIENTE DE EXCELLEL AMBIENTE DE EXCELL
EL AMBIENTE DE EXCELL
 
Ada # 1 :)
Ada # 1 :)Ada # 1 :)
Ada # 1 :)
 
Formularios en HTML5
Formularios en HTML5Formularios en HTML5
Formularios en HTML5
 
Funciones más utilizadas de Excel
Funciones más utilizadas de ExcelFunciones más utilizadas de Excel
Funciones más utilizadas de Excel
 

Plus de Abrirllave

Chuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantesChuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantesAbrirllave
 
Taller de iniciación al SEO y Desarrollo Web
Taller de iniciación al SEO y Desarrollo WebTaller de iniciación al SEO y Desarrollo Web
Taller de iniciación al SEO y Desarrollo WebAbrirllave
 
Libro de Algoritmos
Libro de AlgoritmosLibro de Algoritmos
Libro de AlgoritmosAbrirllave
 
Llamadas a subalgoritmos
Llamadas a subalgoritmosLlamadas a subalgoritmos
Llamadas a subalgoritmosAbrirllave
 
Instrucciones de control de salto
Instrucciones de control de saltoInstrucciones de control de salto
Instrucciones de control de saltoAbrirllave
 
Instrucciones de control repetitivas
Instrucciones de control repetitivasInstrucciones de control repetitivas
Instrucciones de control repetitivasAbrirllave
 
Instrucciones de control alternativas
Instrucciones de control alternativasInstrucciones de control alternativas
Instrucciones de control alternativasAbrirllave
 
Ejercicio - Intercambio de los valores de dos variables
Ejercicio - Intercambio de los valores de dos variablesEjercicio - Intercambio de los valores de dos variables
Ejercicio - Intercambio de los valores de dos variablesAbrirllave
 
Ejercicio - Nota media de tres exámenes
Ejercicio - Nota media de tres exámenesEjercicio - Nota media de tres exámenes
Ejercicio - Nota media de tres exámenesAbrirllave
 
Ejercicio - Suma y multiplicación de dos números
Ejercicio - Suma y multiplicación de dos númerosEjercicio - Suma y multiplicación de dos números
Ejercicio - Suma y multiplicación de dos númerosAbrirllave
 
Ejercicio - Volumen de un cubo
Ejercicio - Volumen de un cuboEjercicio - Volumen de un cubo
Ejercicio - Volumen de un cuboAbrirllave
 
Ejercicio - De pesetas a euros
Ejercicio - De pesetas a eurosEjercicio - De pesetas a euros
Ejercicio - De pesetas a eurosAbrirllave
 
Ejercicio - Saludo
Ejercicio - SaludoEjercicio - Saludo
Ejercicio - SaludoAbrirllave
 
Estructura de un algoritmo en pseudocódigo
Estructura de un algoritmo en pseudocódigoEstructura de un algoritmo en pseudocódigo
Estructura de un algoritmo en pseudocódigoAbrirllave
 
Instrucciones primitivas en pseudocódigo
Instrucciones primitivas en pseudocódigoInstrucciones primitivas en pseudocódigo
Instrucciones primitivas en pseudocódigoAbrirllave
 
Operadores y expresiones en pseudocódigo
Operadores y expresiones en pseudocódigoOperadores y expresiones en pseudocódigo
Operadores y expresiones en pseudocódigoAbrirllave
 
Tipos de datos definidos por el programador en pseudocódigo
Tipos de datos definidos por el programador en pseudocódigoTipos de datos definidos por el programador en pseudocódigo
Tipos de datos definidos por el programador en pseudocódigoAbrirllave
 
Identificadores variables y constates en pseudocódigo
Identificadores variables y constates en pseudocódigoIdentificadores variables y constates en pseudocódigo
Identificadores variables y constates en pseudocódigoAbrirllave
 

Plus de Abrirllave (20)

Chuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantesChuleta de lenguaje C para principiantes
Chuleta de lenguaje C para principiantes
 
Taller de iniciación al SEO y Desarrollo Web
Taller de iniciación al SEO y Desarrollo WebTaller de iniciación al SEO y Desarrollo Web
Taller de iniciación al SEO y Desarrollo Web
 
Libro de Algoritmos
Libro de AlgoritmosLibro de Algoritmos
Libro de Algoritmos
 
Llamadas a subalgoritmos
Llamadas a subalgoritmosLlamadas a subalgoritmos
Llamadas a subalgoritmos
 
Instrucciones de control de salto
Instrucciones de control de saltoInstrucciones de control de salto
Instrucciones de control de salto
 
Instrucciones de control repetitivas
Instrucciones de control repetitivasInstrucciones de control repetitivas
Instrucciones de control repetitivas
 
Instrucciones de control alternativas
Instrucciones de control alternativasInstrucciones de control alternativas
Instrucciones de control alternativas
 
Apuntes de SEO
Apuntes de SEOApuntes de SEO
Apuntes de SEO
 
Ordinogramas
OrdinogramasOrdinogramas
Ordinogramas
 
Ejercicio - Intercambio de los valores de dos variables
Ejercicio - Intercambio de los valores de dos variablesEjercicio - Intercambio de los valores de dos variables
Ejercicio - Intercambio de los valores de dos variables
 
Ejercicio - Nota media de tres exámenes
Ejercicio - Nota media de tres exámenesEjercicio - Nota media de tres exámenes
Ejercicio - Nota media de tres exámenes
 
Ejercicio - Suma y multiplicación de dos números
Ejercicio - Suma y multiplicación de dos númerosEjercicio - Suma y multiplicación de dos números
Ejercicio - Suma y multiplicación de dos números
 
Ejercicio - Volumen de un cubo
Ejercicio - Volumen de un cuboEjercicio - Volumen de un cubo
Ejercicio - Volumen de un cubo
 
Ejercicio - De pesetas a euros
Ejercicio - De pesetas a eurosEjercicio - De pesetas a euros
Ejercicio - De pesetas a euros
 
Ejercicio - Saludo
Ejercicio - SaludoEjercicio - Saludo
Ejercicio - Saludo
 
Estructura de un algoritmo en pseudocódigo
Estructura de un algoritmo en pseudocódigoEstructura de un algoritmo en pseudocódigo
Estructura de un algoritmo en pseudocódigo
 
Instrucciones primitivas en pseudocódigo
Instrucciones primitivas en pseudocódigoInstrucciones primitivas en pseudocódigo
Instrucciones primitivas en pseudocódigo
 
Operadores y expresiones en pseudocódigo
Operadores y expresiones en pseudocódigoOperadores y expresiones en pseudocódigo
Operadores y expresiones en pseudocódigo
 
Tipos de datos definidos por el programador en pseudocódigo
Tipos de datos definidos por el programador en pseudocódigoTipos de datos definidos por el programador en pseudocódigo
Tipos de datos definidos por el programador en pseudocódigo
 
Identificadores variables y constates en pseudocódigo
Identificadores variables y constates en pseudocódigoIdentificadores variables y constates en pseudocódigo
Identificadores variables y constates en pseudocódigo
 

Dernier

Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosAlbanyMartinez7
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxAlexander López
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docxobandopaula444
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersIván López Martín
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfFernandoOblitasVivan
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptchaverriemily794
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1ivanapaterninar
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzzAlexandergo5
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúCEFERINO DELGADO FLORES
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfjeondanny1997
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificialcynserafini89
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfedepmariaperez
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx241523733
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesEdomar AR
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxtjcesar1
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOnarvaezisabella21
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxGESTECPERUSAC
 

Dernier (20)

Documentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos JuridicosDocumentacion Electrónica en Actos Juridicos
Documentacion Electrónica en Actos Juridicos
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptxLAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
LAS_TIC_COMO_HERRAMIENTAS_EN_LA_INVESTIGACIÓN.pptx
 
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docxTALLER DE ANALISIS SOLUCION  PART 2 (1)-1.docx
TALLER DE ANALISIS SOLUCION PART 2 (1)-1.docx
 
CommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 TestcontainersCommitConf 2024 - Spring Boot <3 Testcontainers
CommitConf 2024 - Spring Boot <3 Testcontainers
 
certificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdfcertificado de oracle academy cetrificado.pdf
certificado de oracle academy cetrificado.pdf
 
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).pptLUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
LUXOMETRO EN SALUD OCUPACIONAL(FINAL).ppt
 
Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1Guía de Registro slideshare paso a paso 1
Guía de Registro slideshare paso a paso 1
 
tarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzztarea de exposicion de senati zzzzzzzzzz
tarea de exposicion de senati zzzzzzzzzz
 
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del PerúRed Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
Red Dorsal Nacional de Fibra Óptica y Redes Regionales del Perú
 
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdfLa Electricidad Y La Electrónica Trabajo Tecnología.pdf
La Electricidad Y La Electrónica Trabajo Tecnología.pdf
 
Presentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia ArtificialPresentación sobre la Inteligencia Artificial
Presentación sobre la Inteligencia Artificial
 
Trabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdfTrabajo de tecnología excel avanzado.pdf
Trabajo de tecnología excel avanzado.pdf
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
GonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptxGonzalezGonzalez_Karina_M1S3AI6... .pptx
GonzalezGonzalez_Karina_M1S3AI6... .pptx
 
Los Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, AplicacionesLos Microcontroladores PIC, Aplicaciones
Los Microcontroladores PIC, Aplicaciones
 
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptxModelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
Modelo de Presentacion Feria Robotica Educativa 2024 - Versión3.pptx
 
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPOAREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
AREA TECNOLOGIA E INFORMATICA TRABAJO EN EQUIPO
 
Tecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptxTecnologias Starlink para el mundo tec.pptx
Tecnologias Starlink para el mundo tec.pptx
 

Personal departamentos XSD

  • 1. Ejercicio - Personal de departamentos | Tutorial de XSD - XML Schema | Abrirllave.com - 1 EJERCICIO RESUELTO - Personal de departamentos (XSD - XML Schema Definition) Si para representar la siguiente información ficticia: INFORMACIÓN DEL PERSONAL DE LOS DEPARTAMENTOS A FECHA 20-10-2013 NOMBRE: Navarra 4 Internet NÚMERO DE TRABAJADORES: 6 MULTINACIONAL: NO MONEDA: Euro SECTOR: Tecnología CÓDIGO DEPARTAMENTO NOMBRE Y APELLIDOS BAJA SALARIO USUARIO CLAVE ADMIN Administración Ana Sanz Ruiz (Jefe) NO 4700.58 anasan 3%abZKi6 Juan Gil Rus (Empleado) SI 2200.58 Lucas López Tapia (Empleado) NO 2215.65 INFOR Informática Isabel Gómez Pérez (Jefe) SI 5200.77 isabelgo 8$abcdHj Oscar Lee Blesa (Empleado) NO 3109.26 MARKE Marketing Luis Mar Herreros (Jefe) NO 5111.09 invitado 2$xlzY#@ Se ha escrito el siguiente documento XML: <?xml version="1.0" encoding="UTF-8"?> <personal xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="personal.xsd" fecha="2013-10-20" multinacional="false" moneda="Euro"> <datos-generales> <nombre-empresa>Navarra 4 Internet</nombre-empresa> <número-trabajadores>6</número-trabajadores> <sector> <tecnología /> </sector> </datos-generales> <datos-departamentos> <departamento código="ADMIN" nombre-departamento="Administración"> <jefe> <nombre-y-apellidos>Ana Sanz Ruiz</nombre-y-apellidos> <salario>4700.58</salario> <clave usuario="anasan">3%abZKi6</clave> </jefe> <empleado> <nombre-y-apellidos>Juan Gil Rus</nombre-y-apellidos> <baja /> <salario>2200.58</salario> </empleado> <empleado> <nombre-y-apellidos>Lucas López Tapia</nombre-y-apellidos> <salario>2215.65</salario> </empleado> </departamento> <departamento código="INFOR" nombre-departamento="Informática"> <jefe> <nombre-y-apellidos>Isabel Gómez Pérez</nombre-y-apellidos> <baja /> <salario>5200.77</salario> <clave usuario="isabelgo">8$abcdHj</clave> </jefe> <empleado> <nombre-y-apellidos>Oscar Lee Blesa</nombre-y-apellidos> <salario>3109.26</salario> </empleado> </departamento> <departamento código="MARKE" nombre-departamento="Marketing"> <jefe> <nombre-y-apellidos>Luis Mar Herreros</nombre-y-apellidos> <salario>5111.09</salario> <clave>2$xlzY#@</clave> </jefe> </departamento> </datos-departamentos> </personal>
  • 2. Ejercicio - Personal de departamentos | Tutorial de XSD - XML Schema | Abrirllave.com - 2 Escribir el código del archivo “personal.xsd” que permita validarlo, teniendo en cuenta que:  Todos los elementos y atributos son obligatorios, a menos que se indique lo contrario.  Los elementos datos-generales y datos-departamentos pueden aparecer indistintamente uno antes que el otro.  Excepto para los hijos directos de los elementos personal, datos-generales y departamento, siempre que sea posible agrupar al menos dos elementos o dos atributos, se debe utilizar group o attributeGroup.  Los datos generales de la empresa deben ser de un tipo definido por nosotros al que llamaremos tipoDatosGenerales, donde hay que definir los elementos nombre-empresa, número-trabajadores (que debe ser un valor entero mayor que 0) y sector. Estos elementos deben escribirse en dicho orden en el documento XML.  El atributo fecha debe definirse del tipo que se considere más apropiado, de entre los proporcionados por XML Schema.  El atributo multinacional indica si la empresa lo es, o no, con un valor lógico.  El atributo moneda debe indicarse que es un valor fijo. Pero, no es obligatorio.  El elemento nombre-empresa y el elemento nombre-y-apellidos de los trabajadores, deben ser del mismo tipo, al que llamaremos tipoTexto, y donde debe indicarse que los valores admitidos para dichos elementos pueden ser cadenas de un mínimo de 1 carácter y un máximo de 40.  Los posibles sectores son educación, finanzas o tecnología. De tal forma que, sólo uno de ellos debe escribirse en el archivo XML mediante un elemento vacío, como en este caso se ha escrito <tecnología />.  Se tiene que indicar que el código de cada departamento ha de ser único.  Sin hacer uso pattern indicar que los posibles nombres de departamento son Administración, Informática, Marketing o Recursos humanos, no permitiéndose otro valor. Para ello, se debe definir un tipo de dato llamado tipoDepartamento, que debe poder ser utilizado por otros atributos o elementos.  Empleado (en cada departamento puede haber de 0 a 3) debe ser de un tipo definido por nosotros al que llamaremos tipoEmpleado, donde hay que definir los posibles valores que pueden tener los elementos nombre-y- apellidos, baja y salario (que deberán escribirse en ese orden en el documento XML). Por otro lado, jefe (obligatoriamente habrá 1 por departamento) ha de ser de otro tipo llamado tipoJefe, definido como una extensión de tipoEmpleado añadiéndole el elemento clave.  De cada departamento (pueden haber de 1 a ilimitados), primero debe escribirse el jefe y, después, los empleados que hubiese.  Para indicar si un trabajador está de baja, se debe utilizar un elemento vacío, que podrá aparecer (en el caso de que sí esté de baja) o no aparecer (en el caso contrario).  Sin hacer de uso pattern hay que indicar que el valor del salario debe ser un número decimal mayor que 1000, pero no mayor que 9999. Además, dicho valor podrá contener 6 dígitos como máximo y, de ellos, sólo dos podrán ser decimales.  La clave debe ser de un tipo definido por nosotros al que llamaremos tipoClave, y donde debe indicarse, que los valores admitidos por este tipo pueden ser cadenas de ocho caracteres donde el primero debe ser un dígito del 0 al 9; el segundo debe ser un carácter distinto a un dígito; después, pueden aparecer de 2 a 4 letras de la “a” a la “z”; posteriormente, podrá aparecer, o no, una letra de la “A” a la “Z”; a continuación, tendrá que estar una de estas tres letras mayúsculas (K, Y, H); y finalmente, podrá aparecer de 0 a 3 caracteres cualesquiera.  Usuario no es un atributo obligatorio. Ahora bien, si se escribe, debe estar formado por un mínimo de 6 caracteres y un máximo de 8 (hay que escribir esta restricción sin hacer uso de pattern). Por otro lado, se debe indicar “invitado” como su valor por defecto.  No hay que definir en el schema más tipos de datos que los indicados en el ejercicio: tipoDatosGenerales, tipoDepartamento, tipoEmpleado, tipoJefe, tipoTexto y tipoClave.
  • 3. Ejercicio - Personal de departamentos | Tutorial de XSD - XML Schema | Abrirllave.com - 3 Solución: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="personal"> <xs:complexType> <xs:all> <xs:element name="datos-generales" type="tipoDatosGenerales"/> <xs:element name="datos-departamentos"> <xs:complexType> <xs:sequence> <xs:element name="departamento" maxOccurs="unbounded"> <xs:complexType> <xs:sequence> <xs:element name="jefe" type="tipoJefe"/> <xs:element name="empleado" type="tipoEmpleado" minOccurs="0" maxOccurs="3"/> </xs:sequence> <xs:attributeGroup ref="atributosDepartamento"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element> </xs:all> <xs:attributeGroup ref="atributosPersonal"/> </xs:complexType> </xs:element> <xs:complexType name="tipoDatosGenerales"> <xs:sequence> <xs:element name="nombre-empresa" type="tipoTexto"/> <xs:element name="número-trabajadores" type="xs:positiveInteger"/> <xs:element name="sector"> <xs:complexType> <xs:sequence> <xs:group ref="sectores"/> </xs:sequence> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType>
  • 4. Ejercicio - Personal de departamentos | Tutorial de XSD - XML Schema | Abrirllave.com - 4 <xs:complexType name="tipoJefe"> <xs:complexContent> <xs:extension base="tipoEmpleado"> <xs:sequence> <xs:element name="clave"> <xs:complexType> <xs:simpleContent> <xs:extension base="tipoClave"> <xs:attribute name="usuario" default="invitado"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:minLength value="6"/> <xs:maxLength value="8"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:extension> </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="tipoEmpleado"> <xs:sequence> <xs:group ref="datosEmpleado"/> </xs:sequence> </xs:complexType> <xs:group name="datosEmpleado"> <xs:sequence> <xs:element name="nombre-y-apellidos" type="tipoTexto"/> <xs:element name="baja" minOccurs="0"/> <xs:element name="salario"> <xs:simpleType> <xs:restriction base="xs:decimal"> <xs:minExclusive value="1000"/> <xs:maxInclusive value="9999"/> <xs:totalDigits value="6"/> <xs:fractionDigits value="2"/> </xs:restriction> </xs:simpleType> </xs:element> </xs:sequence> </xs:group> <xs:group name="sectores"> <xs:choice> <xs:element name="educación"/> <xs:element name="finanzas"/> <xs:element name="tecnología"/> </xs:choice> </xs:group> <xs:attributeGroup name="atributosPersonal"> <xs:attribute name="fecha" type="xs:date" use="required"/> <xs:attribute name="multinacional" type="xs:boolean" use="required"/> <xs:attribute name="moneda" fixed="Euro"/> </xs:attributeGroup>
  • 5. Ejercicio - Personal de departamentos | Tutorial de XSD - XML Schema | Abrirllave.com - 5 <xs:attributeGroup name="atributosDepartamento"> <xs:attribute name="código" type="xs:ID" use="required"/> <xs:attribute name="nombre-departamento" type="tipoDepartamento" use="required"/> </xs:attributeGroup> <xs:simpleType name="tipoDepartamento"> <xs:restriction base="xs:string"> <xs:enumeration value="Administración"/> <xs:enumeration value="Informática"/> <xs:enumeration value="Marketing"/> <xs:enumeration value="Recursos humanos"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="tipoTexto"> <xs:restriction base="xs:string"> <xs:minLength value="1"/> <xs:maxLength value="40"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="tipoClave"> <xs:restriction base="xs:string"> <xs:pattern value="dD[a-z]{2,4}[A-Z]?[KYH].{0,3}"/> <xs:length value="8"/> </xs:restriction> </xs:simpleType> </xs:schema> Véase más ejercicios resueltos de XSD en www.abrirllave.com/xsd/ejercicios-resueltos.php con Licencia Creative Commons (CC BY-SA 4.0).