GML mit xslt ausgeben
whine
- xsl
Guten Morgen!
Ich geben aus einer GML-Datei mittels xslt die Koordinaten aus:
gml:
<gml:featureMember>
<MAR_POINT fid="00001">
<GEOM>
<gml:MultiPoint srsName="EPSG:4326">
<gml:pointMember>
<gml:Point>
<gml:coordinates decimal="." cs="," ts=" ">8.13959,53.624847</gml:coordinates>
</gml:Point>
</gml:pointMember>
</gml:MultiPoint>
</GEOM>
<BEZ>Messpunkt GE 40230</BEZ>
</MAR_POINT>
</gml:featureMember>
xslt:
<xsl:template match="gml:Point">
<p><xsl:value-of select="gml:coordinates"/></p>
</xsl:template>
Geht soweit. Nun möchte ichauch den Inhalt der <BEZ></BEZ> dazu ausgeben. Ich habe es mit
<xsl:template match="MAR_POINT">
<p><xsl:value-of select="BEZ"/></p>
</xsl:template>
versucht. Passiert leider nix. Hat jemand eine Idee?
whine
Hallo whine,
Geht soweit. Nun möchte ichauch den Inhalt der <BEZ></BEZ> dazu ausgeben. Ich habe es mit
<xsl:template match="MAR_POINT">
<p><xsl:value-of select="BEZ"/></p>
</xsl:template>
> versucht. Passiert leider nix. Hat jemand eine Idee?
Ansatz:
~~~xml
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:gml="http://example.com/gml" exclude-result-prefixes="gml">
<xsl:output method="html" encoding="UTF-8"/>
<xsl:template match="gml:featureMember">
<xsl:apply-templates select="MAR_POINT"/>
</xsl:template>
<xsl:template match="MAR_POINT">
<p><xsl:value-of select="//gml:coordinates"/></p>
<p><xsl:value-of select="BEZ"/></p>
</xsl:template>
</xsl:stylesheet>
Grüße,
Thomas
Hallo Thomas,
danke für deine Hilfe.
Wenn ich das^^ mache bekomme ich immer allen inhalt (komischerweise auch absatzlos) ausgegeben. Habe in der GML noch sehr viele weitere Tags, die ich am liebsten tabellarisch ausgeben möchte.
Bei deinem Ansatz ist es übrigens egal, wenn ich eins der beider <template...> weg lasse. Zumindest in der Ausgabe im Firefox.
whine
Hallo whine,
Wenn ich das^^ mache bekomme ich immer allen inhalt (komischerweise auch absatzlos) ausgegeben. Habe in der GML noch sehr viele weitere Tags, die ich am liebsten tabellarisch ausgeben möchte.
Erhalte mit Saxon nur die beiden Absätze. Poste mal weitere Details zur Ein- und Ausgabe.
Grüße,
Thomas
Erhalte mit Saxon nur die beiden Absätze. Poste mal weitere Details zur Ein- und Ausgabe.
Die (fast)komplette GML:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="my-own.xsl"?>
<gml:featureCollection xmlns:caris="http://www.example.com" xmlns:gml="http://www.opengis.net/gml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<gml:boundedBy>
<gml:Box srsName="EPSG:4326">
<gml:coordinates decimal="." cs="," ts=" ">7.4577367,53.3352683 8.7228503,53.9503289</gml:coordinates>
</gml:Box>
</gml:boundedBy>
<gml:featureMember>
<MAR_POINT fid="00001">
<GEOM>
<gml:MultiPoint srsName="EPSG:4326">
<gml:pointMember>
<gml:Point>
<gml:coordinates decimal="." cs="," ts=" ">8.13959,53.624847</gml:coordinates>
</gml:Point>
</gml:pointMember>
</gml:MultiPoint>
</GEOM>
<BCNSHP>4</BCNSHP>
<CATSPM>16</CATSPM>
<COLOUR>7</COLOUR>
<BEZ>Messpunkt 42033</BEZ>
</MAR_POINT>
</gml:featureMember>
<gml:featureMember>
<MAR_POINT fid="00002">
<GEOM>
<gml:MultiPoint srsName="EPSG:4326">
<gml:pointMember>
<gml:Point>
<gml:coordinates decimal="." cs="," ts=" ">8.1565367,53.5822072</gml:coordinates>
</gml:Point>
</gml:pointMember>
</gml:MultiPoint>
</GEOM>
<BCNSHP>4</BCNSHP>
<CATSPM>16</CATSPM>
<COLOUR>7</COLOUR>
<BEZ>Messpunkt 42034</BEZ>
</MAR_POINT>
</gml:featureMember>
</gml:featureCollection
Meine aktuelle xslt ist die, die du gepostet hast.
whine
Hallo whine,
funktioniert auch in Browsern problemlos, hier in eine HTML-Tabelle eingebettet (wichtig ist natürlich der korrekte gml-Namensraum):
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:gml="http://www.opengis.net/gml" exclude-result-prefixes="gml">
<xsl:output method="html" encoding="UTF-8"/>
<xsl:template match="gml:featureCollection">
<html>
<head>
<title>Test</title>
<style type="text/css">
table,tr,td,th {border: 1px solid #000; border-collapse: collapse;}
td,th {padding: 5px; text-align: center;}
</style>
</head>
<body>
<table>
<thead>
<tr>
<th>BEZ</th>
<th>gml:coordinates</th>
</tr>
</thead>
<tbody>
<xsl:apply-templates select="gml:featureMember"/>
</tbody>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="gml:featureMember">
<tr>
<td>
<xsl:value-of select="MAR_POINT/BEZ"/>
</td>
<td>
<xsl:value-of select="MAR_POINT//gml:coordinates"/>
</td>
</tr>
</xsl:template>
</xsl:stylesheet>
Grüße,
Thomas
cool, danke!
So ganz raff ich es noch nicht. Was mache ich denn, wenn die Ebende MAR_POINT variiert? Also anstelle von MAR_POINT etwas anderes (auch unbekanntes steht)?
whine
Hallo whine,
So ganz raff ich es noch nicht. Was mache ich denn, wenn die Ebende MAR_POINT variiert? Also anstelle von MAR_POINT etwas anderes (auch unbekanntes steht)?
Dazu bitte tiefer in XSLT und hierzu vor allem in XPath http://de.selfhtml.org/xml/darstellung/index.htm@title=einlesen (speziell Template-Handling, XPath-Achsen und Prädikate in XPath-Ausdrücken).
Grüße,
Thomas
Ok, vielen vielen Dank nochmal!
whine