Tutoriales de informática - Abrirllave.com

Abrirllave.com

Ejercicio de DTD - Factura

Escribir un documento XML con una DTD interna que represente la información contenida en la siguiente factura ficticia:

FACTURA NÚMERO 27 – FECHA: 18/12/2013

DATOS EMISOR:

DATOS CLIENTE:

Librería Pérez

Biblioteca Txantrea

CIF: 44555666B

CIF: 33111222A

Teléfono: 777888999

Teléfono: 333999444

DETALLE FACTURA:

CÓDIGO-ARTÍCULO

TIPO

DESCRIPCIÓN

CANTIDAD

OFERTA

PVP

AW7

Libro

Analítica Web 2.0

1

SI

25€

CP5

DVD

Curso de HTML

2

NO

30€

IMPORTE:

85€

Consideraciones respecto a la DTD:

Solución:

"factura.xml"

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE factura [
   <!ELEMENT factura (datos-emisor, datos-cliente, detalle-factura)>
      <!ATTLIST factura numero CDATA #REQUIRED>
      <!ATTLIST factura fecha CDATA #REQUIRED>
   <!ELEMENT datos-emisor (nombre, cif, telefono)>
   <!ELEMENT datos-cliente (nombre, cif, telefono)>
   <!ELEMENT nombre (#PCDATA)>
   <!ELEMENT cif (#PCDATA)>
   <!ELEMENT telefono (#PCDATA)>
   <!ELEMENT detalle-factura (linea+)>
      <!ATTLIST detalle-factura importe CDATA #REQUIRED>
   <!ELEMENT linea (descripcion, cantidad, oferta?, pvp)>
      <!ATTLIST linea codigo-articulo ID #REQUIRED>
      <!ATTLIST linea tipo (Libro|DVD|Varios) #IMPLIED>
   <!ELEMENT descripcion (#PCDATA)>
   <!ELEMENT cantidad (#PCDATA)>
   <!ELEMENT pvp (#PCDATA)>
   <!ELEMENT oferta EMPTY>
]>

<factura numero="27" fecha="18/12/2013">
   <datos-emisor>
      <nombre>Librería Pérez</nombre>
      <cif>44555666B</cif>
      <telefono>777888999</telefono>
   </datos-emisor>
   <datos-cliente>
      <nombre>Biblioteca Txantrea</nombre>
      <cif>33111222A</cif>
      <telefono>333999444</telefono>
   </datos-cliente>
   <detalle-factura importe="300">
      <linea codigo-articulo="AW7" tipo="Libro">
         <descripcion>Analítica Web 2.0</descripcion>
         <cantidad>1</cantidad>
         <oferta />
         <pvp>25</pvp>
      </linea>
      <linea codigo-articulo="CP5" tipo="DVD">
         <descripcion>Curso de HTML</descripcion>
         <cantidad>2</cantidad>
         <pvp>30</pvp>
      </linea>
   </detalle-factura>
</factura>