domingo, 17 de agosto de 2014

Ejercicios XML, DTD Y SCHEMA

1. Construir el archivo xsd que valide el siguiente documento XML.
•                     Los tipos de datos han de ser los adecuados al tipo de información a almacenar
•                     No se permite el uso del atributo ref
•                     Debe incluir la posibilidad de que existiese un número ilimitado de elementos nota.
•                     Los atributos día y hora son opcionales y num es obligatorio
•                     Los elementos para, de, titulo y contenido pueden aparecer en cualquier orden.

<lista_de_notas>
<nota num="11" dia="2011-02-02" hora="10:10:10">
<para>José</para>
<de>Ana</de>
<titulo>Cita</titulo>
<contenido>Nos vemos el sábado a las 15:00</contenido>
</nota>
</lista_de_notas>

NOTAS.XML
<?xml version="1.0" encoding="UTF-8"?>
<lista_de_notas xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="nota.xsd">
  <nota num="11" dia="2011-02-02" hora="10:10:10">
    <para>José</para>
    <de>Ana</de>
    <titulo>Cita</titulo>
    <contenido>Nos vemos el sábado a las 15::00</contenido>
  </nota>
</lista_de_notas>
NOTAS.XSD
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="lista_de_notas">
      <xs:complexType>
          <xs:sequence>
         
                  <xs:element name="nota" maxOccurs="unbounded">
                      <xs:complexType>
                          <xs:all>
                         
                              <xs:element name="para" type="xs:string"/>
                              <xs:element name="de" type="xs:string"/>
                              <xs:element name="titulo" type="xs:string"/>
                              <xs:element name="contenido" type="xs:string"/>
                             
                          </xs:all>

                          <xs:attribute name="num" type="xs:integer" use="required"/>
                          <xs:attribute name="dia" type="xs:date"/>
                          <xs:attribute name="hora" type="xs:string"/>
                         
                      </xs:complexType>
                  </xs:element>
         
          </xs:sequence>
      </xs:complexType> 
  </xs:element>

</xs:schema>

2. Crea un DTD interno y otro externo asociado al siguiente documento XML de forma que sea válido. Comprobar la buena formación y la validez del documento en ambos casos. Se deben tener en cuenta las siguientes características:
•                     El número de artículo (n_art) es un valor único por artículo y es obligatorio.
•                     La cantidad del artículo puede no aparecer y su valor no puede contener caracteres especiales.
•                     La unidad de medida puede no aparecer, pero si lo hace debe tomar el valor "Sistema Internacional".
•                     Un artículo puede no tener ofertas o disponer de varias.
•                     El tipo de marca puede no aparecer y tomar los valores "nacional" o  "internacional".

<?xml version="1.0" encoding="UTF-8"?>
<supermercado>
<articulo n_art="articulo1" cantidad="300">
<descripcion>Yogurt</descripcion>
<marca tipo="nacional">Danone</marca>
<medida unidad="Sistema Internacional">1 Pack 4</medida>
<seccion>Lacteos</seccion>
</articulo>
<articulo n_art="articulo2">
<descripcion>Queso fresco</descripcion>
<marca tipo="nacional">Burgo de Arias</marca>
<medida>250 gr</medida>
<seccion>Lacteos</seccion>
<oferta>Lote descuento</oferta>
<perecedero>
<fabricacion>Febrero de 2014</fabricacion>
</perecedero>
</articulo>
</supermercado>

SUPERMERCADO.XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE supermercado SYSTEM "supermercado.dtd">
<supermercado>
  <articulo n_art="articulo1" cantidad="300">
        <descripcion>yogurt</descripcion>
        <marca tipo="nacional">Danone</marca>
        <medida unidad="Sistema Internacional">1 Pack 4</medida>
        <seccion>lacteos</seccion>
  </articulo>
 
  <articulo n_art="articulo2">
 
  <descripcion>Queso fresco</descripcion>
  <marca tipo="nacional">Burgo de Arias</marca>
  <medida>250 gr</medida>
  <seccion>Lacteos</seccion>
  <oferta>Lote descuento</oferta> 
  <perecedero>
      <fabricacion>Feberero de 2014</fabricacion>
  </perecedero>
 
  </articulo>
</supermercado>
SUPERMERCADO-DTD INTERNO.XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE supermercado [

<!ELEMENT supermercado (articulo+)>
<!ELEMENT articulo (descripcion, marca, medida, seccion, oferta*, perecedero?)>
<!ATTLIST articulo
      n_art ID #REQUIRED
      cantidad NMTOKEN #IMPLIED>
<!ELEMENT descripcion (#PCDATA)>
<!ELEMENT marca (#PCDATA)>
<!ATTLIST marca tipo (nacional|internacional) #IMPLIED>
<!ELEMENT medida (#PCDATA)>
<!ATTLIST medida unidad CDATA #FIXED "Sistema Internacional">
<!ELEMENT seccion (#PCDATA)>
<!ELEMENT oferta (#PCDATA)>
<!ELEMENT perecedero (fabricacion)>
<!ELEMENT fabricacion (#PCDATA)>
]>
<supermercado>
  <articulo n_art="articulo1" cantidad="300">
        <descripcion>yogurt</descripcion>
        <marca tipo="nacional">Danone</marca>
        <medida unidad="Sistema Internacional">1 Pack 4</medida>
        <seccion>lacteos</seccion>
  </articulo>
  <articulo n_art="articulo2">
  <descripcion>Queso fresco</descripcion>
  <marca tipo="nacional">Burgo de Arias</marca>
  <medida>250 gr</medida>
  <seccion>Lacteos</seccion>
  <oferta>Lote descuento</oferta> 
  <perecedero>
      <fabricacion>Feberero de 2014</fabricacion>
  </perecedero>
  </articulo>
</supermercado>
SUPERMERCADO.DTD
<!ELEMENT supermercado (articulo+)>
<!ELEMENT articulo (descripcion, marca, medida, seccion, oferta*, perecedero?)>
<!ATTLIST articulo
      n_art ID #REQUIRED
      cantidad NMTOKEN #IMPLIED>
<!ELEMENT descripcion (#PCDATA)>
<!ELEMENT marca (#PCDATA)>
<!ATTLIST marca tipo (nacional|internacional) #IMPLIED>
<!ELEMENT medida (#PCDATA)>
<!ATTLIST medida unidad CDATA #FIXED "Sistema Internacional">
<!ELEMENT seccion (#PCDATA)>
<!ELEMENT oferta (#PCDATA)>

<!ELEMENT perecedero (fabricacion)>
<!ELEMENT fabricacion (#PCDATA)>

3. Dado el siguiente DTD, construye un documento XML válido para el mismo:

<!ELEMENT Libro (Titulo, Seccion, SubSeccion?, Contenido, Copyright)>
<!ATTLIST Libro Catalogo ID #REQUIRED>
<!ELEMENT Titulo (#PCDATA)>
<!ELEMENT Seccion (#PCDATA)>
<!ELEMENT SubSeccion (#PCDATA)>
<!ELEMENT Contenido ((Capitulo+)|(Capitulo+, Separacion?)+)>
<!ELEMENT Capitulo (Tema+)>
<!ATTLIST Capitulo materia (XML|XHTML) "XML">
<!ELEMENT Tema (#PCDATA)>
<!ELEMENT Separacion EMPTY>
<!ELEMENT Copyright (#PCDATA)>

LIBRO.XML
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Libro SYSTEM "libro.dtd">
<Libro Catalogo="A12">
<Titulo>El ojo del golem</Titulo>
<Seccion>Novelas</Seccion>
<SubSeccion>Fantasticas</SubSeccion>
<Contenido>
    <Capitulo materia="XHTML">
        <Tema>La vida</Tema>
    </Capitulo>
     <Separacion/>
    <Capitulo materia="XML">
         <Tema>Divertirse</Tema>
        <Tema>Correr</Tema>
    </Capitulo>
</Contenido>
<Copyright>1990-2000</Copyright>
</Libro>
LIBRO.DTD
<!ELEMENT Libro (Titulo, Seccion, SubSeccion?,Contenido,Copyright)>
<!ATTLIST Libro Catalogo ID #REQUIRED>
<!ELEMENT Titulo (#PCDATA)>
<!ELEMENT Seccion (#PCDATA)>
<!ELEMENT SubSeccion (#PCDATA)>
<!ELEMENT Contenido ((Capitulo+)|(Capitulo+,Separacion?)+)>
<!ELEMENT Capitulo (Tema+)>
<!ATTLIST Capitulo materia (XML|XHTML) "XML">
<!ELEMENT Tema (#PCDATA)>
<!ELEMENT Separacion EMPTY>
<!ELEMENT Copyright (#PCDATA)>

4. Dado el siguiente XSD construye un documento XML válido para el mismo:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="pedido">
<xs:complexType>
<xs:sequence>
<xs:element name="destino" type="TipoDireccion"/>
<xs:element name="ordenante" type="TipoDireccion"/>
<xs:element name="observaciones" type="xs:string" minOccurs="0"/>
<xs:element name="contenido">
<xs:complexType>
<xs:sequence>
<xs:element name="producto" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="cantidad" type="xs:integer"/>
<xs:element name="precio" type="xs:decimal"/>
<xs:element name="observaciones" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="fecha" type="xs:date" use="required"/>
</xs:complexType>
</xs:element>

<xs:complexType name="TipoDireccion">
<xs:sequence>
<xs:element name="nombre" type="xs:string"/>
<xs:element name="direccion" type="xs:string"/>
<xs:element name="ciudad" type="xs:string"/>
<xs:element name="codpostal">
<xs:simpleType>
<xs:restriction base="xs:positiveInteger">
<xs:minInclusive value="1000"/>
<xs:maxInclusive value="60000"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:schema>

PEDIDO.XML

<?xml version="1.0" encoding="UTF-8"?>
<pedido fecha="2012-04-07" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="pedido.xsd">
    <destino>
          <nombre>Pepe</nombre>
          <direccion>C/ Falsa 123</direccion>
          <ciudad> Sevilla</ciudad>
          <codpostal>5000</codpostal>  
    </destino>
    <ordenante>
          <nombre>Juan</nombre>
          <direccion> C/ plaza mayor 45</direccion>
          <ciudad>Barcelona</ciudad>      
          <codpostal>40430</codpostal>
    </ordenante>
    <observaciones>pedido urgente</observaciones>
    <contenido>
            <producto>
                <nombre>patatas</nombre>
                <cantidad>80</cantidad>
                <precio>100</precio>
                <observaciones>recien recogidas</observaciones>
            </producto>     
            <producto>
                <nombre>manzanas</nombre>
                <cantidad>80</cantidad>
                <precio>100</precio>
            </producto>  
    </contenido>

</pedido>

Ejercicios de html


La sabana del HTML
FORMULARIO
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>formulario</title>
</head>
<body>
<form action="mailto:m.r.y73@hotmail.com" method="get">
<h1>Matriculación 1º ASIR</h1>
<table align=”center” border=”0">
<tr>
<td>Nombre</td>
<td>
<input type=text name="nombre" size="20">
</td>
</tr>
<tr>
<td>Apellidos</td>
<td>
<input type=text name="apellidos" size="20">
</td>
</tr>
<tr>
<td>Sexo</td>
<td> 
<input type=radio name="sexo" value="M">Hombre
<input type=radio name="sexo" value="H">Mujer
</td>
</tr>
<tr>
<br>Fecha de matriculación:</br>
<td>día</td>
<td>
<select name="día">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
</td>
</tr>
<tr>
<td>mes</td>
<td>
<select name="mes">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
</select>
</td>
</tr>
</tr>
<tr>
<td>año</td>
<td>
<select name="año">
<option value="2001">2001</option>
<option value="2002">2002</option>
<option value="2003">2003</option>
<option value="2004">2004</option>
<option value="2005">2005</option>
<option value="2006">2006</option>
<option value="2007">2007</option>
<option value="2008">2008</option>
<option value="2009">2009</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
</select>
</td>
</tr>
<tr>
<td>
<br>Modulos:</br>
<input type=”checkbox” name=”FH”>FH
<input type=”checkbox” name=”LMS”>LMS
<input type=”checkbox” name=”GBD”>GBD
<input type=”checkbox” name=”ISO”>ISO
<input type=”checkbox” name=”FOL”>FOL
<input type=”checkbox” name=”PAR”>PAR
</td>
</tr>
<tr>
<td>Estudios previos</td>
<td>
<texarea name="Estudios previos" rows="5" cols="60">
Escriba aquí sus estudios</texarea>
</td>
</tr>
<tr>
<td colspan=2>
<input type="submit" value="Enviar">
</td>
</tr>
<tr>
<td colspan=2>
<input type="submit" value="Restablecer">
</td>
</tr>
</table>
</form>
</body>
</html>
EJERCICIO FRAMES
ENCABEZADO
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>encabezado</title>
</head>
<body>
<h1>EJERCICIO LENGUAJE DE MARCAS ASIR</h1>
</body>
</html>
LISTA
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>lista</title>
</head>
<body>
<h2>Enlaces.</h2>
<ul>
<li><a href="lista.html" target="ventanadinamica">lista</a></li>
<li><a href="horario.html" target="ventanadinamica">horario</a></li>
<li><a href="formulario.html" target="ventanadinamica">formulario</a></li>
<li><a href="pagina web.html" target="ventanadinamica">página web</a></li>
</ul>
</body>
</html>
HORARIO
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>horario</title>
</head>
<body>
<table border="1">
<tr>
<th colspan="6">1º ASIR 2013-2014</th>
</tr>
<tr>
<th>HORA</th><th>LUNES</th><th>MARTES</th><th>MIERCOLES</th><th>JUEVES</th><th>VIERNES</th>
</tr>
<tr>
<th>8:30-9:30</th>
<td bgcolor="RED">PAR</td><td bgcolor="green">GBD</td><td bgcolor="RED">PAR</td><td bgcolor="RED">PAR</td><td bgcolor="green">GBD</td>
</tr>
<tr>
<th>9:30-10:30</th>
<td bgcolor="RED">PAR</td><td bgcolor="green">GBD</td><td bgcolor="RED">PAR</td><td bgcolor="RED">PAR</td><td bgcolor="green">GBD</td>
</tr>
<tr>
<th>10:30-11:30</th>
<td bgcolor="purple">FOL</td><td bgcolor="blue">ISO</td><td>FH</td><td bgcolor="yellow">LMS</td><td bgcolor="blue">ISO</td>
</tr>
<tr>
<th>12:00-13:00</th>
<td bgcolor="purple">FOL</td><td bgcolor="blue">ISO</td><td bgcolor="green">GBD</td><td bgcolor="yellow">LMS</td><td bgcolor="blue">ISO</td>
</tr>
<tr>
<th>13:00-14:00</th>
<td bgcolor="blue">ISO</td><td>FH</td><td bgcolor="green">GBD</td><td bgcolor="blue">ISO</td><td bgcolor="yellow">LMS</td>
</tr>
<tr>
<th>14:00-15:00</th>
<td bgcolor="blue">ISO</td><td>FH</td><td bgcolor="purple">FOL</td><td bgcolor="blue">ISO</td><td bgcolor="yellow">LMS</td>
</tr>
</body>
</html>
PIE
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>pie</title>
</head>
<body>
<h4 aling=center>Mireya Méndez Vega</h4>
</body>
</html>
FRAME
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<title>prueba frame</title>
</head>
<frameset rows="15%,80%,5%">
<frame src="encabezado.html"></frame>
</frameset>
<frameset cols="20%, 80%">
<frame src="lista.html"></frame>
<frame src="horario.html" name="ventanadinamica"></frame>
</frameset>
<frameset rows="5%">
<frame src="pie.html"></frame>
</frameset>
</html>