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