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> <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"/> <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"/> <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>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>