Empieza aquí.
Todo desde cero.
Esta guía asume que no sabes nada. Al terminar tendrás todo lo necesario para aprobar el examen final de LMSG en ASIR.
3
Temas del examen
45
Preguntas de práctica
16
Conceptos clave

¿De qué va esta asignatura?

LMSG (Lenguajes de Marcas y Sistemas de Gestión de la Información) trata sobre cómo almacenar, transformar y gestionar datos usando XML y sistemas empresariales.

En este segundo cuatrimestre el examen cubre tres bloques principales:

5
Transformaciones XML → HTML con XSL
Tienes datos en XML y quieres mostrarlos de forma bonita en el navegador. Usas XSL (que contiene XPath para filtrar y XSLT para transformar) para convertir ese XML en una página HTML.
6
Bases de datos XML: XPath y XQuery
En vez de guardar datos en una base de datos relacional (como MySQL), se guardan en documentos XML. Para consultarlos usas XPath (simple) o XQuery (más potente, parecido a SQL).
7
ERPs y sistemas de gestión empresarial
Los ERP (como Microsoft Dynamics 365) son programas que integran todos los departamentos de una empresa. También se estudian los sistemas Help Desk para gestionar incidencias.

Conceptos previos que necesitas

XML básico
¿Qué es XML?

Un formato de texto para guardar datos con etiquetas. Parecido al HTML pero tú defines las etiquetas. <disco><nombre>OK Computer</nombre></disco>

HTML básico
¿Qué es HTML?

El lenguaje que entienden los navegadores web. Con etiquetas como <table>, <tr>, <td> para mostrar tablas y datos de forma visual.

💡 Clave de la asignatura: XML guarda los datos de forma estructurada pero "fea". El objetivo es transformar ese XML en HTML para que el usuario lo vea bonito en el navegador. Eso es exactamente lo que hace el Tema 5.

Cómo usar esta guía

1
Lee los temas 5, 6 y 7 en orden desde el menú lateral. Cada tema empieza desde cero.
2
Fíjate en los cuadros naranjas — son las trampas y preguntas típicas que menciona el profesor en clase.
3
Repasa el Resumen Visual — tabla comparativa de todo el temario en una sola página.
4
Haz el Examen Teórico (25 preguntas) y el Examen Práctico (20 situaciones con código) para autoevaluarte.
Transformaciones XML
con XSL, XPath y XSLT
Aprenderás a transformar datos XML en páginas HTML visualmente atractivas usando el lenguaje XSL.

¿Por qué transformar XML?

Cuando abres un archivo XML en el navegador, esto es lo que ves:

XMLtienda.xml — así se ve en el navegador SIN transformación (feo)
<tienda>
  <disco>
    <nombre>The Bends</nombre>
    <grupo>Radiohead</grupo>
    <precio>15</precio>
    <año>1995</año>
  </disco>
</tienda>

El objetivo es convertirlo en una tabla HTML bonita con colores. Para eso usamos XSL.

XSL contiene DOS lenguajes: XPath (para navegar y filtrar los datos) y XSLT (para transformar y presentar esos datos). Ambos trabajan juntos dentro de un fichero .xsl.

XPath vs XSLT — La diferencia más importante del tema

XPath — Filtrado ANTES
¿Qué hace? Navega y filtra datos del XML
¿Cuándo actúa? ANTES de que lleguen los datos al procesamiento
Forma: Una sola línea, estructura tipo ruta
Ejemplo: /tienda/disco[precio < 50]
Analogía: Es el grifo. Si lo cierras, no llega agua. No importa lo que hagas después.
VS
XSLT — Condiciones DESPUÉS
¿Qué hace? Transforma y presenta los datos recibidos
¿Cuándo actúa? DESPUÉS de recibir los datos
Forma: Múltiples líneas con etiquetas XML
Ejemplo: <xsl:if test="año > 1990">
Analogía: Es el cocinero. Solo puede cocinar lo que le llega. Si no llega nada, no puede hacer nada.
⚠️ TRAMPA DE EXAMEN (la más repetida): Si el filtro XPath ya excluye los discos de 1980 (por ejemplo, solo pasa los posteriores a 1990), añadir un xsl:if en XSLT no sirve de absolutamente nada. Esos datos NUNCA llegarán. La única solución es cambiar el filtro XPath.

XPath — Navegación por el XML

XPath funciona como las rutas de archivos en un ordenador. Usas barras / para navegar por la estructura del XML.

Expresión XPathSignificado
/tienda/discoTodos los elementos disco dentro de tienda
/tienda/disco[precio < 50]Solo los discos con precio menor que 50 — filtro
/tienda/disco[año > 1990]Solo los discos posteriores a 1990
//discoTodos los disco en cualquier parte del documento
/tienda/disco[1]Solo el primer disco

XSLT — Las instrucciones principales

xsl:for-each
Bucle — recorre elementos

Itera sobre todos los nodos que selecciona XPath y ejecuta el código por cada uno.

xsl:if
Condición sobre datos recibidos

Comprueba una condición y solo ejecuta el código si se cumple. Ojo: solo actúa sobre los datos que ya llegaron.

xsl:value-of
Muestra el valor de un nodo

Extrae y muestra el contenido de texto de un elemento XML.

xsl:choose / xsl:when
Multiple condiciones (if/else)

Permite evaluar varias condiciones, como un switch/case. Para clasificar discos por décadas, por ejemplo.

Ejemplo completo paso a paso

Vamos a mostrar los discos con precio menor a 50€ en una tabla HTML:

XSLdiscos.xsl — Ejemplo con filtro XPath + presentación XSLT
<!-- El filtro XPath está en el select del for-each -->
<xsl:template match="/">
  <html><body>
    <table border="1">
      <!-- XPath filtra AQUÍ: solo discos con precio menor que 50 -->
      <xsl:for-each select="tienda/disco[precio < 50]">
        <tr>
          <td><xsl:value-of select="nombre"/></td>
          <td><xsl:value-of select="grupo"/></td>
          <td><xsl:value-of select="precio"/></td>
        </tr>
      </xsl:for-each>
    </table>
  </body></html>
</xsl:template>

Añadir condición XSLT dentro del bucle

XSLCon xsl:if para marcar discos en oferta
<xsl:for-each select="tienda/disco">   <!-- sin filtro: llegan TODOS -->
  <tr>
    <td><xsl:value-of select="nombre"/></td>
    <td>
      <!-- XSLT comprueba DESPUÉS de recibir todos los discos -->
      <xsl:if test="año > 1990">OFERTA</xsl:if>
    </td>
  </tr>
</xsl:for-each>

Caracteres especiales: < y > en XSL

En XML/XSL no puedes escribir < o > directamente dentro de atributos porque el parser pensaría que estás abriendo/cerrando una etiqueta. Se usan entidades de escape:

SímboloEntidad de escapeEjemplo en XSL
< (menor que)&lt;test="precio &lt; 50"
> (mayor que)&gt;test="año &gt; 1990"
<= (menor o igual)&lt;=test="precio &lt;= 20"

Datos clave para el examen — Tema 5

XSL no modifica el XML original — solo lee los datos y los presenta de otra forma.
XSL puede transformar a más cosas que HTML — también a otro XML o PDF, pero lo más habitual es HTML.
Se puede añadir CSS al XSL para dar estilos, igual que en HTML normal. Lo ideal es tenerlo en un fichero externo.
Pregunta trampa: "¿Qué harías para mostrar discos de 1980 si el filtro XPath es [año > 1990]?" → Cambiar el filtro XPath, NO añadir un xsl:if.
Bases de Datos XML
XPath y XQuery
Aprenderás a almacenar documentos XML en bases de datos nativas y a consultarlos con XPath y XQuery.

¿Qué es una base de datos XML nativa?

En vez de guardar los datos en tablas (como hace MySQL), una BD XML guarda directamente los documentos XML tal cual. Nosotros usamos eXist-db en clase.

Ventaja principal: si ya tienes los datos en XML (exportados de otro sistema), no necesitas importarlos a tablas. Los consultas directamente.

XPath vs XQuery en bases de datos XML

XPath — Consulta simple
Estructura: una línea, tipo ruta de directorio
Reconocimiento rápido: empieza por /
Puede hacer: navegar, seleccionar, filtrar
NO puede hacer: ordenar resultados
Ejemplo: /biblioteca/libro
Con filtro: /biblioteca/libro[precio=23]
VS
XQuery — Consulta compleja
Estructura: FLWOR — varias líneas
Reconocimiento rápido: tiene for, where, return
Puede hacer: todo lo de XPath + ordenar + devolver HTML
RETURN: obligatorio siempre
Ejemplo: for $x in doc("lib.xml")//libro
Superconjunto: XQuery incluye XPath dentro
Truco para identificarlas en el examen: Si ves una sola línea que empieza por / → es XPath. Si ves varias líneas con for, where y return → es XQuery. XQuery es un superconjunto de XPath: usa XPath internamente pero añade mucho más.

Las cláusulas FLWOR de XQuery

El nombre FLWOR viene de las iniciales de sus cláusulas: For, Let, Where, Order by, Return.

Cláusula¿Obligatoria?Para qué sirveEquivalente SQL
FORCasi siempreItera sobre una colección de nodosFROM
LETOpcionalAsigna un valor a una variable
WHEREOpcionalFiltra los resultados por condiciónWHERE
ORDER BYOpcionalOrdena los resultadosORDER BY
RETURNSIEMPREDefine qué se devuelve como resultadoSELECT

Ejemplos de consultas

XPathLibros con precio = 23 (una línea)
/biblioteca/libro[precio=23]/titulo
XQueryLo mismo pero con XQuery — más potente
for $x in doc("biblioteca.xml")//libro
where $x/precio = 23
return $x/titulo
XQueryCon ORDER BY y devolviendo HTML — algo que XPath no puede hacer
for $x in doc("biblioteca.xml")//libro
where $x/precio < 30
order by $x/titulo
return <h2>{$x/titulo}</h2>   (devuelve HTML directamente)

Ventajas y limitaciones de las BD XML

Ventajas de seguridad
Frente a un fichero XML
Usuario y contraseña para acceder
Permisos distintos por usuario (solo lectura, escritura…)
Limitar acceso a documentos o colecciones concretas
Rechazo de conexiones por IP sospechosa
Limitaciones frente a BD relacional
Vs MySQL / Oracle / SQL Server
No evita redundancia — puedes duplicar documentos sin error
No controla inconsistencia — el mismo disco puede tener dos años distintos
Sin relaciones entre documentos
Sin índices únicos — no detecta datos repetidos

X-Update: modificar datos en BD XML

Para insertar, modificar o borrar documentos en una BD XML existe X-Update. Equivale al INSERT, UPDATE y DELETE de SQL.

Para el examen: no te van a pedir que escribas consultas X-Update. Solo tienes que saber que existe y para qué sirve. Lo importante de las BD XML es consultarlas con XQuery.
ERP y Sistemas
de Gestión Empresarial
Aprenderás qué es un ERP, cómo se personaliza y para qué sirven los sistemas de Help Desk como GLPI.

¿Qué es un ERP?

ERP significa Enterprise Resource Planning (Planificación de Recursos Empresariales). Es un software que integra y centraliza todos los procesos de una empresa en un único sistema.

La clave del ERP: Es interdepartamental — todos los departamentos (ventas, finanzas, fabricación, almacén, RRHH…) usan el mismo sistema y comparten datos en tiempo real. Si Ventas introduce un pedido, Almacén lo ve al instante.

¿Qué hay debajo de un ERP?

Los usuarios ven pantallas con gráficos y tablas bonitas. Pero debajo hay una base de datos relacional que lo almacena todo:

Microsoft Dynamics 365
Base de datos: SQL Server

El ERP de Microsoft usa su propio motor de base de datos (SQL Server). Lógico, son de la misma empresa.

Oracle ERP
Base de datos: Oracle Database

Oracle hace tanto el ERP como la base de datos. Aprovechan su propio motor de BD para mayor integración.

Características de un ERP

1
Modular: está dividido en módulos por departamento (módulo de ventas, módulo de contabilidad, módulo de almacén…). Puedes instalar solo los que necesitas.
2
Interdepartamental: todos los departamentos comparten la misma base de datos. No hay "silos" de información.
3
Visión en tiempo real: en cualquier momento puedes ver el estado actual de toda la empresa (ventas del día, stock disponible, facturas pendientes…).
4
Centralizado: un único sistema para toda la empresa. Antes, cada departamento usaba su propio programa y los datos no se comunicaban.

Personalización del ERP (3 opciones — dato de examen)

Como técnico informático, tu trabajo en el ERP es principalmente personalizarlo, no programarlo. En Microsoft Dynamics 365 hay exactamente 3 zonas personalizables:

Zona 1
Área de trabajo

La pantalla principal del usuario. Puedes añadir, quitar o reorganizar los widgets y datos que aparecen.

Zona 2
Cinta de opciones

La barra de iconos y botones de la parte superior. Puedes añadir o quitar acciones frecuentes.

Zona 3
Panel de navegación

El menú lateral. Puedes reorganizar los módulos y accesos directos según las necesidades del usuario.

Cómo personalizar en Dynamics: En cada zona hay una flechita azul con la opción "Personalizar". Hay tres opciones: "Personalizar esta página" (área de trabajo), "Personalizar cinta de opciones" y "Personalizar panel de navegación".

Generación de informes en el ERP

Los técnicos no programan informes desde cero. Los generan desde los menús del ERP y los exportan:

📊 Exportar a Excel

Para hojas de cálculo con datos que el usuario puede manipular. En Dynamics siempre hay un botón de exportación a Office.

📄 Exportar a PDF

Para informes formales que se van a imprimir o enviar. El formato queda fijo y no se puede editar.

Help Desk y GLPI — Gestión de incidencias

⚠️ TRAMPA TÍPICA DE EXAMEN: Los sistemas Help Desk (como GLPI) sirven para reportar y gestionar incidencias, NO para resolverlas. Son los técnicos humanos quienes resuelven la incidencia. El programa solo organiza los tickets.
1
Usuario detecta un problema
La impresora no funciona, el ordenador va lento, una aplicación da error…
2
Usuario abre un ticket en GLPI
Describe el problema en el sistema. Se crea un ticket con número de seguimiento.
3
El técnico humano resuelve el problema
Va a donde está el usuario, arregla el problema físicamente y cierra el ticket en GLPI.
4
Ticket cerrado
El sistema registra la incidencia como resuelta. Queda historial para auditorías futuras.
Resumen Visual Completo
Todo el temario en una sola página. Ideal para el repaso de última hora antes del examen.

Comparativa general de los 3 temas

ConceptoTema 5Tema 6Tema 7
¿Qué estudia?Transformar XML en HTMLBases de datos XML nativasERPs y gestión empresarial
Tecnología claveXSL (XPath + XSLT)XQuery (+ XPath)Microsoft Dynamics 365
Lenguaje de consultaXPath para filtrar, XSLT para transformarXPath (simple) y XQuery (complejo)No hay consultas
Software de claseNavegador + fichero .xsleXist-dbMicrosoft Dynamics 365 / GLPI

XPath vs XSLT vs XQuery — de un vistazo

CaracterísticaXPathXSLTXQuery
¿En qué tema?5 y 656
Función principalNavegar y filtrar datosTransformar y presentarConsultar (como SQL)
Número de líneasUna líneaMúltiples líneasMúltiples líneas
¿Puede ordenar?NoNo (solo con XSLT avanzado)Sí (ORDER BY)
¿Puede devolver HTML?NoSí (es su objetivo)
Cláusula obligatoriaRETURN
Identificación rápidaEmpieza por /Etiquetas <xsl:…>Tiene for…return

Las 5 trampas de examen del profesor

Trampa 1: Si el filtro XPath es [año > 1990] y te preguntan cómo mostrar discos de 1980, la respuesta es cambiar el filtro XPath, no añadir un xsl:if.
Trampa 2: GLPI / Help Desk no resuelve las incidencias. Solo las gestiona. Las resuelven los técnicos humanos.
Trampa 3: La transformación XSL no modifica el XML original. Solo lo lee y lo muestra de otra forma.
Trampa 4: XQuery tiene la cláusula RETURN siempre obligatoria. WHERE y ORDER BY son opcionales.
Trampa 5: Una base de datos XML NO es una base de datos relacional. No tiene relaciones, ni índices únicos, ni prevención de redundancia automática.

Personalizaciones del ERP — Exactamente 3

Área de trabajo — pantalla principal
Cinta de opciones — barra de botones superior
Panel de navegación — menú lateral

Cláusulas FLWOR de XQuery

F — FOR — itera (como FROM en SQL)
L — LET — asigna variable (opcional)
W — WHERE — filtra (opcional)
O — ORDER BY — ordena (opcional)
R — RETURN — devuelve resultado (SIEMPRE OBLIGATORIO)
25 Preguntas Teóricas
Conceptos de los temas 5, 6 y 7. Responde todas las preguntas y comprueba tus resultados al final.
0%
puntuación
0
Correctas
0
Incorrectas
25
Total
20 Situaciones Prácticas
Situaciones reales con código XSL, XQuery y XPath como en el examen real. Lee el código con atención antes de responder.
0%
puntuación
0
Correctas
0
Incorrectas
20
Total