Catálogos en XMLSpy

www.altova.com Imprimir este apartado Página anterior Subir un nivel Página siguiente

Inicio >  Guía y referencia del usuario > DTD y esquemas XML >

Catálogos en XMLSpy

XMLSpy es compatible con un subconjunto del mecanismo de catalogación XML OASIS. El mecanismo de catalogación permite a XMLSpy recuperar de carpetas locales del usuario los esquemas (y hojas de estilos y otros archivos) usados con frecuencia. Esto incrementa la velocidad global de procesamiento, permite al usuario trabajar sin conexión (es decir, sin estar conectado a una red) y mejora la portabilidad de los documentos (porque los identificadores URI se tienen que cambiar sólo en los archivos de catálogo).

 

A continuación describimos cómo funciona el mecanismo de catalogación en XMLSpy.

 

RootCatalog.xml

Al iniciarse, XMLSpy carga un archivo llamado RootCatalog.xml (cuya estructura aparece a continuación), que contiene una lista de los archivos de catálogo que se buscarán. El usuario puede modificar esta lista y añadir tantos archivos de catálogo como desee, escribiendo cada archivo en un elemento nextCatalog. XMLSpy busca cada uno de estos archivos de catálogo y sus URI se resuelven de acuerdo con las asignaciones especificadas en ellos.

 

<?xml version="1.0" encoding="UTF-8"?>

<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog"

   xmlns:spy="http://www.altova.com/catalog_ext"

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

   xsi:schemaLocation="urn:oasis:names:tc:entity:xmlns:xml:catalog Catalog.xsd">

  <nextCatalog catalog="%PersonalFolder%/Altova/%AppAndVersionName%/CustomCatalog.xml"/> 

  <nextCatalog catalog="CoreCatalog.xml"/>

  <!-- Include all catalogs under common schemas folder on the first directory level -->

  <nextCatalog spy:recurseFrom="%AltovaCommonFolder%/Schemas" catalog="catalog.xml" spy:depth="1"/>

  <!-- Include all catalogs under common XBRL folder on the first directory level -->

  <nextCatalog spy:recurseFrom="%AltovaCommonFolder%/XBRL" catalog="catalog.xml" spy:depth="1"/>

</catalog>

 

En el fragmento de código anterior, observe que en las carpetas Schemas y XBRL de la carpeta identificada con la variable %AltovaCommonFolder% están los archivos de catálogo llamados catalog.xml. (El valor de la variable %AltovaCommonFolder% se indica en la tabla que aparece más abajo.)

 

Los archivos de catálogo de la carpeta de archivos comunes de Altova realizan asignaciones entre los identificadores de sistema e identificadores públicos predefinidos de las taxonomías XBRL y los esquemas (como SVG) y los identificadores URI que apuntan a copias locales de los respectivos esquemas. Estos esquemas se instalan en la carpeta de archivos comunes de Altova cuando se instala XMLSpy. Rogamos no cree asignaciones duplicadas en estos archivos porque se pueden producir errores.

 

CoreCatalog.xml, CustomCatalog.xml y Catalog.xml

En el ejemplo de código anterior del archivo RootCatalog.xml se indica que se busquen los archivos CoreCatalog.xml y CustomCatalog.xml:

 

CoreCatalog.xml contiene ciertas asignaciones propias de Altova que sirven para localizar esquemas en la carpeta de archivos comunes de Altova.
CustomCatalog.xml es un archivo base en el que el usuario puede crear asignaciones propias. En el archivo CustomCatalog.xml puede crear asignaciones para cualquier esquema, siempre y cuando el esquema no esté controlado por los archivos de catálogo de la carpeta de archivos comunes de Altova. Para crear asignaciones use los elementos compatibles con el mecanismo de catalogación OASIS (véase más adelante).
En la carpeta de archivos comunes de Altova hay varios archivos Catalog.xml. Cada archivo está dentro de la carpeta de un esquema  en concreto dentro de la carpeta de archivos comunes de Altova. Además, cada archivo Catalog.xml realiza asignaciones entre los identificadores de sistema e identificadores públicos y los identificadores URI que apuntan a las copias locales de los respectivos esquemas.

 

Ubicación de los archivos de catálogo y los esquemas

Los archivos RootCatalog.xml y CoreCatalog.xml se instalan en la carpeta de aplicación de XMLSpy. El archivo CustomCatalog.xml está ubicado en su carpeta MisDocumentos\Altova\XMLSpy. Cada archivo catalog.xml está en una carpeta de esquema y estas carpetas están dentro de las carpetas: %AltovaCommonFolder%\Schemas y %AltovaCommonFolder%\XBRL.

 

Variables de entorno Shell y variables de Altova

En el elemento nextCatalog puede utilizar algunas variables de entorno Shell para indicar la ruta de acceso a las ubicaciones del sistema (ver el fragmento anterior del archivo RootCatalog.xml). Estas son las variables de entorno Shell compatibles:

 

%AltovaCommonFolder%

C:\Archivos de programa\Altova\Common2019

%DesktopFolder%

Ruta de acceso completa de la carpeta Escritorio del usuario actual.

%ProgramMenuFolder%

Ruta de acceso completa de la carpeta del menú Programas del usuario actual.

%StartMenuFolder%

Ruta de acceso completa de la carpeta del menú Inicio del usuario actual.

%StartUpFolder%

Ruta de acceso completa de la carpeta Inicio del usuario actual.

%TemplateFolder%

Ruta de acceso completa de la carpeta de plantillas del usuario actual.

%AdminToolsFolder%

Ruta de acceso completa del directorio del sistema de archivos que almacena las herramientas administrativas del usuario actual.

%AppDataFolder%

Ruta de acceso completa de la carpeta Datos de programa del usuario actual.

%CommonAppDataFolder%

Ruta de acceso completa del directorio de archivos que contiene datos del programa de todos los usuarios.

%FavoritesFolder%

Ruta de acceso completa de la carpeta Favoritos del usuario actual.

%PersonalFolder%

Ruta de acceso completa de la carpeta personal del usuario actual.

%SendToFolder%

Ruta de acceso completa de la carpeta SendTo del usuario actual.

%FontsFolder%

Ruta de acceso completa de la carpeta Fuentes del sistema.

%ProgramFilesFolder%

Ruta de acceso completa de la carpeta Archivos de programa del usuario actual.

%CommonFilesFolder%

Ruta de acceso completa de la carpeta Common files del usuario actual.

%WindowsFolder%

Ruta de acceso completa de la carpeta Windows del usuario actual.

%SystemFolder%

Ruta de acceso completa de la carpeta System del usuario actual.

%LocalAppDataFolder%

Ruta de acceso completa al directorio del sistema de archivos que sirve como repositorio de datos para aplicaciones locales (no roaming).

%MyPicturesFolder%

Ruta de acceso completa a la carpeta Mis imágenes.

 

Cómo funcionan los catálogos: documentos DTD

Los catálogos se suelen usar para redireccionar una llamada a una DTD hasta un URI local. Para ello es necesario realizar asignaciones, en el archivo de catálogo, entre los identificadores de sistema o públicos y el URI local pertinente. De este modo, cuando se lee la declaración DOCTYPE en un archivo XML, el identificador de sistema o público localiza el recurso local necesario con ayuda de la asignación del archivo de catálogo.

 

Para los esquemas más utilizados el identificador PUBLIC suele estar predefinido y, por tanto, sólo hace falta que el URI del archivo de catálogo apunte a la copia local correcta. Cuando se analiza el documento XML, se lee el identificador PUBLIC del documento. Si se encuentra este identificador en un archivo de catálogo, se buscará la URL correspondiente del archivo de catálogo y se leerá el esquema desde esta ubicación. Por ejemplo, imaginemos que abrimos este archivo SVG en XMLSpy:

 

<?xml version="1.0" standalone="no"?>

<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"

"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">

 

<svg width="20" height="20" xml:space="preserve">

  <g style="fill:red; stroke:#000000">

     <rect x="0" y="0" width="15" height="15"/>

     <rect x="5" y="5" width="15" height="15"/>

  </g>

</svg>

 

En este caso se leería el documento y se buscaría el identificador PUBLIC en el catálogo. Imaginemos que el archivo de catálogo contiene esta entrada:

 

<catalog>

  ...

    <public publicId="-//W3C//DTD SVG 1.1//EN" uri="schemas/svg/svg11.dtd"/>

  ...

</catalog>

 

En este caso, se encuentra un identificador PUBLIC, de modo que la búsqueda de la DTD del SVG se redirecciona al URI schemas/svg/svg11.dtd (esta ruta es relativa al archivo de catálogo) y este archivo local se usará como DTD. Si en el catálogo no hay una asignación para el identificador Public, entonces se usa la URL del documento XML (en el ejemplo anterior: http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd).

 

Cómo funcionan los catálogos: esquemas

En XMLSpy también puede usar catálogos para redireccionar a un esquema XML. En el archivo de instancia XML, la referencia al esquema sucederá en el atributo xsi:schemaLocation del elemento de documento de nivel superior del documento XML. Por ejemplo:
 

xsi:schemaLocation="http://www.xmlspy.com/schemas/orgchart OrgChart.xsd"

 

Lo normal es que la parte URI del valor del atributo (resaltada en negrita en el ejemplo anterior) sea una ruta de acceso a la ubicación del esquema propiamente dicha. Sin embargo, si al esquema se le hace referencia mediante un catálogo, la parte URI debe apuntar a un esquema XML, pero es necesario que exista para que el atributo xsi:schemaLocation siga siendo válido desde el punto de vista léxico. Por ejemplo, el valor foo sería suficiente para la parte URI del valor del atributo. El esquema se localiza en el catálogo por medio de la parte de espacio de nombres del valor del atributo xsi:schemaLocation. En el ejemplo anterior, la parte de espacio de nombres es http://www.xmlspy.com/schemas/orgchart. En el catálogo la entrada que aparece a continuación localizaría el esquema mediante la parte de espacio de nombres.

 

<uri name="http://www.xmlspy.com/schemas/orgchart" uri="C:\MySchemas\OrgChart.xsd"/>

 

 

El subconjunto de catálogos compatible con XMLSpy

Cuando cree entradas en el archivo CustomCatalog.xml (o en cualquier otro archivo de catálogo que sea leído por XMLSpy), utilice únicamente los elementos que aparecen a continuación de la especificación de catálogos OASIS. En la lista que aparece más adelante explicamos los valores de los atributos de cada elemento. Si desea consultar una descripción más detallada, visite la página de la especificación XML Catalogs. Recuerde que todos  los elementos puede tomar el atributo xml:base, que se usa para especificar el URI base del elemento.

 

<public publicId="IDPúblico del Recurso" uri="URL del archivo local"/>
<system systemId="IDdeSistema del Recurso" uri="URL del archivo local"/>
<uri name="nombreDeArchivo" uri="URL del archivo identificado con el nombre de archivo"/>
<rewriteURI uriStartString="StartString del URI que se debe volver a escribir" rewritePrefix="Cadena que debe sustituir a StartString"/>
<rewriteSystem systemIdStartString="StartString del IDdeSistema" rewritePrefix="Cadena de sustitución para localizar el recurso localmente"/>

 

Cuando no exista un identificador público, como es el caso de casi todas las hojas de estilos, el identificador de sistema se puede asignar directamente a una URL con el elemento system. Además, un URI se puede asignar a otro URI con el elemento uri. Los elementos rewriteURI y rewriteSystem sirven para volver a escribir la parte inicial de un URI o identificador de sistema respectivamente. Gracias a ello se puede sustituir el principio de la ruta de acceso de un archivo y, por consiguiente, se puede apuntar a otro directorio. Para más información sobre estos elementos, consulte la especificación XML Catalogs.

 

A partir de la versión 2014, XMLSpy cumple gran parte de la especificación XML Catalogs (OASIS Standard V1.1, 7 de octubre de 2005). Esta especificación separa estrictamente las consultas por identificador externo (las realizadas con un ID público o de sistema) de las búsquedas por URI (los URI que no son ID públicos ni de sistema). Por tanto, los URI de espacio de nombres deben entenderse como simples URI (no como ID públicos ni de sistema) y deben usarse en búsquedas por URI en lugar de en búsquedas por identificador externo. En las versiones de XMLSpy anteriores a la versión 2014, los URI de espacio de nombres del esquema se traducían mediante asignaciones <public>. Sin embargo, a partir de la versión 2014 es necesario utilizar asignaciones <uri>.

 

Antes de la versión v2014:  <public publicID="http://www.MiAsignación.com/ref"  uri="file:///C:/MisDocs/Catalog/test.xsd"/>

A partir de la versión 2014:  <uri name="http://www.MiAsignación.com/ref"  uri="file:///C:/MisDocs/Catalog/test.xsd"/>

 

Extensiones de archivo y edición inteligente basada en un esquema

Mediante los archivos de catálogo también puede especificar a qué tipo de documentos (según su extensión de archivo) se les puede aplicar las funciones de edición inteligente de XMLSpy de acuerdo con las reglas del esquema que usted indique. Por ejemplo, si crea la extensión de archivo personalizada .myhtml para archivos (HTML) que deben ser válidos con respecto a la DTD HTML, entonces puede habilitar la función de edición inteligente para los archivos que tengan esta extensión. Para ello, añada el elemento que aparece a continuación al archivo de catálogo CustomCatalog.xml y como elemento secundario del elemento <catalog> :

 

<spy:fileExtHelper ext="myhtml" uri="schemas/xhtml/xhtml1-transitional.dtd"/>

 

Así se habilita la función de edición inteligente (finalización automática, ayudantes de entrada, etc.) para archivos .myhtml en XMLSpy en base a la DTD transicional XHTML 1.0. Consulte el archivo catalog.xml de la carpeta %AltovaCommonFolder%\Schemas\xhtml, que contiene entradas similares a este ejemplo.

 

Especificaciones de XML Schema

La información de la especificación XML Schema está integrada en XMLSpy y esta información interna se usa para validar los documentos de esquema XML (.xsd). Por tanto, en los documentos de esquema XML no se deberían hacer referencia a ningún esquema que defina la especificación XML Schema.

 

El archivo catalog.xml de la carpeta %AltovaCommonFolder%\Schemas\schema contiene referencias a documentos DTD que implementan especificaciones antiguas de XML Schema. Rogamos no valide sus documentos de esquema XML con estos esquemas. Los archivos referenciados se incluyen con el único objetivo de aportar información a XMLSpy para sus ayudantes de entrada, en caso de que el usuario quiera crear documentos basados en estas recomendaciones.

 

Más información

Para más información, consulte la especificación XML Catalogs.

 


© 2019 Altova GmbH