whine: GML mit xslt ausgeben

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

  1. 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

    1. 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

      1. 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

        1. 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

          1. 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

            1. 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

              1. 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

                1. Ok, vielen vielen Dank nochmal!

                  whine