Apuntes DAM

Chuleta de Lenguajes de Marcas

XML bien formado y válido, DTD, XSD, XPath, XSLT, XQuery, HTML semántico y CSS esencial.

Ponte a prueba con un simulacro

XML bien formado

<?xml version="1.0" encoding="UTF-8"?>Declaración (opcional, siempre la primera línea)
Un único elemento raízTodo lo demás va dentro
Etiquetas cerradas y bien anidadas<a><b></b></a>, nunca <a><b></a></b>
Atributos entre comillas<libro isbn="123">
Distingue mayúsculas<Nombre> y <nombre> son distintos
&lt; &gt; &amp; &quot; &apos;Entidades predefinidas
<![CDATA[ … ]]>Texto que no se analiza
xmlns:p="URI"Espacio de nombres con prefijo
Tema: Fundamentos de Lenguajes de Marcas

DTD

<!DOCTYPE biblioteca [  <!ELEMENT biblioteca (libro+)>  <!ELEMENT libro (titulo, autor*, precio?)>  <!ELEMENT titulo (#PCDATA)>  <!ELEMENT autor (#PCDATA)>  <!ELEMENT precio (#PCDATA)>  <!ATTLIST libro isbn ID #REQUIRED                  tipo (papel|ebook) "papel">]>

? 0 o 1 · * 0 o más · + 1 o más · , secuencia · | elección. #REQUIRED, #IMPLIED, #FIXED.

Tema: Validación de XML: DTD y XML Schema

XML Schema

<xs:element name="libro">  <xs:complexType>    <xs:sequence>      <xs:element name="titulo" type="xs:string"/>      <xs:element name="autor" type="xs:string" maxOccurs="unbounded"/>      <xs:element name="precio" type="tipoPrecio" minOccurs="0"/>    </xs:sequence>    <xs:attribute name="isbn" type="xs:string" use="required"/>  </xs:complexType></xs:element><xs:simpleType name="tipoPrecio">  <xs:restriction base="xs:decimal">    <xs:minInclusive value="0"/>    <xs:fractionDigits value="2"/>  </xs:restriction></xs:simpleType>

Otras facetas: pattern, enumeration, maxLength. Compositores: sequence, choice, all.

Tema: Validación de XML: DTD y XML Schema

XPath

/biblioteca/libroRuta absoluta
//autorTodos los autor en cualquier nivel
libro/@isbnAtributo
libro[precio > 20]Predicado
libro[1] · libro[last()]Primero · último (empieza en 1)
//libro[autor = 'Ana']/tituloTítulo de los libros de Ana
count(//libro) · sum(//precio)Funciones
contains(titulo, 'XML')Contiene texto
text() · .. · .Texto · padre · nodo actual
Tema: XPath y XSLT

XSLT

<xsl:template match="/">  <ul>    <xsl:for-each select="biblioteca/libro">      <xsl:sort select="precio" data-type="number" order="descending"/>      <xsl:if test="precio &gt; 10">        <li><xsl:value-of select="titulo"/> (<xsl:value-of select="@isbn"/>)</li>      </xsl:if>    </xsl:for-each>  </ul></xsl:template>

También: xsl:choose/when/otherwise, xsl:apply-templates, xsl:attribute, atributo con {@isbn}.

Tema: XPath y XSLT

XQuery (FLWOR)

for $l in doc("biblioteca.xml")//librolet $p := xs:decimal($l/precio)where $p > 10order by $p descendingreturn <libro titulo="{$l/titulo}">{$p}</libro>
Tema: Almacenamiento de XML y XQuery

HTML semántico

header · nav · main · footerEstructura de la página
article · section · asideContenido independiente · bloque temático · complementario
h1 … h6Un h1 por página y sin saltar niveles
<a href> · <img alt>Enlace · imagen con texto alternativo
<label for="id"> + <input id>Etiqueta asociada al campo
<button type="button">Acciones que no envían formulario
<table> con <caption> y <th scope>Tablas de datos accesibles
Tema: Lenguajes de Marcas para la Web

CSS esencial

#id · .clase · elementoEspecificidad 1-0-0 · 0-1-0 · 0-0-1
a:hover · li:nth-child(2n)Pseudoclases
div > p · div p · h2 + pHijo directo · descendiente · hermano siguiente
box-sizing: border-boxEl ancho incluye padding y borde
display: flex; gap: 1remFila flexible
display: grid; grid-template-columns: repeat(3, 1fr)Rejilla de 3 columnas
@media (max-width: 600px) { … }Estilos para pantallas estrechas
Tema: Lenguajes de Marcas para la Web

RSS 2.0

<rss version="2.0">  <channel>    <title>Blog</title><link>https://ej.com</link><description>…</description>    <item>      <title>Entrada</title><link>https://ej.com/1</link>      <pubDate>Mon, 06 Oct 2025 10:00:00 GMT</pubDate>      <guid>https://ej.com/1</guid>    </item>  </channel></rss>
Tema: Sindicación de contenidos: RSS y Atom

Chuletas de otras asignaturas