Skip To Content

Clientes de CSW

En este tema

Clientes de CSW para ArcGIS

Descargar: Consulte el sitio de Geoportal Server CSW Client GitHub para descargar la versión más reciente del cliente CSW.

Los Clientes de CSW proporcionan la funcionalidad de descubrimiento del Geoportal a sus aplicaciones ArcMap y ArcGIS Explorer. Estas habilitan la búsqueda de catálogo Servicio de catálogos de OGC para la web (CS-W) directamente a través de ArcMap y ArcGIS Explorer. Una vez se devuelven los recursos, estos se pueden ver o descargar. Adicionalmente, si los recursos son servicios en directo, estos se pueden agregar al documento ArcMap o ArcGIS Explorer Globe. En ArcMap, hay funcionalidades adicionales que permiten que los usuarios obtengan una vista previa de la extensión espacial del recurso. Para aprender más sobre la manera en que el geoportal usa CS-W, consulte Servicio de catálogos del geoportal. En la sección que aparece a continuación puede encontrar información sobre la instalación, uso y personalización de los Clientes de CSW.

Nota:

El cliente de CSW para ArcGIS Explorer es compatible con las versiones 1200, 1500 y 1700 de ArcGIS Explorer.

Instalar los Clientes de CSW para ArcGIS

Pasos para instalar

Precaución:

Si ha instalado el cliente CSW en el mismo equipo anteriormente y va a actualizarlo, asegúrese de desinstalar la versión anterior (Windows > Agregar/Quitar programas. Si usó el Cliente de CSW en ArcGIS Explorer, deberá eliminar el archivo CSWSearchDockWindow.eaz de su directorio \\Application Data\ESRI\ArcGIS Explorer\AddIns y también deberá eliminar la carpeta Caché de ese mismo directorio. Si no los elimina, su Cliente de CSW hará referencia a la versión anterior del add-in del Cliente de CSW de ArcGIS Explorer.

  1. Descargue la versión más reciente del cliente CSW en el sitio de Geoportal Server CSW Client GitHub.
  2. Ejecute setup.exe para los Clientes de CSW.
  3. Siga las instrucciones en el asistente de configuración. El instalador le dará la opción de una instalación completa o personalizada. Una instalación personalizada le permite elegir si desea instalar los Clientes de CSW para ArcMap y ArcGIS Explorer o solamente para uno de los dos.
  4. Durante la instalación, el instalador verifica la presencia del ArcGIS .NET framework. Si no encuentra el .NET Framework, no se instalará el Cliente de CSW para ArcGIS Desktop. Sin embargo, la instalación continuará para el Cliente de CSW para ArcGIS Explorer y aparecerá un cuadro de diálogo que le notificará sobre el estado de la instalación.

Agregue el Cliente de CSW a ArcMap

  1. Inicie ArcGIS Desktop. El Cliente de CSW se usa con el componente ArcMap de ArcGIS Desktop.
  2. Haga clic en Personalizar, > Personalizar modo. Aparece la ventana Personalizar.
  3. Haga clic en la pestaña Comandos de la ventana Personalizar.
  4. Desplácese hacia abajo a través de la lista de comandos y seleccione Geoportal. El icono del cliente de CSW aparecerá en la ventana Comandos a la derecha.
  5. Arrastre el icono del Cliente de CSW a cualquier espacio en blanco en la barra de herramientas en ArcMap que desee.
  6. Cierre la ventana Personalizar.

Agregue el Cliente de CSW a ArcGIS Explorer

  1. Abra la aplicación ArcGIS Explorer.
  2. En la parte superior de la aplicación, haga clic en el botón ArcGIS Explorer en la esquina superior izquierda. Se muestra un menú.
  3. Haga clic en el botón Opciones de ArcGIS Explorer. Aparece la ventana Opciones ArcGIS Explorer.
  4. Haga clic en Recursos del menú a la izquierda. La pantalla a la derecha se llena con varios grados. Haga clic en el botón Add-Ins a la derecha del grado Administrar Add-Ins.
  5. Se abre otra ventana en la que puede ver y administrar Add-Ins. Haga clic en el botón Agregar a la derecha de la ventana y examine el archivo de Clientes de CSW con el nombre CSWSearchDockWindow.eaz. La ubicación de instalación predeterminada para este archivo es C:\Program Files\ESRI\Geoportal\CSWClients .
  6. Haga clic en Abrir para cargar el add-in CSWSearchDockWindow.eaz.
  7. Cuando cierre el cuadro de diálogo Add-in, es posible que se le pida que reinicie la aplicación ArcGIS Explorer. después de que ésta se reinicia, el Cliente de CSW siempre estará disponible de manera predeterminada a menos que elija eliminarlo de la lista de Add-In.
  8. Obtenga acceso al Cliente de CSW haciendo clic en la pestaña Add-In en la parte superior de la aplicación ArcGIS Explorer.

El Cliente de CSW ahora está listo para usarlo. Lea la siguiente sección para saber cómo usar el cliente de CSW y consulte El archivo CswClient.log para los clientes de CSW para obtener información sobre el registro.

Usar los Clientes de CSW para ArcGIS

Los Clientes de CSW se usan de la misma manera en ArcMap y ArcGIS Explorer. A continuación se describe cómo hacer la búsqueda de un catálogo de recursos, la vista de metadatos, descargar metadatos y agregar un recurso al mapa. En ArcMap, haga clic en el botón del cliente de CSW botón para abrir la herramienta. En ArcGIS Explorer, seleccione la pestaña Add-Ins y seleccione Cliente de CSW para abrir la tarea.

Búsqueda de un catálogo

Para realizar una búsqueda:

  1. Haga clic en la pestaña Buscar.
  2. Escriba un término en el cuadro de texto Buscar.
    Nota:

    Si no introduce criterios de búsqueda, el número máximo de resultados que puede obtener es 100. Si intenta obtener más de 100, recibirá el mensaje "no se encontraron resultados".

  3. Elija uno de los servicios del catálogo del menú desplegable En el catálogo. Para configurar catálogos adicionales vea Configuración de perfiles y catálogos adicionales.
  4. Introduzca parámetros para refinar adicionalmente su búsqueda (opcional). Los parámetros de búsqueda se describen a continuación.
    • Solamente Datos y mapas en vivo: la búsqueda se puede limitar a los recursos de servicio en vivo si se marca la casilla Solamente Datos y mapas en vivo. Los servicios en vivo se pueden agregar al documento de ArcMap o ArcGIS Explorer como una capa.
      Nota:

      Si no ha introducido un término de búsqueda pero marca la casilla Solamente mapas y datos en directo, es posible recuperar más de 100 registros ya que la consulta de búsqueda entonces se llena con un parámetro de búsqueda, tipo contenido = servicio en directo.

    • Máximo: para limitar la cantidad de registros devueltos en los resultados de la búsqueda, cambie el valor en el cuadro Máximo. El límite es 500 cuando se introducen parámetros de búsqueda y 100 para una búsqueda sin parámetros.
    • Usar extensión actual (solamente ArcMap): si ya hay una extensión definida en la ventana del documento de ArcMap, esta casilla puede estar marcada y el cliente de CSW solamente recuperará resultados que se encuentren en la extensión definida. Algunas URL de servicio de CSW no habilitan solicitudes de extensión, así que esto podría afectar la cantidad de resultados devueltos.

  5. Haga clic en el botón Encontrar para ejecutar la búsqueda. Los resultados se presentan en la ventana Resultados. Para cada recurso de resultado devuelto, en la ventana Resumen visualizará la información resumida para el recurso seleccionado si se proporciona información resumida de sus metadatos.

Usar los resultados de la búsqueda

Observe las herramientas ubicadas encima de la ventana Resultados . Hay siete botones que se visualizan, representando la funcionalidad relacionada con los resultados de la búsqueda. La funcionalidad asociada con cada botón se describe a continuación.

  • La herramienta Ver metadatos abrirá el documento de metadatos del recurso como XML en una ventana nueva.
  • La herramienta Descargar metadatos permite descargar y guardar el XML de metadatos del recurso.
  • La herramienta Agregar al mapa agregará el servicio descrito por el recurso al mapa o el globo como una capa nueva. Este botón estará atenuado a menos que el recurso tenga un tipo de contenido de "Mapas y datos en directo". Si hace clic en el botón Agregar al mapa y no se agregan datos al mapa, es posible que los metadatos del recurso no incluyan información del servicio. Para visualizar el servicio en vivo, se debe proporcionar información de conexión del servicio en el xml de metadatos para ese recurso.
  • Los siguientes cuatro están relacionados con la visualización de la huella espacial del recurso en la ventana del mapa actual. La extensión que se muestra en la huella corresponde al cuadro de límite definido en los metadatos del recurso.
    • La herramienta Visualizar huella mostrará la extensión del recurso seleccionado superpuesta en el documento de mapa.
    • La herramienta Acercar a huella acercará a la extensión del recurso seleccionado. Esto es especialmente útil si la extensión es una pequeña región o el mapa base usa una proyección diferente.
    • La herramienta Mostrar todas las huellas agregará todas las huellas de la ventana Resultados al mapa de una vez. Para ocultarlas, haga clic en el mismo botón de nuevo.
    • La herramienta Borrar todas las huellas eliminará todas las huellas que se hayan agregado al mapa.
Utilice estas herramientas para ver los metadatos del recurso, descárguelos y agregue el servicio o su huella al mapa o globo.

Cómo funcionan los Clientes de CSW

Los Clientes de CSW necesitan tres piezas de información para recuperar los registros de un servicio de catálogos para visualizarlos en ArcMap o ArcGIS Explorer.

  1. Una URL GetCapabilities al catálogo: se trata de entradas en el campo URL del servicio de catálogos en la pestaña Configurar de los clientes de CSW. La URL GetCapabilities proporciona el extremo del catálogo para los cuales los Clientes de CSW envían la solicitud de búsqueda y desde donde recibe la respuesta.
  2. Criterios de búsqueda: se introducen en los campos de la pestaña Buscar de los clientes de CSW. El criterio de búsqueda define qué recursos devuelven los Clientes de CSW. El criterio de búsqueda actúa como filtros, como cuando se filtra por medio de un término de búsqueda, si los datos deben ser solamente Datos en directo y el número máximo de los resultados de búsqueda devueltos.
  3. Un perfil de catálogo: el perfil del servicio de catálogos se selecciona desde un menú desplegable de la pestaña Configurar de los clientes de CSW. La designación del perfil del catálogo indica a los Clientes de CSW qué perfil utiliza el servicio de catálogos. La asignación entre el servicio de catálogos y su perfil se define en un archivo denominado CSWCatalogs.xml. El archivo se actualiza cada vez que se configura un catálogo nuevo con la pestaña Configurar de los clientes de CSW. Los Clientes de CSW hacen referencia a CSWCatalogs.xml para descubrir qué perfil usa el catálogo. La lista de perfiles disponibles se define en otro archivo, CSWProfiles.xml. Este perfil indicará los archivos xslt que se usarán para formular las solicitudes entre los clientes de CSW y el catálogo.
Los clientes de CSW mantienen una lista de perfiles compatibles en un archivo denominado CSWProfiles.xml. Vaya al directorio \\CSWClients\Data y abra el archivo CSWProfiles.xml. Tenga en cuenta que para cada perfil de la lista hay tres archivos xslt a los que se hace referencia: GetRecords_Request, GetRecords_Response y GetRecordByID_Response. Estos tres xslt transforman las solicitudes y respuestas a y desde el servicio de catálogos para la interacción con la interfaz ArcMap o ArcGIS Explorer. Un extracto del archivo CSWProfiles.xml que muestra el perfil del Geoportal de ArcGIS Server, se muestra a continuación.
<?xml version="1.0" encoding="utf-8" ?> 
<CSWProfiles> 
<!-- OGCCORE ESRI GPT -->
 <Profile>
 <ID>urn:ogc:CSW:2.0.2:HTTP:OGCCORE:ESRI:GPT</ID> 
<Name>ArcGIS Server Geoportal</Name>
 <CswNamespace>http://www.opengis.net/cat/csw/2.0.2</CswNamespace> 
<Description /> 
<GetRecords>
 <XSLTransformations> 
<Request>CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecords_Request.xslt</Request>
 <Response>CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecords_Response.xslt</Response>
 </XSLTransformations>
</GetRecords>
 <GetRecordByID> 
<RequestKVPs>
 <![CDATA[service=CSW&request=GetRecordById&version=2.0.2&ElementSetName=full]]> 
</RequestKVPs>
 <XSLTransformations> 
<Response>CSW_2.0.2_OGCCORE_ESRI_GPT_GetRecordByID_Response.xslt</Response>
 </XSLTransformations> 
</GetRecordByID> 
<SupportSpatialQuery>True</SupportSpatialQuery>
 <SupportContentTypeQuery>True</SupportContentTypeQuery> 
<SupportSpatialBoundary>True</SupportSpatialBoundary> 
</Profile>

Flujo de información usando los xslt

Conceptualmente, hay tres espacios de interacción al usar los clientes de CSW: la interfaz de usuario (IU) de los clientes de CSW, la actividad de traducción de los clientes de CSW y el servicio de catálogos con el que interactúan los clientes de CSW. Las interacciones se llevan a cabo cuando el usuario inicia una búsqueda mediante los Clientes de CSW y cuando el usuario inicia la comunicación con el servicio de catálogos mediante los botones Vista de metadatos, Descargar metadatos, Agregar al mapa y Vista de huella de los Clientes de CSW. Los tres diagramas a continuación muestran la manera en que la UI, la actividad de traducción de los Clientes de CSW y el servicio de catálogos interactúan para llevar a cabo y visualizar la información de metadatos en ArcMap o ArcGIS Explorer.

  • Solicitud inicial a un servicio

    El flujo de comunicación inicial para la solicitud y respuesta de CS-W se muestra en el siguiente diagrama y una explicación de los pasos numerados sigue a continuación.

    1. Cuando un usuario hace clic en el botón Buscar para los Clientes de CSW, los Clientes de CSW hacen referencia al archivo CSWCatalogs.xml para encontrar el perfil correspondiente para ese servicio de catálogos. El perfil correspondiente determina cuáles archivos GetRecordsRequest, GetRecordsResponse y GetRecordByID_Response se usarán. Luego, los Clientes de CSW crean un xml genérico. El xml genérico se ve así:
      <csw:GetRecords version="2.0.2" service="CSW"
      resultType="RESULTS" startPosition="1" maxRecords="10"
      xmlns:csw="http://www.opengis.net/cat/csw/2.0.2">
      <csw:Query typeNames="csw:Record"
      xmlns:ogc="http://www.opengis.net/ogc"
      xmlns:dc="http://purl.org/dc/elements/1.1/"
      xmlns:gml="http://www.opengis.net/gml">
      <csw:ElementSetName>full</csw:ElementSetName>
      <csw:Constraint version="1.0.0">
      <ogc:Filter xmlns="http://www.opengis.net/ogc">
      <ogc:And>
      <ogc:PropertyIsLike wildCard="" escape=""
      singleChar="">
      <ogc:PropertyName>AnyText</ogc:PropertyName>
      <ogc:Literal>wms</ogc:Literal>
      </ogc:PropertyIsLike>
      <ogc:PropertyIsEqualTo>
      <ogc:PropertyName>Format</ogc:PropertyName>
      <ogc:Literal>liveData</ogc:Literal>
      </ogc:PropertyIsEqualTo>
      </ogc:And>
      </ogc:Filter>
      </csw:Constraint>
      </csw:Query>
      </csw:GetRecords>
      
      Observe cuidadosamente qué información se está transfiriendo en este fragmento de código. Cada bit de información corresponde a lo que se introducen en la UI de los Clientes de CSW. En el elemento GetRecords, hay un atributo que indica cuántos registros se recuperarán - maxRecords y en este ejemplo se devolverán diez registros. Hay un elemento que define el término de búsqueda que se introduce - PropertyName AnyText y en este ejemplo el término de búsqueda es 'wms'. Entonces hay un parámetro para recuperar el tipo de contenido del documento, si está disponible - formato PropertyName y en este ejemplo, los registros a recuperar deben estar en Datos en directo (la casilla de verificación Solamente mapas y datos en directo en la UI).
      Nota:

      Puede haber parámetros adicionales en este xml genérico para la extensión espacial, categoría de tema ISO y fecha de modificación. Los parámetros para el tema de ISO y la fecha de modificación son para usarlos dentro de la aplicación web del geoportal nada más y no se deben especificar para usarlos con los Clientes de CSW.

    2. Los Clientes de CSW interpretan el XML genérico y aplican una transformación de acuerdo con GetRecords_Request.xslt que traduce el XML en un GetRecordsRequest de CS-W de manera que el servicio de catálogos pueda interpretar el criterio de búsqueda.
    3. El xml transformado se pasa como una GetRecordsRequest al servicio de catálogos.
    4. El servicio de catálogos responde con una lista de registros que coincide con el criterio de búsqueda, formateado en sintaxis de CS-W.
    5. El Cliente de CSW aplica el GetRecords_Response.xslt para traducir la respuesta del servicio de catálogos en registros resultantes para que los visualice a través de la interfaz del Cliente de CSW. Resumen, información de la huella para los botones de huella y si los registros son Datos en directo también se devuelven para cada registro.

  • Botones Vista de metadatos y Descargar metadatos Para los botones Vista de metadatos y Descargar datos, los Clientes de CSW no necesitan aplicar hojas de estilo para interpretar las entradas del usuario o visualizar la respuesta del servicio de catálogos. En lugar de eso, los Clientes de CSW usan las solicitudes y respuestas de GetRecordById nativa del servicio de catálogos para recuperar los metadatos. Este flujo de comunicación se muestra en el siguiente diagrama y a continuación se encuentra una explicación de los pasos numerados.

    1. Cuando un usuario hace clic en los botones Vista de metadatos o Descargar metadatos, los Clientes de CSW solicitan el documento de metadatos completo para el registro con la solicitud GetRecordById innata del servicio de catálogos definida en su GetCapabilities.
    2. El servicio de catálogos responde con una respuesta GetRecordById y los metadatos completos se devuelven a la interfaz de usuario.

  • Botón Agregar al mapa Una transformación adicional, denominada GetRecordByID_Response.xslt, entra a participar cuando el usuario hace clic en el botón Agregar al mapa. El flujo de comunicación se muestra en el siguiente diagrama y a continuación se encuentra una explicación de los pasos numerados.

    1. Cuando un usuario hace clic en el botón Agregar al mapa o Agregar huellas, los Clientes de CSW recuperan la respuesta GetRecordByID del servicio de catálogos.
    2. Los Clientes de CSW entonces aplican el GetRecordByID_Response.xslt a la respuesta para extraer la URL que se usa para el servicio en directo.
    3. La URL entonces se envía a la interfaz de usuario para Agregar al mapa o la huella de los metadatos como se define por medio de la información del sobre en los metadatos.

Cómo configurar catálogos adicionales

Los Clientes de CSW están configurados previamente para buscar Geospatial OneStop - el catálogo núcleo GOS2 OGC en la interfaz de búsqueda, de manera predeterminada. Pero, si desea buscar un servicio de catálogos diferente que Geospatial OneStop, es posible al registrar el servicio de catálogos en la pestaña Configurar de los Clientes de CSW.

  • Cómo registrar un servicio de catálogos para usar en los Clientes de CSW

    1. Empiece haciendo clic en la pestaña Configurar. En esta pestaña verá tres campos de entrada y tres botones. Introducirá información a estos campos que define la conexión al servicio de catálogos y proporcionará el nombre para el servicio en la interfaz de usuario.
    2. Haga clic en el icono el botón Nuevo para borrar el formulario para la entrada del servicio de su nuevo catálogo.
    3. En el cuadro de entrada URL del servicio de catálogos, escriba la dirección URL de GetCapabilities del servicio que vaya a agregar. Si está registrando un servicio de catálogos geoportal 10, el formato de la URL será parecido al siguiente:
      http://serverName/geoportal/csw/discovery?Request=GetCapabilities&Service=CSW&Version=2.0.2
      
    4. En la lista desplegable Perfil, especifique el perfil que utiliza el servicio de catálogos. Algunas veces es posible encontrar esta información al pegar la URL GetCapabilities URL en un navegador web y leer la respuesta resultante para encontrar pistas. Si no puede determinar el perfil al observar la respuesta GetCapabilities, es posible que tenga que comunicarse con la organización host del servicio de catálogos y preguntar sobre el perfil. Si está registrando un servicio de catálogos 10 del geoportal, el perfil será el perfil de geoportal de ArcGIS Server. Si el servicio de catálogos usa un perfil que no está en la lista desplegable predeterminada, puede agregar el perfil. Vea Cómo crear y agregar un nuevo perfil para obtener instrucciones.
    5. Proporcione un nombre de visualización para el servicio de catálogos al escribir un nombre en el campo Nombre de visualización.
    6. Haga clic en el icono el botón Guardar para agregar el catálogo nuevo a la lista de catálogos.
    7. Ahora, active la pestaña Buscar. Su recién registrado servicio de catálogos deberá aparecer en la lista desplegable En el catálogo.

  • Cómo actualizar un servicio de catálogos existente de la lista

    1. Haga clic en la pestaña Configurar.
    2. Resalte el servicio de catálogos que se actualizará en la lista Catálogos. La URL del servicio de catálogos, el perfil y el nombre de visualización se cargarán en la interfaz.
    3. Haga sus cambios a estos campos.
    4. Haga clic en el icono el botón Guardar.

  • Cómo eliminar un servicio de catálogos existente de la lista

    1. Haga clic en la pestaña Configurar.
    2. Resalte el servicio de catálogos que desea eliminar de la lista de catálogos registrada.
    3. Haga clic en el icono el botón Eliminar.
    4. El sistema mostrará un cuadro de diálogo de confirmación. Haga clic en para confirmar la eliminación.

Cómo crear y agregar un nuevo perfil

Si desea registrar un servicio de catálogos que no utiliza uno de los perfiles que los Clientes de CSW de manera predeterminada, entonces deberá crear los tres xslt para recuperar los resultados de la búsqueda y extraer la URL utilizada para agregar datos en directo al mapa. Se hace referencia a estos tres archivos en la sección Cómo funcionan los clientes de CSW. después de crear estos tres archivos xslt, debe hacer referencia a los mismos con una nueva entrada del perfil en el archivo CSWProfiles.xml. La sección a continuación proporciona detalles acerca de cómo crear cada xslt y luego cómo agregar la referencia al archivo CSWProfiles.xml.

  • Creación de GetRecords_Request.xslt

    Recuerde que los Clientes de CSW aplican una transformación que traduce el XML genérico de la interfaz de usuario de los Clientes de CSW en CS-W GetRecordsRequest que el servicio de catálogos puede interpretar. El fragmento de código a continuación muestra un GetRecords_Request.xslt genérico con anotación en las secciones comentadas que describen los detalles de partes importantes del archivo. Copie este texto en un editor de texto como Notepad y haga los ajustes que se describen en los comentarios.

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="xml" indent="no" encoding="UTF-8"
    omit-xml-declaration="yes"/>
    <xsl:template match="/">
    <xsl:element name="csw:GetRecords"
    use-attribute-sets="GetRecordsAttributes"
    xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
    xmlns:ogc="http://www.opengis.net/ogc"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:gml="http://www.opengis.net/gml">
    <csw:Query typeNames="csw:Record">
    <csw:ElementSetName>full</csw:ElementSetName>
    <csw:Constraint version="1.0.0">
    <ogc:Filter xmlns="http://www.opengis.net/ogc">
    <ogc:And>
    
    <!-- CSW Client must retrieve the following information to
    define the search the user specifies in the User Interface:
    'KeyWord' corresponds to the search term the user inputs,
    'LiveDataMap' corresponds to if the user specifies "Live Data and
    Maps Only", and 'Envelope' specifies the bounding box for a search
    based on the current extent of the ArcMap window. The 'tmpltDate'
    corresponds to searching a catalog via the Geoportal, in the
    Additional Options, Modified Date search on the Search page.
    -->
    <!-- Key Word search -->
    <xsl:apply-templates select="/GetRecords/KeyWord"/>
    <!-- LiveDataOrMaps search -->
    <xsl:apply-templates select="/GetRecords/LiveDataMap"/>
    <!-- Envelope search, e.g. ogc:BBOX -->
    <xsl:apply-templates select="/GetRecords/Envelope"/>
    <!-- Date Range Search -->
    <xsl:call-template name="tmpltDate"/>
    </ogc:And>
    </ogc:Filter>
    </csw:Constraint>
    </csw:Query>
    </xsl:element>
    </xsl:template>
    
    <!-- key word search : This template is used to pass the search
    term to the catalog service. The PropertyName 'AnyText' is
    variable, depending on what your catalog service accepts. 'AnyText'
    will search all fields, irrespective of which XML element. If you
    wanted to search only the title or abstract, you could change this
    PropertyName parameter accordingly. The 'PropertyIsLike' elements
    (wildCard="" escape= "" singleChar="") are specific to the CSW
    specification your catalog service follows. -->
    <xsl:template match="/GetRecords/KeyWord"
    xmlns:ogc="http://www.opengis.net/ogc">
    <xsl:if test="normalize-space(.)!=''">
    <ogc:PropertyIsLike wildCard="" escape=""
    singleChar="">
    <ogc:PropertyName>AnyText</ogc:PropertyName>
    <ogc:Literal>
    <xsl:value-of select="."/>
    </ogc:Literal>
    </ogc:PropertyIsLike>
    </xsl:if>
    </xsl:template>
    
    <!-- LiveDataOrMaps search: This template is used to pass the
    requirement to retrieve only live data/map records from the catalog
    service. The PropertyName 'Format' depends on the parameter your
    catalog service accepts to define the type of resource the
    resulting record describes. The Literal element "liveData" can be
    changed to indicate the term your service may use to retrieve live
    data records.-->
    <xsl:template match="/GetRecords/LiveDataMap"
    xmlns:ogc="http://www.opengis.net/ogc">
    <xsl:if test="translate(normalize-space(./text()),'true',
    'TRUE') ='TRUE'">
    <ogc:PropertyIsEqualTo>
    <ogc:PropertyName>Format</ogc:PropertyName>
    <ogc:Literal>liveData</ogc:Literal>
    </ogc:PropertyIsEqualTo>
    </xsl:if>
    </xsl:template>
    
    <!-- Envelope search: This template is used to define a bounding
    box for resulting records returned from the catalog service if the
    "Use Current Extent" option is selected (ArcMap CSW Client only).
    Resulting records must fall within this bounding box. Do not change
    the PropertyName, Box, or coordinates elements.-->
    <xsl:template match="/GetRecords/Envelope"
    xmlns:ogc="http://www.opengis.net/ogc">
    <!-- generate BBOX query if minx, miny, maxx, maxy are provided
    -->
    <xsl:if test="./MinX and ./MinY and ./MaxX and ./MaxY">
    <ogc:BBOX xmlns:gml="http://www.opengis.net/gml">
    <ogc:PropertyName>Geometry</ogc:PropertyName>
    <gml:Box
    srsName="http://www.opengis.net/gml/srs/epsg.xml#4326">
    <gml:coordinates>
    <xsl:value-of select="MinX"/>,<xsl:value-of
    select="MinY"/>,<xsl:value-of
    select="MaxX"/>,<xsl:value-of select="MaxY"/>
    </gml:coordinates>
    </gml:Box>
    </ogc:BBOX>
    </xsl:if>
    </xsl:template>
    
    <!-- tmpltDate: This template is used to define the date range
    for when resulting records returned from the catalog service were
    modified. This is only used for the geoportal search, and not the
    CSW Client search. This section needs to be included only if you
    want to apply your custom profile to the geoportal itself as well
    as the CSW Client (the custom profile would appear in the dropdown
    list of profiles when a publisher user registers a CSW repository).
    Do not change this section.-->
    <xsl:template name="tmpltDate"
    xmlns:ogc="http://www.opengis.net/ogc">
    <xsl:if
    test="string-length(normalize-space(/GetRecords/FromDate/text()))
    &gt; 0">
    <ogc:PropertyIsGreaterThanOrEqualTo>
    <ogc:PropertyName>Modified</ogc:PropertyName>
    <ogc:Literal><xsl:value-of
    select="normalize-space(/GetRecords/FromDate/text())"/>
    </ogc:Literal>
    </ogc:PropertyIsGreaterThanOrEqualTo>
    </xsl:if>
    <xsl:if
    test="string-length(normalize-space(/GetRecords/ToDate/text()))
    &gt; 0">
    <ogc:PropertyIsLessThanOrEqualTo>
    <ogc:PropertyName>Modified</ogc:PropertyName>
    <ogc:Literal><xsl:value-of
    select="normalize-space(/GetRecords/ToDate/text())"/></ogc:Literal>
    
    </ogc:PropertyIsLessThanOrEqualTo>
    </xsl:if>
    </xsl:template>
    <xsl:attribute-set name="GetRecordsAttributes">
    <xsl:attribute
    name="version">2.0.2</xsl:attribute>
    <xsl:attribute name="service">CSW</xsl:attribute>
    <xsl:attribute
    name="resultType">RESULTS</xsl:attribute>
    <xsl:attribute name="startPosition">
    <xsl:value-of select="/GetRecords/StartPosition"/>
    </xsl:attribute>
    <xsl:attribute name="maxRecords">
    <xsl:value-of select="/GetRecords/MaxRecords"/>
    </xsl:attribute>
    </xsl:attribute-set>
    </xsl:stylesheet>
    
    Cuando termine la edición del texto, guarde el archivo como 'GetRecords_Request.xslt'.
  • Creación de GetRecords_Response.xslt

    Recuerde que los Clientes de CSW aplican una transformación que traduce la respuesta del servicio de catálogos al criterio de búsqueda presentado en los registros resultantes para que lo muestre la interfaz del cliente de CSW. El fragmento de código a continuación muestra un GetRecords_Response.xslt genérico con anotación en las secciones comentadas que describen los detalles de partes importantes del archivo. Copie este texto en un editor de texto y haga los ajustes que se describen en los comentarios. Observe que en donde se hace referencia a los elementos de metadatos específicos en enunciados seleccionados en este ejemplo, debe verificar el esquema de metadatos que su servicio de catálogos utiliza y que los elementos seleccionados cumplen con ese esquema. Por ejemplo, en el elemento <ID> a continuación, el ejemplo muestra que el elemento dc:identifier estará seleccionado. Esto es correcto si la respuesta del servicio de catálogos se basa en el Núcleo Dublín. Pero si la respuesta de su servicio de catálogos se basa en ISO 19139, el enunciado seleccionado del elemento de <ID> se debe cambiar a gmd:fileIdentifier/gco:CharacterString en su lugar.

    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:csw="http://www.opengis.net/cat/csw/2.0.2"
    xmlns:dct="http://purl.org/dc/terms/"
    xmlns:ows="http://www.opengis.net/ows"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    exclude-result-prefixes="csw dc dct ows">
    <xsl:output method="xml" indent="no" encoding="UTF-8"
    omit-xml-declaration="yes" />
    <xsl:template match="/">
    <xsl:choose>
    <!-- if CSW response returns some exception, do the following
    -->
    <xsl:when test="/ows:ExceptionReport">
    <exception>
    <exceptionText>
    <xsl:for-each
    select="/ows:ExceptionReport/ows:Exception">
    <xsl:value-of select="ows:ExceptionText"/>
    </xsl:for-each>
    </exceptionText>
    </exception>
    </xsl:when>
    <xsl:otherwise>
    <Records>
    <xsl:attribute name="maxRecords">
    <xsl:value-of
    select="/csw:GetRecordsResponse/csw:SearchResults/@numberOfRecordsMatched"/>
    
    </xsl:attribute>
    <xsl:for-each
    select="/csw:GetRecordsResponse/csw:SearchResults/csw:Record |
    /csw:GetRecordsResponse/csw:SearchResults/csw:BriefRecord |
    /csw:GetRecordByIdResponse/csw:Record |
    /csw:GetRecordsResponse/csw:SearchResults/csw:SummaryRecord">
    
    <Record>
    <ID>
    <xsl:choose>
    <xsl:when
    test="string-length(normalize-space(dc:identifier[@scheme='urn:x-esri:specification:ServiceType:ArcIMS:Metadata:DocID']/text()))
    > 0">
    <xsl:value-of
    select="normalize-space(dc:identifier[@scheme='urn:x-esri:specification:ServiceType:ArcIMS:Metadata:DocID'])"/>
    
    </xsl:when>
    <xsl:otherwise>
    <xsl:value-of select="normalize-space(dc:identifier)"/>
    </xsl:otherwise>
    </xsl:choose>
    </ID>
    <Title>
    <xsl:value-of select="dc:title"/>
    </Title>
    <Abstract>
    <xsl:value-of select="dct:abstract"/>
    </Abstract>
    <Type>
    <xsl:value-of select="dc:type"/>
    </Type><!--each profile could have a different type of
    bounding box. Some of have two, some have four. This one has four
    -->
    <LowerCorner>
    <xsl:value-of
    select="ows:WGS84BoundingBox/ows:LowerCorner"/>
    </LowerCorner>
    <UpperCorner>
    <xsl:value-of
    select="ows:WGS84BoundingBox/ows:UpperCorner"/>
    </UpperCorner>
    <MaxX>
    <xsl:value-of
    select="normalize-space(substring-before(ows:WGS84BoundingBox/ows:UpperCorner,
    ' '))"/>
    </MaxX>
    <MaxY>
    <xsl:value-of
    select="normalize-space(substring-after(ows:WGS84BoundingBox/ows:UpperCorner,
    ' '))"/>
    </MaxY>
    <MinX>
    <xsl:value-of
    select="normalize-space(substring-before(ows:WGS84BoundingBox/ows:LowerCorner,
    ' '))"/>
    </MinX>
    <MinY>
    <xsl:value-of
    select="normalize-space(substring-after(ows:WGS84BoundingBox/ows:LowerCorner,
    ' '))"/>
    </MinY>
    <ModifiedDate>
    <xsl:value-of select="./dct:modified"/>
    </ModifiedDate>
    <!-- used to extract any urls in the document. It gets the urls
    and the scheme attribute (@scheme, which determines their type
    (type of url it is (thumbnail, website, server, contact, etc.
    urls)). We always choose the "server" url when we add to map.
    -->
    <References>
    <xsl:for-each select="./dct:references">
    <xsl:value-of select="."/>
    <xsl:text>&#x2714;</xsl:text>
    <xsl:value-of select="@scheme"/>
    <xsl:text>&#x2715;</xsl:text>
    </xsl:for-each>
    </References>
    <!-- this extracts content type information. Can be used to
    highlight add to map button-->
    <Types>
    <xsl:for-each select="./dc:type">
    <xsl:value-of select="."/>
    <xsl:text>&#x2714;</xsl:text>
    <xsl:value-of select="@scheme"/>
    <xsl:text>&#x2715;</xsl:text>
    </xsl:for-each>
    </Types>
    </Record>
    </xsl:for-each>
    </Records>
    </xsl:otherwise>
    </xsl:choose>
    </xsl:template>
    </xsl:stylesheet>
    
    Cuando termine la edición del texto, guarde el archivo como 'GetRecords_Response.xslt'.
  • Creación de GetRecordByID_Response.xslt

    Recuerde que los clientes de CSW aplican el GetRecordByID_Response.xslt a una respuesta GetRecordsByID del servicio de catálogos solamente para extraer la URL que se utiliza para visualizar un servicio en directo en la interfaz. El fragmento de código que consta a continuación muestra un GetRecordsByID_Response.xslt genérico. La parte importante de la personalización es identificar dónde se encuentra la información de respuesta de CS-W acerca de un servicio en vivo. Esto se debe definir en la sección <xsl:template> con enunciados seleccionados. El ejemplo que se muestra a continuación es para el servicio de catálogos del Núcleo Dublín y observamos que la XPath a la información del servicio se puede encontrar en el elemento csw:record/dct:references. Para los ejemplos que usan conectores CS-W de ArcIMS o conectores basados en ISO 19139, abra otros GetRecordByID_Response xslt dentro de la carpeta \\CSWClients\Data y busque un ejemplo que sea similar al estándar que su servicio de catálogos utiliza.

    <?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:csw="http://www.opengis.net/cat/csw/2.0.2" xmlns:dct="http://purl.org/dc/terms/" xmlns:ows="http://www.opengis.net/ows" exclude-result-prefixes="csw dct">
     <xsl:output method="text" indent="no" encoding="UTF-8"/> 
    <xsl:template match="/"> 
    <xsl:choose>
     <xsl:when test="/ows:ExceptionReport">
     <exception>
     <exceptionText>
     <xsl:for-each select="/ows:ExceptionReport/ows:Exception">
     <xsl:value-of select="ows:ExceptionText"/> 
    </xsl:for-each> </exceptionText>
     </exception>
     </xsl:when> 
    <xsl:otherwise>
     <xsl:apply-templates select="//csw:Record/dct:references"/>
     </xsl:otherwise>
     </xsl:choose>
     </xsl:template>
     <xsl:template match="//csw:Record/dct:references"> 
    <xsl:value-of select="."/>
     <xsl:text>&#x2714;</xsl:text>
     <xsl:value-of select="@scheme"/>
     <xsl:text>&#x2715;</xsl:text>
     </xsl:template>
     </xsl:stylesheet>
     
    Cuando termine la edición del texto, guarde el archivo como 'GetRecordsByID_Request.xslt'.
  • Agregue su perfil al archivo CSWProfiles.xml

    después de que haya creado los tres xslt, debe hacer referencia a los mismos en el archivo CSWProfiles.xml.

    1. Decida un prefijo que distinguirá sus xslt de los otros que se encuentran en el directorio \\CSWClients\Data. Cambie los nombres de sus tres xslt para incluir este prefijo. Por ejemplo, GetRecords_Request.xslt se convierte enMyOrganizationName_GetRecords_Request.xslt.
    2. Navegue a la carpeta \\CSWClients\Data y abra el archivo CSWProfiles.xml en un editor de texto.
    3. Copie el texto siguiente en una entrada en la parte superior del archivo, justo debajo de la etiqueta <CSWProfiles>. Actualice las secciones comentadas para hacer referencia al nombre de su nuevo perfil y los tres xslt que ha creado.
      <?xml version="1.0" encoding="utf-8" ?> 
      <CSWProfiles>
       <!-- insert the name of your profile here within comments -->
       <Profile>
       <!-- update the ID value with a unique urn value. Doesn't matter what it is as long as it is unique within this file --> 
       <ID>urn:ogc:CSW:2.0.2:HTTP:YourProfile </ID> 
      <!-- update the Name value with the name you want to display for your profile in the Profile drop-down on the Configure tab in the CSW Client user interface--> 
      <Name> Unique name for display of Profile </Name>
      <!-- update the CswNamespace value with the namespace for your CSW service. For CSW 2.0.2 services, this will typically be http://www.opengis.net/cat/csw/2.0.2. For earlier CSW services, this may be http://www.opengis.net/cat/csw or another namespace --> 
       <CswNamespace> http://www.opengis.net/cat/csw/2.0.2 </CswNamespace> 
      <Description />
       <GetRecords> 
      <XSLTransformations>
      <!-- update with the name of your custom profile's GetRecords_Request.xslt file-->
       <Request>MyOrganizationName_GetRecords_Request.xslt </Request>
      <!-- update with the name of your custom profile's GetRecords_Response.xslt file-->
      <Response>  MyOrganizationName_GetRecords_Response.xslt </Response>
       </XSLTransformations>
       </GetRecords>
       <GetRecordByID>
       <RequestKVPs>
       <!-- update with syntax appropriate for issuing a GetRecordById request to the type catalog service to which you want to connect. In this example, the service would use CS-W 2.0.2 protocol and the full set of metadata record elements from each source record that should be presented in the response (ElementSetName) -->
       <![CDATA[service=CSW&request=GetRecordById&version=2.0.2&ElementSetName=full]]>
       </RequestKVPs> 
      <XSLTransformations> 
       <!-- update with the name of your custom profile's GetRecordByID_Response.xslt file--> 
      <Response>MyOrganizationName_GetRecordByID_Response.xslt </Response>
       </XSLTransformations>
      </GetRecordByID>
      <!-- update with True if the CS-W service supports returning queries defined by an extent--> 
      <SupportSpatialQuery>True </SupportSpatialQuery> 
      <!-- update with True if the CS-W service supports returning the content type of a metadata record--> 
      <SupportContentTypeQuery> True </SupportContentTypeQuery> 
      <!-- update with True if the CS-W service supports returning bounding box information -->
      <SupportSpatialBoundary>  True </SupportSpatialBoundary>
       </Profile>
      
    4. De manera predeterminada, cuando un usuario hace clic en el botón Vista de metadatos, el XML de metadatos es devuelto de la respuesta GetRecordByID del servicio de catálogos sin ningún estilo aplicado. Si desea definir el estilo del documento de metadatos para que sea más fácil de leer, puede usar la etiqueta <StyleResponse> en lugar de la etiqueta <Response> dentro de la sección <GetRecordByID> para su perfil en el archivo CSWProfiles.xml. Realice lo siguiente:
      1. Cree una hoja de estilo (.xsl) que interpretará y representará los metadatos devueltos de la respuesta GetRecordById del servicio de catálogos. Guarde la hoja de estilo en la misma carpeta que su archivo CSWProfiles.xml.
      2. En el archivo CSWProfiles.xml, desplácese a la sección que define el perfil al cuál desea aplicar el estilo. Dentro de esa sección, busque el elemento <GetRecordByID>. Dentro del elemento <GetRecordByID>, busque el elemento <XSLTransformations>.
      3. Reemplace la sección del elemento <Response> con <StyleResponse>.
      4. Dentro de las etiquetas abiertas y cerradas <StyleResponse>, escriba el nombre de la hoja de estilo que creó para representar la respuesta de GetRecordByID. A continuación se muestra un ejemplo:
        <GetRecordByID>
         <RequestKVPs>
         <![CDATA[service=CSW&request=GetRecordById&version=2.0.2&ElementSetName=full&outputSchema=original]]>
         </RequestKVPs>
         <XSLTransformations> 
        <StyleResponse>Custom_Render.xsl</StyleResponse> 
        </XSLTransformations>
         </GetRecordByID>
    5. Guarde el archivo CSWProfiles.xml. La próxima vez que abra los clientes de CSW en ArcMap o ArcGIS Explorer, debe ver su perfil en la lista.