Todas las tiendas tienen sus propios distribuidores y necesitan hacer pedidos a dichos distribuidores. En este caso necesito que un pedido se haga de forma automática, Y el distribuidor me solicita que lo realice a través de un lenguaje XML, personalizado por la empresa.
El Extensible Markup Language (XML) es una especificación de propósito general para crear lenguajes de marcado personalizado. Se clasifica como un lenguaje extensible porque permite a sus usuarios definir sus propios elementos. Su objetivo principal es ayudar a los sistemas de información comparten datos estructurados, en particular a través de Internet, y se utiliza tanto para codificar documentos y serializar los datos. En este último contexto, es comparable con otros lenguajes de serialización basados en texto tales como JSON y YAML.
Comenzó como un subconjunto simplificado del lenguaje de marcado generalizado estándar (SGML), y está diseñado para ser relativamente legibles por humanos. Mediante la adición de restricciones semánticas, idiomas de la aplicación se pueden implementar en XML. Estos incluyen XHTML, RSS, MathML, GraphML, Scalable Vector Graphics, MusicXML, y miles de otros. Por otra parte, XML se utiliza a veces como el lenguaje de especificación para dichos idiomas de la aplicación.
XML es recomendado por el World Wide Web Consortium (W3C). Es un estándar abierto de gratuidad. La recomendación especifica tanto la gramática léxico y los requisitos para el análisis sintáctico.
A continuación vamos a estudiar como trabajar con un documento XML desde PHP. Empezando por ver como se genera un documento XML desde 0 con el siguiente ejemplo:
<?php
try
{
$dasxml = SDO_DAS_XML::create("carta.xsd");
try
{
$doc = $dasxml->createDocument();
$odr = $doc->getRootDataObject();
$sec = $odr->getSequence();
$sec->insert("April 09, 2005", NULL, 'fecha');
$sec->insert("Acme Inc. ", NULL, NULL);
$sec->insert("United Kingdom. ");
$sec->insert("Estimado/a", NULL, NULL);
$sec->insert("Tarun", NULL, "nombre");
$sec->insert("Nayaraaa", NULL, "apellido");
$odr->apellido = "Nayar";
$sec->insert("Porfavor, observe que su pedido número ");
$sec->insert(12345);
$sec->insert(" ha sido enviado hoy. Gracias por hacer negocios con nosotros.");
print($dasxml->saveString($doc));
}
catch (SDO_Exception $e)
{
print($e);
}
}
catch (SDO_Exception $e)
{
print("Problema creando un documento XML: " . $e->getMessage());
}
?>
El método createDocument() del DAS XML devuelve un objeto documento con un único objeto raíz que corresponde a un elemento de documento vacío.
El método createDocument() del DAS XML devuelve un objeto documento con un único objeto raíz que corresponde a un elemento de documento vacío.
XML Schema es un lenguaje de esquema utilizado para describir la estructura y las restricciones de los contenidos de los documentos XML de una forma muy precisa, más allá de las normas sintácticas impuestas por el propio lenguaje XML. Se consigue así una percepción del tipo de documento con un nivel alto de abstracción. Fue desarrollado por el World Wide Web Consortium (W3C)
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:carta="http://esquemaCarta"
targetNamespace="http://esquemaCarta">
<xsd:element name="cartas" type="carta:ModeloCarta"/>
<xsd:complexType name="ModeloCarta" mixed="true">
<xsd:sequence>
<xsd:element name="fecha" minOccurs="0" type="xsd:string"/>
<xsd:element name="nombre" minOccurs="0" type="xsd:string"/>
<xsd:element name="apellido" minOccurs="0" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
En esta estructura se usa la API Sequence así como asignaciones a propiedades para construir el grafo de datos.
Los objetos de datos sencuenciados son SDOs que pueden rastrear el orden de las propiedades de un objeto de datos. También pueden contener elementos de texto no estructurado (un elemento de texto que no pertenece a ninguna de las propiedades del SDO). Los objetos de datos secuenciados son útiles para trabajar con documentos XML que permiten texto no estructurado (es decir, mixed=true) o si los elementos pueden estar intercalados.
<?php/**
* Cargar, actualizar, y guardar un documento XML
*/try
{
$dasxml = SDO_DAS_XML::create("carta.xsd");
$documento = $dasxml->loadFile("carta.xml");
$objeto_datos_raíz = $documento->getRootDataObject();
$objeto_datos_raíz->fecha = "September 03, 2004";
$objeto_datos_raíz->nombre = "Anantoju";
$objeto_datos_raíz->apellido = "Madhu";
$dasxml->saveFile($documento, "salida-carta.xml");
echo "Se ha escrito un nuevo fichero:\n";
print file_get_contents("salida-carta.xml");
}
catch (SDO_Exception $e)
{
print($e->getMessage());
}?>
Los tres valores más importantes son:
Cartas, el nombre del elemento documento
ModeloCarta, el nombre del tipo complejo del elemento documento. También es el nombre del tipo de SDO del objeto de datos raíz.
http://esquemaCarta, el espacio de nombres al que pertenece el elemento documento. También es el URI del espacio de nombres del tipo de SDO del objeto de datos raíz.
<carta:cartas xmlns:carta="http://esquemaCarta">
<fecha>March 1, 2005</fecha>
Mutual of Omaha
Wild Kingdom, USA
Estimado/a
<nombre>Casy</nombre>
<apellido>Crocodile</apellido>
Por favor, compre más repelente de tiburones.
Su prima ha vencido.
</carta:cartas>
0 comentarios:
Publicar un comentario