Tourenbeschreibungen - XML-Format

Registriert
25. Mai 2005
Reaktionspunkte
0
Hi,

ich hab' nun schon einige Tourenbeschreibungen 'abgeradelt'. Manche waren gut, manche
mies. Und (gerade) im Internet war jede etwas anders angelegt, obwohl die Eckpunkte fuer
ne gute Tourenbeschreibung ja eigentlich relativ gleich sind.

Nun kam mir (als Softwareentwickler) sofort in den Sinn, dass man das doch einheitlich
beschreiben koennte. Z.B. via XML.

Nun koennte ich mir ja ein eigenes XML Schema aus den Fingern saugen. Aber ich wollte
erstmal hier fragen, ob es sowas (das Schema) nicht vielleicht schon gibt. Also: Kennt
jemand sowas?

Wenn nicht, dann wuerde ich mich mal daran machen sowas zu entwicklen. Aber ich waere
natuerlich an Mitstreitern und Ideen interessiert. Dazu muss niemand ein Programmierer
sein! Gerade diese Non-Nerds haben oftmals die brauchbareren Ideen fuer so ein Projekt.

Also, postet mal was zu meiner Idee. Ich will diesen Text auch nicht endlos ausweiten. Wenn
mein Posting konkrete Fragen aufwirft (wovon ich ausgehe) -> fragen!

gr33tz,
knottyTom
 
Finde ich erst mal eine sehr gute Idee. Wir koennten da dann mit unserem Tour- und Sportguide mitziehen. Der wird sowieso demnaechst ueberarbeitet und wenn es soweit ist, koennten wir ihm auch eine XML-Im- und Exportschnittstelle spendieren. Waere eine tolle Sache.

rik
 
Was willst Du in XML machen, Infos über die Tour (km gesamt, Schwierigkeitsgrad) oder die Tour selbst (100m, dann links auf Schotter weiter...) oder beides?
Thomas
 
Alles am besten.

Wir sollten eine DTD entwickeln, nach der wir so eine Tour komplett beschreiben koennen. Dazu sollte halt erst mal geklaert werden, was denn alles rein soll. Erweitern kann man ja immer noch, aber eine saubere Basis sollte es schon von Anfang an sein.
 
rikman schrieb:
Alles am besten.

Wir sollten eine DTD entwickeln, nach der wir so eine Tour komplett beschreiben koennen. Dazu sollte halt erst mal geklaert werden, was denn alles rein soll. Erweitern kann man ja immer noch, aber eine saubere Basis sollte es schon von Anfang an sein.

Sehr richtig - ich bin jetzt schon extrem gespannt wie das aussehen soll!

Cygnus-X1
 
Hi,

erstmal danke fuer die positiven Antworten. Ich hab' schon befuerchtet,
dass ihr meine Idee fuer 'total daneben' haltet.

Kurz zu ein paar Fragen: Die Antwort von rikman trifft meine Idee eigentlich
schon zu 100%. Ich denke es sollte die Moeglichkeit gegeben werden Daten
wie:
* Eine allgemeine Beschreibung der Tour
* Laenge der Tour
* Hoehenmeter
* Schwierigkeitsgrad (Profil, Technik, ...)
* Anfahrtsbeschreibung: Auto, Bahn, ...
* Kartenbild der Tour
zu erfassen.

Dann die Daten der Tour:
* Die Abzweigungspunkte sollten moeglichst genau beschrieben werden
koennen: z.B.: 130m nach dem letzten Eckpunkt. Da hab ich schon die Erfahrung
gemacht, dass das in totalen (Kilo-)Metern seit dem Beginn der Tour gemacht
wird: Das wird dann etwas schwierig, wenn man sich doch mal verfahren oder
einen Schlenker gemacht hat.
* Bodenbeschaffenheit zwischen den Eckpunkten: Vielleicht auch mehr als
Teer, Schotter und Singletrail (wenn's Sinn macht).
* Eventuell sogar (ein) Bild(er) jedes Kreuzungspunktes. Das waere aber dann
schon die Profi-Version.
* Beschreibung von markanten Punkten: Dann findet man vielleicht auch wieder
schnell zurueck, wenn man mal falsch abgebogen ist.

Ferner weaere es ganz nett, wenn das drin waere:
* Eventuelle Aussichtspunkte oder betrachtenswerte Dinge
* Vielleicht auch Anmerkungen zu markanten Punkten: "Warum haben die damals
dieses Kreuz da hingestellt?"
* Geeignete Stopps: Lokale, Wirtschaften, Keller (wir Franken gehen ja gern
_auf_ Keller... :p )

So das waeren erstmal meine Ideen. Aber ich denke, dazu haetten andere Leute
noch wesentlich mehr einzubringen. Also her mit den Ideen!

Ein XML-Format, das das alles erfasst haette den Vorteil, dass man beliebige
Ausgabeformate und -darstellungen erzeugen koennte. Fuer die eigentliche
Tourbeschreibung die man mitnimmt braucht man ja vielleicht das (grafische)
Hoehenprofil mit Bodenbeschaffenheit und die Bilder der Eckpunkte nicht.

Was ich jetzt mal mache ist folgendes: Ich schreibe eine einfach XML-Datei
und eine XSL-Transformation um HTML zu erzeugen. Das wird erstmal was ganz
einfaches, da ich die Erfahrung gemacht habe, dass so ein Projekt im Sande
verlaeuft, wenn man von Anfang an _alles_ reinpacken will. Es dauert dann
einfach zu lange, bis man die ersten Ergebnisse sieht. Basierend darauf
koennen wir ja dann in die naechste Iteration gehen.

Ok so? Schreibt mal was.

bis demnaechst,
knottyTom
 
Hi,

hab jetzt mal ein XML gehackt.

<!--
Please regard this as a first draft of the planned tour guide.

Issues:
* the profile can be calculated from the information given
* even pavement info is included
* distances are given to meet each crosspoint. not calculated
backwards to the starting point!
MISSING:
* mark crosspoints in a given map
* no support for direction symbols at crosspoints
* advise maps in the general section (a great oops to miss this!)
-->
<tour-guide>

<!-- a general header first -->
<general fitness-level="middle" tech-level="high">
<name>Name Of The Tour</name>
<distance overwerite= "yes" unit="km">50</distance>
<desc>Some description of the tour follows here</desc>
<reach>
<option name="car">tell me here</option>
<option name="train">tell me here</option>
<option name="airplane">kidding?</option>
</reach>

<roadmap image="map.jpg"/>
</general>

<crosspoints>
<!-- first cross point, starting, distance should always be null! -->
<crosspoint distance="0" elevation="310">
<desc>
You will see a river to your right. Turn left and follow the
'red circle'.
</desc>
<images>
<image name="the_river.jpg"/>
<image name="pic_of_red_circle.jpg"/>
</images>
</crosspoint>

<!-- some track info follows -->
<track-info pavement="soil">
<eatndrink distance="500" type="restaurant" immage="eat_here.jpg">
Thats was a nice place to have some beer...
</eatndrink>
<anecdote distance="800" image="knottyTom_done.jpg">
People say that knottyTom smashed his bike to nirwana here.
</anecdote>
<!-- point of interest -->
<poi distance="900" image="a_rock.jpg">
See this rock on your right hand. Looks funny.
</poi>
</track-info>

<!-- next crosspoint, distance measured to last crosspoint, see that we have
profile information, pavement will be taken from track-info.
-->
<crosspoint distance="1000" elevation="400">
<desc>
Watch out for the old oak tree. Passe it left side and follow the
'yellow bar". There are three ways to go! Follow the most left.
</desc>
<images>
<image name="oak_tree_left.jpg"/>
</images>
</crosspoint>

<!-- and so on .... -->

</crosspoints>

</tour-guide>

Vielleicht schaff ich eine XSL-T (nach HTML) heute auch noch. Mal gucken...

Aber: Ich kann das ja nicht alles hier posten. Sinnvollerweise wuerde ich das gerne
irgendwo hochladen (ich hab dazu aber keinen web-space). Ich koennte das als tar.gz
packen und irgendwo hochladen. Muesste nur wissen wo? Alternativ (und das waere mir
lieber) koennte ich das auch via CVS oder Subversion updaten.

Wuerde mich freuen, wenn mir jeman eine solche Moeglichkeit (am besten Subversion)
anbieten koennte. tia.

bis demnaechst,
knottyTom
 
Hi,

was ich noch vergessen hab':

* Art der Tour: Rundtour, DirtSpot, etc.
* Dauer: Laesst sich evtl. aus einer Durchschnittsgeschwindigkeit und Laenge
der Strecke berechnen.

ciao,
knottyTom
 
Hi,

hab jetzt mal ein XSL-T gebastelt. Was denkt ihr?

Hmm, das kann ich nicht hochladen... ich benenne mal um *arrgl*

read ya,
knottyTom
 
da der upload nicht funktioniert. hier das komplette stylesheet:

Code:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" indent="yes" encoding="US-ASCII"/>
 
<xsl:decimal-format decimal-separator="." grouping-separator="," />

<xsl:template match="/">
<html>
  <head>
    <style type="text/css">
    </style>
    <title>Bike Tour XML</title>
  </head>
  <body>
    <xsl:apply-templates select="tour-guide"/>
  </body>
</html>
</xsl:template>

<xsl:template match="tour-guide">
   <hr/>
   <h1>knottyTom's TourGuide System</h1>
   <hr/>
   <hr/>
   Please see that this is the 0.1 version of the stylesheet missing all of
   the neat features (like having images). It is more a 'proof of concept' than
   a selling argument.
   <hr/>
   <hr/>   
      <xsl:apply-templates select="general"/>
   <hr/><h2>The Tour Info Starts Here</h2><hr/>
       <xsl:apply-templates select="crosspoints"/>
</xsl:template>

<xsl:template match="general">
     <h2><xsl:value-of select="name"/></h2>
     <p><xsl:value-of select="desc"/></p>
     <ul>
        <li>Fitness: <xsl:value-of select="@fitness-level"/></li>
        <li>Tech: <xsl:value-of select="@tech-level"/></li>
        <li>Type: <xsl:value-of select="@type"/></li>
        <li>Duration: <xsl:value-of select="@duration"/></li>
     </ul>
     <xsl:apply-templates select="reach"/>
     <xsl:apply-templates select="maps"/>
</xsl:template>

<xsl:template match="reach">
   <h2>How To Get There</h2>
   <ul>
      <xsl:apply-templates select="option"/>
   </ul>
</xsl:template>

<xsl:template match="option">
    <li>Via <b><xsl:value-of select="@name"/></b>:
       <xsl:value-of select="text()"/>
   </li>
</xsl:template>

<xsl:template match="maps">
   <h2>Useful Maps</h2>
   <ul>
      <xsl:apply-templates select="map"/>
   </ul>
</xsl:template>

<xsl:template match="map">
    <li><xsl:value-of select="text()"/></li>
</xsl:template>

<xsl:template match="crosspoints">
   <xsl:apply-templates select="crosspoint|track-info"/>
</xsl:template>

<xsl:template match="crosspoint">
   <p><b>Crosspoint</b>
   (dist:<b><xsl:value-of select="@distance"/></b>/
      elevation:<b><xsl:value-of select="@elevation"/></b>/
      direction to go:<b><xsl:value-of select="@direction"/></b>)
   <xsl:apply-templates select="desc"/>
   </p>
</xsl:template>

<xsl:template match="crosspoint/desc">
   <xsl:apply-templates select="text()"/>
</xsl:template>

<xsl:template match="track-info">
   <p>Track Info (<b>Pavement</b>: <xsl:value-of select="@pavement"/>)</p>
   <ul>
      <xsl:apply-templates select="eatndrink|anecdote|poi"/>
   </ul>
</xsl:template>

<xsl:template match="eatndrink">
    <li>Eatndrink at <b><xsl:value-of select="@distance"/></b>:<xsl:value-of select="text()"/>
       (Type: <xsl:value-of select="@type"/>).
    </li>
</xsl:template>

<xsl:template match="anecdote">
    <li>Anecdote at <b><xsl:value-of select="@distance"/></b>:<xsl:value-of select="text()"/></li>
</xsl:template>

<xsl:template match="poi">
    <li>Point-Of-Interest at <b><xsl:value-of select="@distance"/></b>:<xsl:value-of select="text()"/></li>
</xsl:template>

</xsl:stylesheet>
 
der xml input:

Code:
<!-- 
Please regard this as a first draft of the planned tour guide. 

Issues:
   * the profile can be calcualted from the information given
   * even pavement info is included
   * distances are given to meet each crosspoint. not calculated
     backwards to the starting point!
MISSING:
   * mark crosspoints in a given map
-->
<tour-guide>

<!-- a general header first -->
<!-- 
  Missing:
     * define types
-->
<general fitness-level="middle" tech-level="high" type="one_way" duration="05:30hrs">
   <name>Test Tour --- Dont Take It Serious</name>
   <distance overwerite= "km" unit="km">50</distance>
   <desc>A description of the tour should go here...</desc>
   <reach>
      <option name="car">tell me here</option>
      <option name="train">tell me here</option>
      <option name="airplane">kidding?</option>
   </reach>
   <maps>
      <map>Map 172, Kompass</map>
      <map>Map 170, Kompass</map>
   </maps>
   <roadmap image="map.jpg"/>
</general>

<crosspoints>
   <!-- first cross point, starting, distance should always be null! -->
   <crosspoint distance="0" elevation="310" direction="north">
      <desc>
         You will see a river to your right. Turn left and follow the
         'red circle'.
      </desc>
      <images>
         <image name="the_river.jpg"/>
         <image name="pic_of_red_circle.jpg"/>
      </images>
   </crosspoint>
   
   <!-- some track info follows -->
   <!-- 
     Missing:
        * define pavement types
   -->
   <track-info pavement="soil">
       <eatndrink distance="500" type="restaurant" immage="eat_here.jpg">
          That was a nice place to have some beer...
       </eatndrink>
       <anecdote distance="800" image="knottyTom_done.jpg">
          People say that knottyTom smashed his bike to nirwana here.
       </anecdote>
       <!-- point of interest -->
       <poi distance="900" image="a_rock.jpg">
          See this rock to your right hand. Looks funny.
       </poi>
   </track-info>
   
   <!-- next crosspoint, distance measured to last crosspoint, see that we have
        profile information, pavement will be taken from track-info.
   -->
   <crosspoint distance="1000" elevation="400" direction="north-west">
     <desc>
        Watch out for the old oak tree. Pass it left side and follow the
        'yellow bar". There are three ways to go! Follow the most left.
     </desc>
     <images>
         <image name="oak_tree_left.jpg"/>
      </images>
   </crosspoint>
   
   <!-- and so on .... -->

</crosspoints>

</tour-guide>
 
und hier der output:

Code:
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<style type="text/css"></style>
<title>Bike Tour XML</title>
</head>
<body>
<hr>
<h1>knottyTom's TourGuide System</h1>
<hr>
<hr>
   Please see that this is the 0.1 version of the stylesheet missing all of
   the neat features (like having images). It is more a 'proof of concept' than
   a selling argument.
   <hr>
<hr>
<h2>Test Tour --- Dont Take It Serious</h2>
<p>A description of the tour should go here...</p>
<ul>
<li>Fitness: middle</li>
<li>Tech: high</li>
<li>Type: one_way</li>
<li>Duration: 05:30hrs</li>
</ul>
<h2>How To Get There</h2>
<ul>
<li>Via <b>car</b>:
       tell me here</li>
<li>Via <b>train</b>:
       tell me here</li>
<li>Via <b>airplane</b>:
       kidding?</li>
</ul>
<h2>Useful Maps</h2>
<ul>
<li>Map 172, Kompass</li>
<li>Map 170, Kompass</li>
</ul>
<hr>
<h2>The Tour Info Starts Here</h2>
<hr>
<p>
<b>Crosspoint</b>
   (dist:<b>0</b>/
      elevation:<b>310</b>/
      direction to go:<b>north</b>)
   
         You will see a river to your right. Turn left and follow the
         'red circle'.
      </p>
<p>Track Info (<b>Pavement</b>: soil)</p>
<ul>
<li>Eatndrink at <b>500</b>:
          That was a nice place to have some beer...
       
       (Type: restaurant).
    </li>
<li>Anecdote at <b>800</b>:
          People say that knottyTom smashed his bike to nirwana here.
       </li>
<li>Point-Of-Interest at <b>900</b>:
          See this rock to your right hand. Looks funny.
       </li>
</ul>
<p>
<b>Crosspoint</b>
   (dist:<b>1000</b>/
      elevation:<b>400</b>/
      direction to go:<b>north-west</b>)
   
        Watch out for the old oak tree. Pass it left side and follow the
        'yellow bar". There are three ways to go! Follow the most left.
     </p>
</body>
</html>
 
Hi,

ich hab jetzt mal ein paar Bilder (hoffentlich krieg ich keinen Aerger mit mtb-news.de deswegen)
eingebaut. Die angegebene Tour gibt es zwar real, aber die Daten sind alle gefakt!

Um das anzugucken einfach das zip-File auspacken und die html-Datei anschauen.

Das ist alles mit einem neuen StyleSheet erstellt! Das urspruenglich gepostete is somit
obsolet.

enjoy,
knottyTom
 

Anhänge

Hi,

ich hab jetzt mal das Stylesheet internationalisiert (i18n, halt ;-). Deswegen
findet ihr im Anhang die englische und deutsche Version der Ausgabe. Die Texte
an sich sind natuerlich in der Sprache wie sie im XML-File stehen.

So Sachen wie Strassenbelag stehen noch auf Englisch drin, weil ich diese
als Schluessel fuer andere Prozesse (Generierung eines grafischen Hoehen-
profils mit Visualisierung des Belags, ...) noch brauche. Aber das stellt kein
echtes Problem dar, da ich diese Sachen in einem zweiten Uebersetzungslauf
abbilden kann (und eine sprachliche Abbildung vielleicht gar nicht noetig ist,
wenn ich erstmal ein Image hab...).

Nach dieser Aktion arbeite ich nunmehr daran, euch das Werkzeug zur Verfuegung
zu stellen, damit ihr damit rumspielen koennt. Es ist zwar nicht schwer, aber
bissi Docu sollte ich wohl doch noch schreiben. ;-)

Mein Plan ist:
* Download the zip
* Unpack
* Edit one file (one(two=for language) entries)
* ant create-tour (<- das fehlt noch [4hrs of work, approx.])
* ant gen-tour-html (<- das geht schon)
* enjoy your html output

Das waer's doch, oder? Btw, ich vermiss bissl das Feedback.

bis denn,
knottyTom
 

Anhänge

Hi,

ich werde ab jetzt versionsorientiert (da eine erste Version fuer Anwender vorhanden ist)
posten. Deswegen ab jetzt in

TourGuide - XML - Version 0.3 (Ihr koennt jetzt testen)


read me there,
knottyTom
 
Ich entwickle so etwas in der Art als Handy-Applikation, wollte aber eine DB zugrunde legen und ein Tool um die Daten einzupflegen, aber dürfte ja kein Problem sein von XML in eine DB zu Ex- oder Importieren.

Abschluß des Projektes soll Ende August, Anfang September sein.
 
Hat zwar momentan noch nicht so eine hohe Bedeutung, aber vielleicht sollte man für einige Strecken in Zukunft auch Geo-Koordinaten erfassen, die dann mit jedem GPS navigierbar sind. Mit Mapquest lassen sich die Geo-Koordinaten visuell auch ohne GPS am PC nachvollziehen. Interessant wäre auch das Gegenteil (also aus Karten die Geo-Koordinaten ermitteln).
 
Hi NuMetal,

der Datenaustausch sollte wirklich funktionieren, wenn die Schemata (DB, XML) einigermassen
zusammenpassen, denke ich.

So ein Tool zur Datenerfassung schwebt mir auch vor (fuer version 0.15, oder so). Schreibst
du das in Java? Meine XML-Fassung ist vermutlich eher was fuer Geeks ;)

Kann man sich deine Sachen schon irgendwo angucken (release early!)? Oder was dazu
lesen?

Eine DB fuer mein System hab ich nat auch im Hinterkopf. So am Server (!), aber ne DB am
Handy? Das muss ja ultra-lite sein. Bei mir mehr mySql.

Erzaehl mal mehr!

read ya,
knottyTom
 
mightyEx schrieb:
Hat zwar momentan noch nicht so eine hohe Bedeutung, aber vielleicht sollte man für einige Strecken in Zukunft auch Geo-Koordinaten erfassen, die dann mit jedem GPS navigierbar sind. Mit Mapquest lassen sich die Geo-Koordinaten visuell auch ohne GPS am PC nachvollziehen. Interessant wäre auch das Gegenteil (also aus Karten die Geo-Koordinaten ermitteln).

Hi mightyEx,

tatsaechlich hab ich mir sowas schon mal angeguckt. Eine solche Technologie zu
integrieren waere natuerlich der Traum.

Aber wie ich das sehe, sind diese Formate (ich sah kuerzlich ca. 6 verschiedene
fuer _eine_ Tour) noch nicht normiert. Geschweige denn 'open source' (und
darunter mach ich das nicht!).

Aber, ueber meinen XML-Ansatz versuch ich das Ganze offen fuer Sowas zu halten.
Mal sehen was dabei rauskommt. Im Moment muss ich mich eh eher um die Basics
kuemmern

Ich muss aber sagen, dein Posting war das Erste, das ne innovative Idee brachte.
Danke!

regards,
knottyTom
 
@knottyTom

habe mir die Datei runtergeladen und angeschaut. Ich finde es vom Ansatz her nicht schlecht aber für meinen Geschmack sind zu viele Englische Begriffe drin. Ich denke du willst eine Tourendatenbank erstellen und kein Softwareupdate.

Warum sind die Überschriften in Englisch? :confused:
Mich stören auch die Begriffe wie "Crosspoint" " Elevation" "Track Info" " Pavement" und viele mehr.

für dich mag dies ja alles logisch sein, weil du es als Softwareentwickler so gewohnt bist, aber ich denke der Grossteil der Anwender wird dadurch nur verunsichert und die Tourenbeschreibung ist alles andere als Übersichtlich

gruss bergsocke
 
Vielleicht wären (optional erstellbare) Language-Packs das richtige. So kann man den TourGuide in quasi allen möglichen Sprachen nutzen. Wenn das Language-Pack zudem offen dokumentiert ist, kann sich praktisch jeder sein eigenes Language-Pack in der gewünschten Sprache erstellen.
 
Zurück