Saltar al contenido principal

Solución: Actividad 101

a)

<elemento>Elemento 1</elemento>
<elemento>Elemento 2</elemento>

El código anterior es incorrecto porque debe haber un único elemento raíz y en el ejemplo hay dos elementos.

Una alternativa correcta es la siguiente:

<elementos>
<elemento>Elemento 1</elemento>
<elemento>Elemento 2</elemento>
</elementos>
Probar en el navegador

No debemos modificar los nombres de las etiquetas del código original, ya que un elemento se puede repetir varias veces. Una alternativa como la siguiente no sería válida:

<elementos>
<elemento1>Elemento 1</elemento1>
<elemento2>Elemento 2</elemento2>
</elementos>

b)

<elemento>Coche</ELEMENTO>

El código anterior es incorrecto porque hay una etiqueta de apertura que no se cierra (y una de cierre que no se abre). Esto es debido a que en XML se distingue entre minúsculas y mayúsculas. Por lo tanto, <elemento> no es igual a <ELEMENTO>.

Una alternativa correcta es la siguiente:

<elemento>Coche</elemento>
Probar en el navegador

Otra alternativa correcta sería:

<ELEMENTO>Coche</ELEMENTO>

Aunque no es incorrecto, es más recomendable utilizar minúsculas para los nombres de elementos.

Probar en el navegador

c)

<negrita><italica>Texto XML</negrita></italica>

El código anterior es incorrecto porque los elementos anidados no se cierran correctamente. El último elemento abierto, debe ser el primero en ser cerrado y no es así.

Una alternativa correcta es la siguiente (suponiendo que las etiquetas de apertura son las que están bien escritas):

<negrita><italica>Texto XML</italica></negrita>
Probar en el navegador

Para visualizarlo mejor, podemos darle formato:

<negrita>
<italica>Texto XML</italica>
</negrita>

Formatear el código de esta manera no modifica la funcionalidad del código XML. De echo, cuandro abrimos un documento XML, se mostrará de esta manera, aunque en el archivo esté todo en una única línea.

Otra alternativa correcta sería (suponiendo que las etiquetas de cierre son las que están bien escritas):

<italica><negrita>Texto XML</negrita></italica>
Probar en el navegador
No confundir XML con HTML

Aunque en este fragmento de código pueda recordar a HTML, se trata de XML. Por lo tanto, no debemos modificar el nombre de las etiquetas. Tenemos total libertad para utilizar los nombres de las etiquetas que deseemos siempre que cumplamos las reglas de sintaxis.

El siguiente ejemplo no debería ser una alternativa:

<b><i>Texto XML<i></b>

d)

<rango>1 < 5 & 11 > 7</rango>

El código anterior es incorrecto porque los caracteres < y & no pueden ser usados como contenido de un elemento, puesto que son caracteres reservados para usarse como marcas. Si se necesitan, deben usarse las siguientes entidades:

  • &lt; en vez de <
  • &amp; en lugar de &
  • &gt; en vez de >

Una alternativa correcta es la siguiente:

<rango>1 &lt; 5 &amp; 11 &gt; 7</rango>
Probar en el navegador
Respetar los espacios en blanco

Al substituir los caracteres por sus entidades, debemos respetar los espacios en blanco y tener cuidado de no eliminarlos. Es decir, la siguiente alternativa no sería válida:

<rango>1&lt;5&amp;11&gt;7</rango>

El contenido del código anterior se mostraría de la siguiente forma:

1<5&11>7

e)

<XMLfichero>Marcas.xml</XMLfichero>

El código anterior es incorrecto porque los nombres de los elementos no pueden empezar por xml, XML u otras combinaciones ya que estas están reservadas para el estándar.

Una alternativa correcta es la siguiente:

<ficheroXML>Marcas.xml</ficheroXML>
Probar en el navegador

Otra alternativa correcta sería:

<fichero-xml>Marcas.xml</fichero-xml>
Probar en el navegador

f)

<![CDATA[ <[[aa]]>]]>

El código anterior es incorrecto porque no se puede incluir la cadena ]]> dentro de una sección de CDATA. Todo lo que se introduce dentro de un bloque CDATA no será interpretado por el parser XML. El código anterior pretende mostrar la cadena <[[aa]]>, que es lo que está dentro del bloque CDATA. Esta cadena se puede mostrar sin utilizar un bloque CDATA de la siguiente manera:

&lt;[[aa]]&gt;

Pero, para mostrarlo es necesario introducirlo dentro de un elemento raíz, ya que no se puede almacenar contenido en un fichero XML sin un elemento raíz. El nombre del elemento es indiferente. En este caso, utilizaremos <cdata>.

Por lo tanto, una alternativa correcta sería la siguiente:

<cdata>&lt;[[aa]]&gt;</cdata>
Probar en el navegador

Si, por cualquier motivo, queremos utilizar un bloque CDATA (aunque no es nada recomendable en este caso), tendríamos que hacerlo de la siguiente manera:

<cdata><![CDATA[ <[[aa]]>]]&gt;</cdata>

Como se puede observar, es necesario siempre un elemento raíz, ya que el bloque CDATA de por sí solo no se puede utilizar.

Probar en el navegador

Otra alternativa válida (pero muy poco recomendable) sería:

<cdata><![CDATA[ <[[aa]]>]<![CDATA[]>]]></cdata>
Probar en el navegador

g)

<user@uo>Pedro@Empleados</user@guo>

El código anterior es incorrecto porque se incluyen caracteres no válidos en las etiquetas de apertura y cierre, además de que son diferentes. Los nombres de los elementos solo pueden incluir letras, números, guiones, guiones bajos y puntos.

Una alternativa correcta es la siguiente:

<user-uo>Pedro@Empleados</user-uo>
Probar en el navegador

Los caracteres especiales como el @ pueden ser substituídos por sus entidades, aunque también es válido usar el caracter especial.

En el caso del @, su entidad sería &#64; (decimal) o &#x40; (hexadecimal). Ambas son válidas.

Valores UNICODE

Los números 64 y x40 representan el mismo valor, pero se representan en diferentes bases. Ese valor corresponde al código UNICODE que corresponde al caracter @. Los valores UNICODE los podemos extraer de una tabla UNICODE.

Los valores decimales y hexadecimales que indiquemos para las entidades, se pueden rellenar con ceros a la izquierda. Es decir, &#64; sería equivalente a &#0064; o &#000000064;. En algunas tablas un número se indica con ceros a la izquierda y en otras no, pero sigue siendo el mismo valor.

Por lo tanto, podríamos también utilizar la siguiente alternativa:

<user-uo>Pedro&#64;Empleados</user-uo>

También sería válido:

<user-uo>Pedro&#x40;Empleados</user-uo>
Probar en el navegador

h)

<texto>El titular de hoy se basa en esta <subrayado>noticia<subrayado></texto>

El código anterior es incorrecto porque todo elemento cuyo principio se marca con una etiqueta inicial, debe marcarse con una etiqueta final que repita el nombre del elemento. En este caso, <subrayado> no se cierra.

Una alternativa correcta es la siguiente:

<texto>El titular de hoy se basa en esta <subrayado>noticia</subrayado></texto>
Probar en el navegador
No confundir XML con HTML

Igual que ocurría en el apartado c), este fragmento de código puede recordar a HTML, pero se trata de XML. Por lo tanto, no debemos modificar el nombre de las etiquetas.

El siguiente ejemplo no debería ser una alternativa:

<p>El titular de hoy se basa en esta <u>noticia</u></p>