Subject: RE: GML transformation
From: "Michael Kay" <mhk@xxxxxxxxx>
Date: Fri, 21 May 2004 16:30:16 +0100
|
> -----Original Message-----
> From: sarra hamdi [mailto:hacker249@xxxxxxxxx]
> Sent: 21 May 2004 12:45
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: 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[@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
|