XSLT转换不适用于包含组合标记的XML文件,如<tag1:tag2> </tag1:tag2>和一些特定属性

时间:2012-10-15 17:25:29

标签: xml xslt namespaces

我们正在尝试转换由WMS上的GetCapabilities操作产生的X​​ML文件,但是组合的名称标签会抛出错误,更准确地说是名称由两个使用冒号分隔的单词组成的标记,如以下来源:

1)

<OnlineResource xlink:type="simple" xlink:href="http://www.ign.es/wms-inspire/ign-base?SERVICE=WMS&"/>

2)

<OnlineResource xlink:type="simple" xlink:href="http://www.ign.es/wms-inspire/ign-base?SERVICE=WMS&"/>

3)

<inspire_vs:ExtendedCapabilities>
<inspire_common:MetadataUrl xsi:type="inspire_common:resourceLocatorType">
<inspire_common:URL>http://www.ign.es/csw-inspire/srv/es/csw?SERVICE=CSW&VERSION=2.0.2&REQUEST=GetRecordById&outputSchema=http://www.isotc211.org/2005/gmd&ElementSetName=full&ID=spaignwms_www.ign.es_wms-inspire_ignbase_2011</inspire_common:URL>
<inspire_common:MediaType>application/vnd.ogc.csw.GetRecordByIdResponse_xml
</inspire_common:MediaType>
</inspire_common:MetadataUrl>
<inspire_common:SupportedLanguages xsi:type="inspire_common:supportedLanguagesType">
<inspire_common:DefaultLanguage>
<inspire_common:Language>spa</inspire_common:Language>
</inspire_common:DefaultLanguage>
<inspire_common:SupportedLanguage>
<inspire_common:Language>eng
</inspire_common:Language>
</inspire_common:SupportedLanguage>
</inspire_common:SupportedLanguages>
<inspire_common:ResponseLanguage>
<inspire_common:Language>spa</inspire_common:Language>
</inspire_common:ResponseLanguage>
</inspire_vs:ExtendedCapabilities>

属性:xmlns =“http://www.opengis.net/wms”,xlink =“http://www.w3.org/1999/xlink”,xsi =“http:// www。 w3.org/2001/XMLSchema-instance“包含在标签中,避免它正常工作:

<WMS_Capabilities srv="http://schemas.opengis.net/iso/19139/20060504/srv/srv.xsd" gmd="http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd" gco="http://schemas.opengis.net/iso/19139/20060504/gco/gco.xsd" inspire_vs="http://inspire.ec.europa.eu/schemas/inspire_vs/1.0" gml="http://schemas.opengis.net/gml" inspire_common="http://inspire.ec.europa.eu/schemas/common/1.0" version="1.3.0" updateSequence="2619" xmlns="http://www.opengis.net/wms" xlink="http://www.w3.org/1999/xlink" xsi="http://www.w3.org/2001/XMLSchema-instance" schemaLocation="http://www.opengis.net/wms http://inspire.ec.europa.eu/schemas/inspire_vs/1.0/inspire_vs.xsd"> 

目前,进行转换工作的唯一方法是编辑原始XML以消除那些冲突的部分,这个解决方案没有多大意义,所以欢迎解决这个问题的任何想法

这是一个简单的XSL文件:

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

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<html>
<head>
</head>
<body>
<h1>Get Capabilities Operation:</h1>
    <table border="1">
    <tr>
    <td> <xsl:value-of select="WMS_Capabilities/Service/Title"/> 
        <!--  it is not able to take the content that is within the label "Title"-->
    </td> 
    </tr>
    </table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

这是XML文件的一部分

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="ign-base.xsl"?>

<WMS_Capabilities xmlns:srv="http://schemas.opengis.net/iso/19139/20060504/srv/srv.xsd" 
xmlns:gmd="http://schemas.opengis.net/iso/19139/20060504/gmd/gmd.xsd" 
xmlns:gco="http://schemas.opengis.net/iso/19139/20060504/gco/gco.xsd" 
xmlns:inspire_vs="http://inspire.ec.europa.eu/schemas/inspire_vs/1.0" 
xmlns:gml="http://schemas.opengis.net/gml" 
xmlns:inspire_common="http://inspire.ec.europa.eu/schemas/common/1.0" 
version="1.3.0" updateSequence="2619" xmlns="http://www.opengis.net/wms" 
xmlns:xlink="http://www.w3.org/1999/xlink" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.opengis.net/wms http://inspire.ec.europa.eu/schemas/inspire_vs/1.0/inspire_vs.xsd">  
  <Service>
    <Name>WMS</Name>
    <Title>Mapa base de España del Instituto Geográfico Nacional</Title>
    <Abstract>Servicio Web de Mapas conforme al perfil INSPIRE de ISO19128-WMS 1.3.0 que permite acceder a cartografía procedente de diversas bases de datos geográficos del  IGN España. Para escalas pequeñas se usa la Base Cartográfica Numérica 1:200.000 (BCN200) y datos estructurados procedentes del  SIGNA (Sistema de Información Geográfica NAcional); para escalas intermedias se usa la Base Topográfica Nacional 1:25.000 (BTN25) junto con la Base Cartográfica Numérica 1:25.000 (BCN25); para escalas grandes, información procedente del callejero oficial Cartociudad. Se muestra información geográfica perteneciente a los siguientes anexos de Inspire: 1) Nombres geográficos, Unidades administrativas, Direcciones, Redes de transporte, Hidrografía, Lugares protegidos (pertenecientes al Anexo I);  2) Elevaciones y Cubierta terrestre (pertenecientes al Anexo II); 3) Edificios, Servicios de utilidad pública y estatales, Instalaciones de producción e industriales e Instalaciones agrícolas y de acuicultura (pertenecientes al Anexo III). También se muestra información que bien por los tipos de objetos espaciales o la geometría que se utiliza para representarlos están fuera de Inspire. Son los siguientes: Paises, Fondo cartográfico, Manazanas urbanas, Aeropuertos y las capas contenidas en los grupos de capas Puertos, Islas y Sombreado. El resto de capas se han agrupado constituyendo grupos de capas equivalentes a capas Inspire cuya denominación es conforme con la Directiva INSPIRE 2007/2/EC (nombre, título y estilo Inspire por defecto). Todas las capas tienen asociado un estilo de visualización definido por el IGN y además, si pertenece a Inspire, el estilo Inspire por defecto.</Abstract>
    <KeywordList>
      <Keyword>WMS</Keyword>
      <Keyword>IDEE</Keyword>
      <Keyword>BCN200</Keyword>
      <Keyword>BCN25</Keyword>
      <Keyword>BTN25</Keyword>
      <Keyword>Cartografía</Keyword>
      <Keyword vocabulary="ISO 19119 geographic services taxonomy, version 2.3">infoMapAccessService</Keyword>
      <Keyword vocabulary="ISO 19119 geographic services taxonomy, version 2.3">infoManagementService</Keyword>
      <Keyword>España</Keyword>
      <Keyword>SIGNA</Keyword>
      <Keyword>Topográfico</Keyword>
      <Keyword>View</Keyword>
      <Keyword>WMS 1.3.0</Keyword>
      <Keyword>OGC</Keyword>
    </KeywordList>
    <OnlineResource xlink:type="simple" xlink:href="http://www.ign.es"/>
    <ContactInformation>
      <ContactPersonPrimary>
        <ContactPerson/>
        <ContactOrganization>Instituto Geográfico Nacional</ContactOrganization>
      </ContactPersonPrimary>
      <ContactPosition>PointOfContact</ContactPosition>
      <ContactAddress>
        <AddressType>Postal</AddressType>
        <Address>General Ibáñez de Íbero, 3</Address>
        <City>Madrid</City>
        <StateOrProvince>España</StateOrProvince>
        <PostCode>28003</PostCode>
        <Country>España</Country>
      </ContactAddress>
      <ContactVoiceTelephone>+34 91 597 96 61</ContactVoiceTelephone>
      <ContactFacsimileTelephone>+34 91 597 97 64</ContactFacsimileTelephone>
      <ContactElectronicMailAddress>ign@fomento.es</ContactElectronicMailAddress>
    </ContactInformation>
    <Fees>no conditions apply</Fees>
    <AccessConstraints>licencia</AccessConstraints>
  </Service>
  <Capability>
    <Request>
      <GetCapabilities>
        <Format>text/xml</Format>
        <DCPType>
          <HTTP>
            <Get>
              <OnlineResource xlink:type="simple" xlink:href="http://www.ign.es/wms-inspire/ign-base?SERVICE=WMS&amp;"/>
            </Get>
            <Post>
              <OnlineResource xlink:type="simple" xlink:href="http://www.ign.es/wms-inspire/ign-base?SERVICE=WMS&amp;"/>
            </Post>
          </HTTP>
        </DCPType>
      </GetCapabilities>
      <GetMap>
        <Format>image/png</Format>
        <Format>application/atom+xml</Format>
        <Format>application/pdf</Format>
        <Format>application/vnd.google-earth.kml+xml</Format>
        <Format>application/vnd.google-earth.kmz</Format>
        <Format>image/gif</Format>
        <Format>image/jpeg</Format>
        <Format>image/svg+xml</Format>
        <Format>image/tiff</Format>
        <DCPType>
          <HTTP>
            <Get>
              <OnlineResource xlink:type="simple" xlink:href="http://www.ign.es/wms-inspire/ign-base?SERVICE=WMS&amp;"/>
            </Get>
          </HTTP>
        </DCPType>
      </GetMap>
      <GetFeatureInfo>
        <Format>text/html</Format>
        <DCPType>
          <HTTP>
            <Get>
              <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://www.ign.es/wms-inspire/ign-base?SERVICE=WMS&amp;"/>
            </Get>
            <Post>
              <OnlineResource xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:href="http://www.ign.es/wms-inspire/ign-base?SERVICE=WMS&amp;"/>
            </Post>
          </HTTP>
        </DCPType>
      </GetFeatureInfo>
    </Request>
    <Exception>
      <Format>XML</Format>
      <Format>INIMAGE</Format>
      <Format>BLANK</Format>
    </Exception>
    <inspire_vs:ExtendedCapabilities>
      <inspire_common:MetadataUrl xsi:type="inspire_common:resourceLocatorType">
        <inspire_common:URL>http://www.ign.es/csw-inspire/srv/es/csw?SERVICE=CSW&amp;VERSION=2.0.2&amp;REQUEST=GetRecordById&amp;outputSchema=http://www.isotc211.org/2005/gmd&amp;ElementSetName=full&amp;ID=spaignwms_www.ign.es_wms-inspire_ignbase_2011</inspire_common:URL>
        <inspire_common:MediaType>application/vnd.ogc.csw.GetRecordByIdResponse_xml</inspire_common:MediaType>
      </inspire_common:MetadataUrl>
      <inspire_common:SupportedLanguages xsi:type="inspire_common:supportedLanguagesType">
        <inspire_common:DefaultLanguage>
          <inspire_common:Language>spa</inspire_common:Language>
        </inspire_common:DefaultLanguage>
        <inspire_common:SupportedLanguage>
          <inspire_common:Language>eng</inspire_common:Language>
        </inspire_common:SupportedLanguage>
      </inspire_common:SupportedLanguages>
      <inspire_common:ResponseLanguage>
        <inspire_common:Language>spa</inspire_common:Language>
      </inspire_common:ResponseLanguage>
    </inspire_vs:ExtendedCapabilities>
    <Layer>
      <Title>Mapa base de España del Instituto Geográfico Nacional</Title>
      <Abstract>Servicio Web de Mapas conforme al perfil INSPIRE de ISO19128-WMS 1.3.0 que permite acceder a cartografía procedente de diversas bases de datos geográficos del  IGN España. Para escalas pequeñas se usa la Base Cartográfica Numérica 1:200.000 (BCN200) y datos estructurados procedentes del  SIGNA (Sistema de Información Geográfica NAcional); para escalas intermedias se usa la Base Topográfica Nacional 1:25.000 (BTN25) junto con la Base Cartográfica Numérica 1:25.000 (BCN25); para escalas grandes, información procedente del callejero oficial Cartociudad. Se muestra información geográfica perteneciente a los siguientes anexos de Inspire: 1) Nombres geográficos, Unidades administrativas, Direcciones, Redes de transporte, Hidrografía, Lugares protegidos (pertenecientes al Anexo I);  2) Elevaciones y Cubierta terrestre (pertenecientes al Anexo II); 3) Edificios, Servicios de utilidad pública y estatales, Instalaciones de producción e industriales e Instalaciones agrícolas y de acuicultura (pertenecientes al Anexo III). También se muestra información que bien por los tipos de objetos espaciales o la geometría que se utiliza para representarlos están fuera de Inspire. Son los siguientes: Paises, Fondo cartográfico, Manazanas urbanas, Aeropuertos y las capas contenidas en los grupos de capas Puertos, Islas  y Sombreado. El resto de capas se han agrupado constituyendo grupos de capas equivalentes a capas Inspire cuya denominación es conforme con la Directiva INSPIRE 2007/2/EC (nombre, título y estilo Inspire por defecto). Todas las capas tienen asociado un estilo de visualización definido por el IGN y además, si pertenece a Inspire, el estilo Inspire por defecto.</Abstract>
      <CRS>EPSG:4258</CRS>
      <CRS>EPSG:4326</CRS>
      <CRS>CRS:84</CRS>
      <CRS>EPSG:23029</CRS>
      <CRS>EPSG:23030</CRS>
      <CRS>EPSG:23031</CRS>
      <CRS>EPSG:25828</CRS>
      <CRS>EPSG:25829</CRS>
      <CRS>EPSG:25830</CRS>
      <CRS>EPSG:25831</CRS>
      <CRS>EPSG:4230</CRS>
      <EX_GeographicBoundingBox>
        <westBoundLongitude>-179.90</westBoundLongitude>
        <eastBoundLongitude>179.90</eastBoundLongitude>
        <southBoundLatitude>-89.90</southBoundLatitude>
        <northBoundLatitude>84.00</northBoundLatitude>
      </EX_GeographicBoundingBox>
      <Layer>
        <Name>GN.GeographicalNames</Name>
        <Title>Nombres geográficos</Title>
        <Abstract>Representación de datos espaciales correspondientes al tema "Nombres Geográficos" del Anexo I de la directiva INSPIRE.</Abstract>
        <CRS>EPSG:23029</CRS>
          <CRS>EPSG:23030</CRS>
          <CRS>EPSG:23031</CRS>
          <CRS>EPSG:25828</CRS>
          <CRS>EPSG:25829</CRS>
          <CRS>EPSG:25830</CRS>
          <CRS>EPSG:25831</CRS>
          <CRS>EPSG:4230</CRS>
          <EX_GeographicBoundingBox>
            <westBoundLongitude>-19.00</westBoundLongitude>
            <eastBoundLongitude>5.00</eastBoundLongitude>
            <southBoundLatitude>27.00</southBoundLatitude>
            <northBoundLatitude>44.00</northBoundLatitude>
          </EX_GeographicBoundingBox>

带有完整XML答案的服务链接

http://www.ign.es/wms-inspire/ign-base?request=GetCapabilities&service=WMS

提前致谢

1 个答案:

答案 0 :(得分:1)

您没有显示包含WMS_Capabilities等的Xml文档。如果服务和标题位于同一名称空间中,则此类内容应该有所帮助:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:ns=""http://www.opengis.net/wms"">

<xsl:template match="/">
<html>
<head>
</head>
<body>
<h1>Get Capabilities Operation:</h1>
    <table border="1">
    <tr>
    <td> <xsl:value-of select="ns:WMS_Capabilities/ns:Service/ns:Title"/> 
        <!--  it is not able to take the content that is within the label "Title"-->
    </td> 
    </tr>
    </table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

我将namespace-uri与“ns”前缀相关联,并使用XPath表达式中的前缀来指示元素属于与前缀关联的名称空间。