Examples from an actual file:

An example sketch:

<sketch id="437cdb1f-8b15-413e-8380-9cdc89b1e796" units="himetric"> <sketcher> <id>6c1a64b6-461c-4940-af9e-f46d879c6942</id> <dpi x="96.0" y="96.0"/> <nickname>George</nickname> </sketcher> <study>none</study> <domain>unknown</domain> ... points, shapes, edits here ... </sketch>

An example point:

<point id="d2d74fba-600c-4d5e-bdb7-e2220606ca5c" name="point" time="1131556341928" x="2064.0" y="3969.0"/>

An example stroke:

<shape author="6c1a64b6-461c-4940-af9e-f46d879c6942" color="-16777216" height="1" id="b06474bc-4add-467a-946a-089cc9dde049" laysInk="true" name="stroke" orientation="0.0" penTip="Ball" raster="CopyPen" time="1131556342350" type="Stroke" width="150"> <arg type="Point">d2d74fba-600c-4d5e-bdb7-e2220606ca5c</arg> ... more points ... <arg type="Point">919fc0df-7a9a-42aa-8f4e-a458f8dd099c</arg> </shape>

An example erase stroke:

<shape author="6c1a64b6-461c-4940-af9e-f46d879c6942" color="-16777216" height="1" id="ad629f4e-3ea5-4253-92a7-5ba23eea58de" name="erasestroke" orientation="0.0" penTip="Ball" raster="CopyPen" time="1131556345609" type="EraseStroke" width="150"> <arg type="Point">6ffe0685-cc78-400d-a465-5b132b6264e1</arg> ... more points ... <arg type="Point">fc877185-5d4b-4ccd-95cd-545906bead6b</arg> </shape>

An example sub-stroke:

<shape author="6c1a64b6-461c-4940-af9e-f46d879c6942" color="-16777216" height="1" id="f640cad6-e072-4aa4-96c9-8e6b2d303586" laysInk="true" name="stroke" orientation="0.0" penTip="Ball" raster="CopyPen" subStrokeOf="b06474bc-4add-467a-946a-089cc9dde049" time="1131556345500" type="Stroke" width="150"> <arg type="Point">7f04f9a4-b162-44a3-af13-9046c76ba36c</arg> ... more points ... <arg type="Point">919fc0df-7a9a-42aa-8f4e-a458f8dd099c</arg> </shape>

An example erase edit:

<edit id="98a4d3cb-329e-45ef-a4b4-040f3831f0cc" time="1131556345500" type="Erase"> <trigger type="EraseStroke">ad629f4e-3ea5-4253-92a7-5ba23eea58de</trigger> <arg type="Stroke">b06474bc-4add-467a-946a-089cc9dde049</arg> </edit>

An example erase edit where the trigger is erased:

<edit id="7699bb78-80fd-40dc-b15a-6a99801166ae" time="1131556345984" type="Erase"> <trigger type="EraseStroke">ad629f4e-3ea5-4253-92a7-5ba23eea58de</trigger> <arg type="EraseStroke">ad629f4e-3ea5-4253-92a7-5ba23eea58de</arg> </edit>

An example mediaInfo reference:

<mediaInfo startTime="1142623034363" type="audio"> <id>3373d837-216c-4aa6-844f-2fede37ac6c1</id> <filename>Warmup1_video.wav</filename> </mediaInfo>

An example word:

<speech author="72dcdc17-e442-420b-8f9c-390c48e62f76" endTime="1142623039388" id="4b06c01f-f560-4e9a-aff4-c9b2f39231a6" score="-3452075" source="3373d837-216c-4aa6-844f-2fede37ac6c1" startTime="1142623039208" type="word" word="around" wordForm="2"/>

An example silence:

<speech author="a24cdc1a-66cc-4164-9ed2-cd50e1193f05" endTime="1142623037310" id="c6c45894-9483-4c0a-9be9-31b6c2c3ea16" score="-1583032" source="5f77e990-a4d3-4bef-a01f-f55d78b65684" startTime="1142623037250" type="silence"/>

An example phrase:

<speech author="72dcdc17-e442-420b-8f9c-390c48e62f76" endTime="1142623038720" id="5988c431-aada-44c2-a41c-9f7dd97d741f" source="3373d837-216c-4aa6-844f-2fede37ac6c1" startTime="1142623038170" type="phrase"> <arg type="word">6c6f8f05-2b11-4d8f-906c-54349c7e51f9</arg> <arg type="silence">492f98fa-fc61-42dd-8fb7-a9bae11a5122</arg> <arg type="word">18b7aa9a-0892-44d6-8a64-0d09a6f0c395</arg> </speech>

Hand generated examples:

An example of a simple sketch:

<?xml version="1.0" encoding="UTF-8"?> <sketch id="437cdb1f-8b15-413e-8380-9cdc89b1e796" units="himetric"> <sketcher> <id>6c1a64b6-461c-4940-af9e-f46d879c6942</id> <dpi x="96.0" y="96.0"/> </sketcher> <study>none</study> <domain>unknown</domain> <point id="d2d74fba-600c-4d5e-bdb7-e2220606ca5c" name="point" time="1131556341928" x="2064.0" y="3969.0"/> <point id="f27bdfb1-d73c-4476-9b2b-946e737868be" name="point" time="1131556341984" x="2064.0" y="3942.0"/> <shape author="6c1a64b6-461c-4940-af9e-f46d879c6942" color="-16777216" height="1" id="b06474bc-4add-467a-946a-089cc9dde049" laysInk="true" name="stroke" orientation="0.0" penTip="Ball" raster="CopyPen" time="1131556341984" type="Stroke" width="150"> <arg type="Point">d2d74fba-600c-4d5e-bdb7-e2220606ca5c</arg> <arg type="Point">f27bdfb1-d73c-4476-9b2b-946e737868be</arg> </shape> </sketch>

An example of an erase edit with multiple arguments:

<edit id="98a4d3cb-329e-45ef-a4b4-040f3831f0cc" time="1131556345500" type="Erase"> <trigger type="EraseStroke">ad629f4e-3ea5-4253-92a7-5ba23eea58de</trigger> <arg type="Stroke">b06474bc-4add-467a-946a-089cc9dde049</arg> <arg type="Stroke">ab3916ef-d4ad-67a7-6a65-9cc9dde04905</arg> </edit>

In the following example of a deletion edit, the user first draws a stroke. Then the user draws two more strokes which are interpreted as a CrossDelete. Then the CrossDelete triggers the deletion of the original stroke followed by a separate deletion of the CrossDelete itself. This is a deletion because it was triggered by the system and not the user (user actions such as an erasure and erase edits; system actions like this are deletion edits). Also, the edit actions do not delete their triggers. In this case the CrossDelete is deleted one second after the original stroke is deleted. This allows us to specify a richer set of behavior. Here is the example:

<shape author="00000000-0000-0000-00000-000000000000" color="-16777216" height="1" id="10000000-0000-0000-00000-00000000000" laysInk="true" name="stroke" orientation="0.0" penTip="Ball" raster="CopyPen" time="1140000000000" type="Stroke" width="150"> <arg type="Point">c7fd8e03-d950-4ec3-bbc5-d1d407c96de9</arg> ... more points ... <arg type="Point">8e6a4254-54dd-440c-ad26-ccdac28fae21</arg> </shape> <shape author="00000000-0000-0000-00000-00000000000" color="-16777216" height="1" id="20000000-0000-0000-00000-00000000000" laysInk="true" name="stroke" orientation="0.0" penTip="Ball" raster="CopyPen" time="1140000005000" type="Stroke" width="150"> <arg type="Point">96afea7f-0c3f-4913-87b4-f84ac13c5ec9</arg> ... more points ... <arg type="Point">8c8f0a23-097e-4b73-9a8a-0270b686ee58</arg> </shape> <shape author="00000000-0000-0000-00000-00000000000" color="-16777216" height="1" id="30000000-0000-0000-00000-00000000000" laysInk="true" name="stroke" orientation="0.0" penTip="Ball" raster="CopyPen" time="1140000010000" type="Stroke" width="150"> <arg type="Point">bf9f8a6b-8ecc-4af5-a2c0-6b04f6d03d5e</arg> ... more points ... <arg type="Point">55abff90-d732-47e7-828b-72f133832186</arg> </shape> <shape type="CrossDelete" id="50000000-0000-0000-00000-000000000000" name="crossDelete" time="1140000011000"> <arg type="Stroke">20000000-0000-0000-00000-000000000000</arg> <arg type="Stroke">30000000-0000-0000-00000-000000000000</arg> </shape> <edit type="Deletion" id="60000000-0000-0000-00000-000000000000" time="1140000012000"> <trigger type="CrossDelete">50000000-0000-0000-00000-000000000000</trigger> <arg type="Stroke">10000000-0000-0000-00000-000000000000</arg> </edit> <edit type="Deletion" id="70000000-0000-0000-00000-000000000000" time="1140000013000"> <trigger type="CrossDelete">50000000-0000-0000-00000-000000000000</trigger> <arg type="CrossDelete">50000000-0000-0000-00000-000000000000</arg> </edit>

Aliases are used often in the language. Here is an example of an arrow where the alias is used to name the head of the arrow:

<shape id="a0000000-0000-0000-00000-00000000000" name="arrow" time="1140000000000" type="Arrow"> <arg type="Line">a1000000-0000-0000-00000-00000000000</arg> <arg type="Line">a2000000-0000-0000-00000-00000000000</arg> <arg type="Line">a3000000-0000-0000-00000-00000000000</arg> <alias type="Point" name="head">11000000-0000-0000-00000-00000000000</arg> </shape>