Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
TourML is a specification for the content and structure of interpretive tours. It has been developed by the cultural community, though its application is not specific and could easily be used by other fields.
- Assets are pointers or containers for media and data that appears in the tour.
- Stops are a set of Assets that are meant to be experienced together.
- Connections represent a movement from one Stop to another.
A simple directed cyclic graph That's about it. After a very naive first attempt, a great deal of feedback from professionals and vendors from the cultural sector, and the evaluation of TourML against a large variety of tours, TourML has boiled down to these 3 primary components. Stops and Connections allow you to build a directed cycle graph that represents the structure of the tour and allowed movements between the Stops. Stops then reference the Assets that are a part of the user experience. Assets are pulled out separately in order to allow them to be shared amongst Stops.
TourML documents are XML files that are an instance of the TourML XML Schema. (Learn more about XML and XML Schema.) The root element of all TourML documents must be either Tour or TourSet. The Tour element contains the structure and content for a single tour. A TourSet element is a wrapper for grouping together one or more tours. Those tours can be either inline or pointers to other tours using the TourMLRef element. You can read more about this at the TourSet element documentation.
Two example TourML instances are included with the specification:
Here is an example of an extremely simple TourML instance containing 1 Stop:
<?xml version="1.0" encoding="UTF-8"?> <tourml:Tour xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tourml="http://tapintomuseums.org/TourML" tourml:id="org.tapintomuseums.example.tour"> <tourml:Asset tourml:id="video-1"> <tourml:Source tourml:uri="video.mov"> </tourml:Asset> <tourml:Stop tourml:id="stop-1"> <tourml:Title>A Video Stop</tourml:Title> <tourml:AssetRef tourml:id="video-1" /> </tourml:Stop> </tourml:Tour>
A Note about Navigation
One of the first questions that comes up is "How do I navigate to a stop?". Usually the answer depends greatly on the technology you are using or the specifics of your applications. The goal of TourML is to represent the contents and structure of your tours. Those things should remain reusable and repurposable as technology changes or as your tour spans multiple platforms.
Given these considerations, you can still embed information along with your tour to drive your specific navigation. For example, the TAP iOS application offers a traditional numeric keypad for nonlinear user navigation. Each stop in the tour is then assign a unique keycode. These keycodes are encoded as a Property for each stop. This allows the TAP application to locate the stop corresponding to the keycode the user entered. This information is not critical to the tour content, however. Another application could present the same tour content as a table listing of all stops, allowing users to choose one at a time to visit. This example helps to define the boundary between navigation and tour content/structure. TourML will always strive to not endorse or encode specific technologies or navigation methods within the specification. This approach ensures that TourML will remain useful no matter how technology changes.