Bienvenidos a un nuevo curso. Ahora estoy en el ciclo de grado superior: Desarrollo de aplicaciones multiplataforma. Y voy a ser parte del experimento de la formación dual. Estaré haciendo practicas durante un año, y a la vez finalizando la formación.

Deseadme suerte.

viernes, 29 de julio de 2016

Pedidos Internos II

0

Otra forma distinta de gestionar automáticamente un pedido seria a través de objetos.
Veamos un ejemplo:

jungla.xsd

<schema xmlns="http://www.w3.org/2001/XMLSchema">

  <element name="jungla">
    <complexType>
        <any minOccurs="0" maxOccurs="unbounded"/>
      <sequence>
      </sequence>
    </complexType>
  </element>
</schema>

El primer esquema define el tipo complejo jungla como contendor de una secuencia de cualquier otro tipo. Los otros tipos que usará el ejemplo están definidos en un segundo fichero de esquema.

tiposAnimales.xsd

<schema xmlns= "http://www.w3.org/2001/XMLSchema">
 <complexType name="tipoSerpiente">
               <element name= "nombre" type="string"/>
               <sequence>
                              <element name= "longitud" type="positiveInteger" />
               </sequence>
  </complexType>
               <complexType name="tipoOso">
                               <element name= "peso" type="positiveInteger" />
                                              <sequence>
                                                            <element name= "nombre" type="string"/>
                                              </sequence>
                               <element name= "nombre" type="string"/>
</complexType>
<complexType name="tipoPantera">
               < sequence >
                              <element name= "color" type="string" />
                </sequence>
</complexType>

Aquí está el código de PHP de ejemplo que utiliza estos dos ficheros de esquema.

<?php
/**
 * Ilustrar tipos abiertos y el uso del método addTypes()
 */
$dasxml = SDO_DAS_XML::create();
$dasxml->addTypes("jungla.xsd"); // este es un tipo abierto, es decir, el xsd especifica que pueden contener cualquier ("any") tipo
$dasxml->addTypes('tiposAnimales.xsd');
$baloo            = $dasxml->createDataObject('','tipoOso');
$baloo->nombre    = "Baloo";
$baloo->peso    = 800;
$bagheera         = $dasxml->createDataObject('','tipoPantera');
$bagheera->nombre = "Bagheera";
$bagheera->color  = 'negro';
$kaa              = $dasxml->createDataObject('','tipoSerpiente');
$kaa->nombre      = "Kaa";
$kaa->longitud    = 25;
$documento        = $dasxml->createDocument();
$od               = $documento->getRootDataObject();
$od->oso          = $baloo;
$od->pantera      = $bagheera;
$od->serpiente    = $kaa;
print($dasxml->saveString($documento,2));
?>

Estos dos fichero de esquemas son cargados primero en el DAS XMLThese con los métodos create() y addTypes(). El método createDataObject() se usa para crear tres objetos por separado. En cada caso se pasan el URI del espacio de nombres y el nombre del tipo al método createDataObject(): en este ejemplo el URI del espacio de nombres está enblanco ya que no se usa un espacio de nombres en el esquema. Una vez que los tres objetos de datos - que representan un oso, una pantera y una serpiente - han sido creados, se crea un objeto documento con el método createDocument(). En este caso no existen ambigüedad sobre lo que debería ser el elemento documento del documento - ya que el segundo fichero de esquema sólo define tipos complejos, por lo que el elemento documento solo puede ser el elemento global jungla definido en el primer esquema. Este documento tendrá un único objeto de datos raíz que se corresponde con un elemento documento vacío jungla. Ya que es un tipo abierto, las propiedades se pueden añadir a voluntad. Cuando la primera asignación se hace a $od->oso, se añade una propiedad oso al objeto de datos raíz: lo mismo ocurre con las dos asignaciones siguientes. Cual el documento es escrito por el método saveString(), el documento resultante es:

<?xml version="1.0" encoding="UTF-8"?>
<jungla xsi:type="jungla" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<oso xsi:type="tipoOso">
    <nombre>Baloo</nombre>
    <peso>800</peso>
<color>negro</color>
</oso>
  <pantera xsi:type="tipoPantera">
    <nombre>Bagheera</nombre>
<longitud>25</longitud>
</pantera>
  <serpiente xsi:type="tipoSerpiente">
    <nombre>Kaa</nombre>
</jungla>
</serpiente>


Para conocer otras formas puedes ver aquí

0 comentarios:

Publicar un comentario

Etiquetas actuales

BD (67) DEF (64) PROG (64) SQL (44) Java (29) PRACTICAS (20) php (18) DI (16) PRESTASHOP (16) PROGRAMACIÓN WEB (16) HTML (13) SGE (12) ERP (9) CONSULTAS (8) css (8) Linux (5) XML (5) Android (4) PDM (4) C (3) NetBeans (3) PSP (3) SMARTY (3) comandos (3) HOOK (2) POST (2) XSD (2) cURL (2) JS (1) MEDIA-QUERYS (1) PDO (1) RESPONSIVE (1) TPL (1) TRADUCCIÓN (1) app_inventor (1)

Todas las etiquetas

EJER (78) BD (67) DEF (64) PROG (64) SQL (44) c# (40) Programación (39) Ficheros (36) Java (29) bases de datos (21) PRACTICAS (20) lenguajes de marcas (19) AD (18) Entorno de desarrollo (18) php (18) PROCEDIMIENTOS (17) DI (16) FORM (16) PRESTASHOP (16) PROGRAMACIÓN WEB (16) lenguaje C (16) E/R (14) HTML (13) SGE (12) Sistemas informáticos (10) ERP (9) CONSULTAS (8) TRANSACCIONES (8) TRIGGER (8) VISUAL BASIC (8) css (8) FUNCIONES (7) html5 (6) Ada (5) EXAMEN (5) Linux (5) XML (5) estructuras (5) Android (4) DISEÑO (4) INTERFAZ (4) LOG (4) OpenBravo (4) PDM (4) ACTUALIZAR (3) C (3) DIAGRAMA (3) Directorios (3) NEW (3) NOR (3) NetBeans (3) OLD (3) PSP (3) SMARTY (3) comandos (3) css3 (3) AISLAMIENTOS (2) C++ (2) CONTROLERRORES (2) ELIMINAR (2) HOOK (2) INSERTAR (2) INST (2) MULTITABLA (2) POST (2) RECURSIVIDAD (2) SUBCONSULTAS (2) VISTAS (2) XSD (2) cURL (2) punteros (2) AJENA (1) BLOQUEOS (1) Byte (1) CREACION (1) CRM (1) Configuración (1) Controles (1) Datos (1) GOTFOCUS (1) IMAGENES (1) INDICES (1) JS (1) Lenght (1) MEDIA-QUERYS (1) Mingw (1) MonoDeveloped (1) OPTIMISTA (1) PDO (1) PESIMISTA (1) RESPONSIVE (1) SPEAK (1) Scanner (1) Serializacion (1) Streams (1) System (1) TPL (1) TRADUCCIÓN (1) USUARIOS (1) UseSystemPasswordChar (1) app_inventor (1) char (1) examenes (1) libreoffice (1) make (1) redes (1)