Blogia
MICHIGRA

XML EN CONJUNTO CON PHP


XML es un lenguaje de metamarcado que ofrece un formato para la descripción de datos estructurados. Esto facilita unas declaraciones de contenido más precisas y unos resultados de búsquedas más significativos en varias plataformas. Además, XML habilitará una nueva generación de aplicaciones para ver y manipular datos basadas en el Web.
XML ofrece una representación estructural de los datos que se puede implementar ampliamente y es fácil de distribuir. XML es un subconjunto de SGML optimizado para el Web. Definido por el World Wide Web Consortium (W3C) (en inglés), XML garantiza que los datos estructurados sean uniformes e independientes de aplicaciones o fabricantes. La interoperabilidad resultante está creando rápidamente una nueva generación de aplicaciones de comercio electrónico en el Web.XML es muy valioso para Internet, así como para los entornos de intranets corporativas de gran tamaño, pues proporciona interoperabilidad mediante un formato basado en estándares flexible y abierto, con formas nuevas de acceso a las bases de datos existentes y de entregar datos a clientes de Web. Las aplicaciones se pueden generar más rápidamente, su mantenimiento es más sencillo y pueden ofrecer fácilmente varias vistas de los datos estructurados.XML es un formato basado en texto, parecido al HTML en muchos aspectos, específicamente diseñado para almacenar y transmitir datos. Un origen XML se compone de elementos XML, cada uno de los cuales consta de una etiqueta de inicio () y de los datos comprendidos entre ambas etiquetas (el contenido). Al igual que los documentos HTML, un documento XML contiene texto anotado por etiquetas. Sin embargo, a diferencia de HTML, XML admite un conjunto ilimitado de etiquetas, no para indicar el aspecto que debe tener algo, sino lo que significa. Por ejemplo: un elemento XML puede estar etiquetado como precio, número de pedido o nombre. El autor del documento es quien decide qué tipo de datos va a utilizar y qué etiquetas son las más adecuadas.Los documentos XML son fáciles de crear. Si está familiarizado con HTML, aprenderá muy rápidamente a crear documentos en XML.La iniciativa XML consta de un conjunto de estándares relacionados entre sí:

  • Extensible Markup Language (XML) (en inglés) es una Recomendación, la fase final del proceso de aprobación del W3C. Esto significa que el estándar es estable y que los desarrolladores de Web y de herramientas pueden adoptarlo plenamente.
  • Namespaces in XML (en inglés) es una Recomendación que describe la sintaxis y la compatibilidad de los espacios de nombres para los analizadores XML que reconocen espacios de nombres.
  • Document Object Model (DOM) Level 1 Specification (en inglés) es una Recomendación que ofrece un estándar para el acceso mediante programación a los datos estructurados (a través de secuencias de comandos), de modo que los desarrolladores puedan interactuar de forma coherente con los datos basados en XML y computarlos.
  • Extensible Stylesheet Language (XSL) Specification (en inglés) es todavía un borrador de trabajo. El XSL tiene dos secciones modulares: el lenguaje de transformación XSL y los objetos de formato XSL. El lenguaje de transformación puede servir para transformar el XML de cara a su presentación. Puesto que las dos partes de XSL son modulares, el lenguaje de transformación se puede utilizar de forma independiente para transformaciones con fines generales, incluida la conversión de XML en HTML bien formado. CSS se puede aplicar a datos XML de estructura simple, pero no puede modificar el orden de presentación de la información.
  • XML Linking Language (XLL) (en inglés) y su compañero XML Pointer Language (XPointer) (en inglés), son todavía borradores de trabajo. XLL es un lenguaje de vinculación XML que ofrece vínculos en XML parecidos a los de HTML, pero más potentes. Con XLL, los vínculos pueden tener varias direcciones y pueden existir en el nivel de los objetos, no sólo en el nivel de las páginas. Internet Explorer 5 no tiene incorporada la compatibilidad con XLL.

VENTAJAS DE XML

 XML aporta mucha potencia y flexibilidad a las aplicaciones basadas en el Web, proporcionando numerosas ventajas a los programadores y usuarios:

  • Búsquedas con más significado
  • Programación de aplicaciones Web flexibles
    • Integración de datos procedentes de fuentes dispares
    • Computación y manipulación locales de los datos
    • Varias vistas de los datos
    • Actualizaciones granulares

  INSTALACION  DE XML

Esta extensión usa expat, que se puede encontrar en http://www.jclark.com/xml/expat.html. El Makefile que viene con expat no crea una biblioteca por defecto, se puede usar esta regla de make para eso:       Libexpat.a: $(OBJS)           Ar-rc $ @ $(OBJS                      Ranlib $ @Se puede conseguir un paquete RPM de expat en http://sourceforge.net/projects/expat/. Nota que si se usa Apache-1.3.7 o posterior, ya tienes la biblioteca requerida expat. Simplemente, configura PHP usando --with-xml (sin ninguna ruta adicional) y usará automáticamente la biblioteca expat incluida en Apache. En UNIX, ejecuta configure con la opción --with-xml. La biblioteca expat debería ser instalada en algún lugar donde el compilador pueda encontrarlo. Si se compila PHP como un módulo para Apache 1.3.9 o posterior, PHP automáticamente usará la biblioteca integrada expat de Apache. Puede necesitar establecer CPPFLAGS y LDFLAGS en su entorno antes de ejecutar "configure" si se ha instalado expat en algún lugar exótico. Compila PHP. ¡Ta-tam! Ya debería estar.

SOBRE ESTA EXTENSIÓN

Esta extensión de PHP implementa soporte para expat de James Clarkin en PHP. Este conjunto de herramientas permite interpretar, pero no validar, documentos XML. Soporta tres codificaciones de caracteres fuente, también proporcionados por PHP: US-ASCII, ISO-8859-1 y UTF-8. UTF-16 no está soportado. Esta extensión permite crear intérpretes de XML y definir entonces gestores para diferentes eventos XML. Cada intérprete XML tiene también unos cuantos parámetros que se pueden ajustar.  

LOS GESTORES DE EVENTOS XML DEFINIDOS SON:

 xml_set_element_handler() Los eventos de elemento ("element") se producen cuando el intérprete XML encuentra etiquetas de comienzo o fin. Hay gestores separados para etiquetas de comienzo y etiquetas de fin. 

 xml_set_character_data_handler()

 La información de caracteres es, por definición, todo el contenido no "marcado" de los documentos XML, incluidos los espacios en blanco entre etiquetas. Nota que el intérprete XML no añade o elimina ningún espacio en blanco, depende de la aplicación (de ti) decidir si el espacio en blanco es significativo.

xml_set_processing_instruction_handler()

Los programadores de PHP deberían estar ya familiarizados con las instrucciones de procesado (PI). es una instrucción de procesado, donde php se denomina el "objetivo de procesado". El manejo de éstos es específico a cada aplicación, salvo que todos los objetivos PI que comienzan con "XML" están reservados.

xml_set_unparsed_entity_decl_handler() 

Este gestor se llamará para la declaración de una entidad no analizada (NDATA).

xml_set_notation_decl_handler() 

Este gestor se llama para la declaración de una anotación.

xml_set_external_entity_ref_handler()

Este gestor se llama cuando el intérprete XML encuentra una referencia a una entidad general interpretada externa . Puede ser una referencia a un archivo o URL, por ejemplo.

Case Folding

Las funciones manejadoras de elementos pueden tomar sus nombres de elementos "case-folded". Case-folding se define en el estándar XML como "un proceso aplicado a una secuencia de caracteres, en el cual aquellos identificados como sin-mayúsculas son reemplazados por sus equivalentes en mayúsculas". En otras palabras, cuando se trata de XML, case-folding simplemente significa poner en mayúsculas. Por defecto, todos los nombres de elementos que se pasan a las funciones gestoras estan "pasados a mayúsculas". Esta conducta puede ser observada y controlada por el analizador XML con las funciones xml_parser_get_option() y xml_parser_set_option(), respectivamente.

CÓDIGOS DE ERROR

Las siguientes constantes se definen para códigos de error XML (como los devuelve xml_parse()):
XML_ERROR_NONE
XML_ERROR_NO_MEMORY
XML_ERROR_SYNTAX
XML_ERROR_NO_ELEMENTS
XML_ERROR_INVALID_TOKEN
XML_ERROR_UNCLOSED_TOKEN
XML_ERROR_PARTIAL_CHAR
XML_ERROR_TAG_MISMATCH
XML_ERROR_DUPLICATE_ATTRIBUTE
XML_ERROR_JUNK_AFTER_DOC_ELEMENT
XML_ERROR_PARAM_ENTITY_REF
XML_ERROR_UNDEFINED_ENTITY
XML_ERROR_RECURSIVE_ENTITY_REF
XML_ERROR_ASYNC_ENTITY
XML_ERROR_BAD_CHAR_REF
XML_ERROR_BINARY_ENTITY_REF
XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF
XML_ERROR_MISPLACED_XML_PI
XML_ERROR_UNKNOWN_ENCODING
XML_ERROR_INCORRECT_ENCODING
XML_ERROR_UNCLOSED_CDATA_SECTION
XML_ERROR_EXTERNAL_ENTITY_HANDLING

CODIFICACIÓN DE CARACTERES

La extension XML de PHP soporta el conjunto de caracteres Unicode a través de diferentes codificaciones de caracteres. Hay dos tipos de codificaciones de caracteres, coficación de fuente y codificación de destino. La representación interna de PHP del documento está siempre codificada con UTF-8. La codificación de fuente se hace cuando un documento XML es interpretado. Al crear un intérprete XML , se puede especificar una codificación de fuente (esta codificación no se puede cambiar má tarde durante el tiempo de vida del intérprete XML). Las codificaciones de fuente soportadas son ISO-8859-1, US-ASCII y UTF-8. Las dos primeras son codificaciones de byte-único, lo que significa que cada carácter se representa por un solo byte. UTF-8 puede codificar caracteres compuestos por un número variable de bits (hasta 21) en de uno a cuatro bytes. La codificación fuente por defecto usada por PHP es ISO-8859-1. La codificación de destino se hace cuando PHP pasa datos a las funciones gestoras XML. Cuando se crea un intérprete XML, la codificación de destino se crea igual a la codificación de fuente, pero se puede cambiar en cualquier momento. La codificación de destino afectará a la información de los caracteres así como a los nombres de las etiquetas y a los objetivos de instrucciones de procesado. Si el intérprete XML encuentra caracteres fuera del rango que su codificación de fuente es capaz de representar, devolverá un error. Si PHP encuentra caracteres en el documento XML interpretado que no pueden ser representados en la codificación de destino elegida, los caracteres problema serán "degradados". Actualmente, esto significa que tales caracteres se reemplazan por un signo de interrogación.   

TABLA DE CONTENIDOS  

utf8_decode Convierte una cadena codificada UTF-8 a ISO-8859-1  

utf8_encode Codifica una cadena ISO-8859-1 a UTF-8

xml_error_string Obtiene la cadena de error del analizador XML 

 xml_get_current_byte_index  Obtiene el índice del byte actual para un analizador XML 

 xml_get_current_column_number  Obtiene el número de columna actual para un analizador XML. 

 xml_get_current_line_number Obtiene el número de línea actual de un analizador XML 

 xml_get_error_codeObtiene el código de error del analizador XML 

 xml_parse_into_structParse XML data into an array structure 

 xml_parseComienza a analizar un documento XML  

xml_parser_create_nsCreate an XML parser with namespace support  

xml_parser_createCrea un analizador de XML  

xml_parser_freeLibera un analizador XML  

xml_parser_get_optionObtiene las opciones de un analizador XML 

 xml_parser_set_optionEstablece las opciones de un analizador XML 

 xml_set_character_data_handlerEstablece gestores de datos de caracteres 

 xml_set_default_handlerset up default handler  

xml_set_element_handler Establece gestores de los elementos principio y fin 

 xml_set_end_namespace_decl_handler Set up end namespace declaration handler 

 xml_set_external_entity_ref_handlerEstablece gestores de referencia de entidades externas 

 xml_set_notation_decl_handler Establece gestores de declaraciones de notación 

 xml_set_objectUsa un analizador XML dentro de un objecto 

 xml_set_processing_instruction_handlerEstablece el gestor de instrucciones de procesado (PI)

  xml_set_start_namespace_decl_handlerSet up start namespace declaration handler 

 xml_set_unparsed_entity_decl_handler Establece un gestor de declaraciones de entidades no analizadas   

0 comentarios