O elemento Schema

De Manuais Informática - IES San Clemente.
Ir a la navegación Ir a la búsqueda

O elemento Schema

O elemento <schema> é o elemento raíz en cada Schema XML.

<?xml version="1.0"?>
<xs:schema>
...
...
</xs:schema>

O elemento <schema> pode conter algúns atributos. A miúdo a declaración dun schema é como a seguinte:

<?xml version="1.0"?>

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.iessanclemente.net"
xmlns="http://www.iessanclemente.net">
...
...
</xs:schema>

Os espazos de nomes

Na declaración anterior, o seguinte fragmento:

xmlns:xs="http://www.w3.org/2001/XMLSchema"

indica que os elementos e os tipos de datos empregados no schema e que levan o prefixo xs (schema, element, complexType, sequence, string, bolean, integer, etc.) proveñen do espazo de nomes (namespace) "http://www.w3.org/2001/XMLSchema".

O seguinte fragmento:

targetNamespace="http://www.iessanclemente.net"

indica que os elementos definidos neste esquema asignaranse ao espazo de nomes http://www.iessanclemente.net. que chamaremos de destino (target). Cando creemos un documento instancia XML no que usemos as etiquetas definidas neste esquema, indicarémoslle que use ese espazo de nomes.

xmlns="http://www.iessanclemente.net" indica o espazo de nomes por defecto do esquema, que será: http://www.iessanclemente.net, de forma que cando aparece unha referencia como ref="ingrediente" sen ningún prefixo, sábese que se refire á declaración do elemento ingrediente neste espazo de nomes. Nótese que o espazo de nomes por defecto aplícase só a referencias nun esquema e, por tanto, estes espazos por defecto non teñen impacto nos seus documentos instancia.

Aprende.png
INTERÉSACHE


O validador non usa o URL do namespace para buscar información. A súa función é darlle ao espazo de nomes un nome único. Con todo, as compañías adoitan usar este URL como un enlace a unha páxina web que contén información sobre o espazo de nomes. Proba a acceder á páxina http://www.w3.org/2001/XMLSchema.

Por tanto, na declaración anterior faise referencia a tres espazos de nomes con distintas funcións:

  1. O que define os Esquemas ( xmlns:xs=http://www.w3.org/2001/XMLSchema).
  2. O ( os ) de destino ( targetNamespace ) específicos do esquema construído ao que se refiren os correspondentes documentos instancia.
  3. O espazo de nomes "por defecto" que pode ser ou non un dos dous anteriores.

A continuación móstrase un exemplo de documento XML que emprega dous namespaces distintos:

<?xml version="1.0" encoding="UTF-8"?>
<continente
xmlns:xeografia="http://www.iessanclemente.net/xeografia"
xmlns:finanzas="http://www.iessanclemente.net/finanzas">

<xeografia:pais>
  <xeografia:nome>España</xeografia:nome>
  <xeografia:capital>Madrid</xeografia:capital>
  <finanzas:capital>1.438.356</finanzas:capital> 
</xeografia:pais>
</continente>

Referenciando un Schema nun documento XML

O seguinte documento XML fai unha referencia a un Schema XML:

<?xml version="1.0"?>
<correo xmlns="http://www.iessanclemente.net"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.iessanclemente.net correo.xsd">

  <destinatario>Rafael</destinatario>
  <remitente>María</remitente>
  <cabeceira>Aniversario</cabeceira>
  <corpo>Lémbrate do aniversario de Ramiro en febreiro.</corpo>
</correo>

O seguinte fragmento:

xmlns="http://www.iessanclemente.net"

especifica a declaración do espazo de nomes por defecto. Esta declaración indica ao validador de schema que todos os elementos empregados neste documento XML son declarados dentro do espazo de nomes (namespace) "http://www.iessanclemente.net".

O espazo de nomes da Instancia do Schema XML encárgase de pasar do espazo de nomes do esquema ao espazo de nomes da instancia, é dicir, relaciona o documento instancia co seu correspondente esquema.

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

Tamén poderemos usar o atributo schemaLocation. Este atributo ten dous valores. O primeiro é o nome de espazo a usar. O segundo é a localización do schema XML para usar con ese namespace.

xsi:schemaLocation="http://www.iessanclemente.net  correo.xsd"