xsl-list
[Top] [All Lists]

RE: GML transformation

2004-05-21 08:30:16
 

-----Original Message-----
From: sarra hamdi [mailto:hacker249(_at_)lycos(_dot_)com] 
Sent: 21 May 2004 12:45
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] GML transformation

Hello,
I have a valid GML file descriped follow, it was validated by 
xmlspy. I want to transform it to SVG format using xslt but I 
m newbie in xsl language.
follow the xsl file that I writed but it cant give me a good result .
from this can any one see this two file to help me to 
represent the gml file.
thanks advanced.
------------------------------------------------
the gml file
------------------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<!-- File: cambridge.xml -->
<CityModel xmlns="http://www.opengis.net/examples"; 
           xmlns:gml="http://www.opengis.net/gml"; 
           xmlns:xlink="http://www.w3.org/1999/xlink"; 
           xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"; 
           
xsi:schemaLocation="http://www.opengis.net/examples 
/u/pkg/gml4j/test/schemas/City.xsd">

  <gml:name>Cambridge</gml:name>
  <gml:boundedBy>
    <gml:Box srsName="http://www.opengis.net/gml/srs/epsg.xml#4326";>
      <gml:coordinates>0.0 0.0,100.0 100.0</gml:coordinates>
    </gml:Box>
  </gml:boundedBy>

  <cityMember>
    <River>
      <gml:description>The river that runs through 
Cambridge.</gml:description>
      <gml:name>Cam</gml:name>
      <gml:centerLineOf>
        <gml:LineString 
srsName="http://www.opengis.net/gml/srs/epsg.xml#4326";>
          <gml:coordinates>0 50,70 60,100 50</gml:coordinates>
        </gml:LineString>
      </gml:centerLineOf>
    </River>
  </cityMember>

  <cityMember>
    <Road>
      <gml:name>M11</gml:name>
        <linearGeometry>
          <gml:LineString 
srsName="http://www.opengis.net/gml/srs/epsg.xml#4326";>
            <gml:coordinates>0 5.0,20.6 10.7,80.5 
60.9</gml:coordinates>
          </gml:LineString>
        </linearGeometry>
      <classification>motorway</classification>
      <number>11</number>
    </Road>
  </cityMember>

  <cityMember xlink:type="simple" xlink:title="Trinity Lane" 
    xlink:href="http://www.foo.net/cgi-bin/wfs?FeatureID=C10239"; 
    
gml:remoteSchema="city.xsd#xpointer(//complexType[(_at_)name='RoadT
ype'])"/>
  <cityMember>
    <Mountain>
      <gml:description>World's highest mountain is in 
Nepal!</gml:description>
      <gml:name>Everest</gml:name>
      <elevation>8850</elevation>
    </Mountain>
  </cityMember>
  <dateCreated>2000-11</dateCreated>
</CityModel>


------------------------------------------------
the xsl file
------------------------------------------------

I've annotated this to show you some of the things that are wrong with your
code, but I haven't tried to correct your errors because I simply can't see
what you are aiming at.

<?xml version="1.0"?>
<!DOCTYPE xsl:stylesheet SYSTEM "C:\Documents and 
Settings\ines\Bureau\exemple3\Untitled2.dtd">

The location of the DTD must be a URI, not a filename. Some products let you
get away with this error, but they shouldn't.

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"; 
xmlns:xlink="http://www.w3.org/TR/xlink"; 
xmlns:gml="http://www.opengis.net/gml"; 
xmlns:redirect="org.apache.xalan.xslt.extensions.Redirect" 
xmlns:mur="murmur" extension-element-prefixes="mur">

      <xsl:output method="xml" 
doctype-system="D:\mesrecherchesmastere\svg\DTD\svg10.dtd" 
doctype-public="-//W3C//DTD SVG 20000303 Stylable//EN"/>

      <xsl:variable name="boxCoord" select="//gml:Box/gml:coordinates/."/>

The trailing "/." is noise and should be removed.

           <xsl:template
match="//gml:centerLineOf/gml:LineString/gml:coordinates">

The leading "//" is noise and should be removed.

              <xsl:variable name="clist" select="."/>
              <xsl:variable name="tclist"
select="normalize-space($clist)"/>

              <xsl:template match="/">

You can't have one template rule inside another. I don't know what you are
trying to achieve here.

                      <xsl:variable name="boxCoord"></xsl:variable>

This variable will have a value that is always a result tree fragment
containing an empty string, which doesn't seem very useful.

                      <xsl:template match="/">

Another nested template! You appear to be confused.

              <svg xml:space="preserve" viewBox="{$boxCoord}">
                      <xsl:apply-templates/>
              </svg>
      </xsl:template> 
      </xsl:template> 
      </xsl:template> 
</xsl:stylesheet>


Michael Kay



<Prev in Thread] Current Thread [Next in Thread>