From 7d7f51106902bd3ab79049c740101e393ba1e99a Mon Sep 17 00:00:00 2001 From: Anders Nilsson <anders.nilsson@cs.lth.se> Date: Wed, 29 Aug 2007 14:03:07 +0200 Subject: [PATCH] Added config-sheet.xml by Pierre Nugues, t be used for generating input forms. Created an XML schema for the config-sheet xml. --- examples/RobotForm.xsd | 132 ++++++++++++++++++++++++++ examples/config-sheet.xml | 190 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 322 insertions(+) create mode 100644 examples/RobotForm.xsd create mode 100755 examples/config-sheet.xml diff --git a/examples/RobotForm.xsd b/examples/RobotForm.xsd new file mode 100644 index 0000000..1a58494 --- /dev/null +++ b/examples/RobotForm.xsd @@ -0,0 +1,132 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- Written by hand using Emacs by Anders Nilsson <anders.nilsson@cs.lth.se> --> +<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified" version="3.0.1"> + <xs:annotation> + <xs:appinfo> + XML Schema for the form markup language developed by Pierre + Nugues (pierre.nugues@cs.lth.se) for use in the SMErobot EU FP6 + project. + </xs:appinfo> + </xs:annotation> + + <xs:element name="configuration-sheet" type="ConfigSheetType"/> + <xs:element name="specifications" type="SpecificationsType"/> + <xs:element name="spec" type="SpecType"/> + <xs:element name="one-of" type="OneOfType"/> + <xs:element name="option" type="OptionType" /> + <xs:element name="command" type="CommandType" /> + <xs:element name="param" type="ParamType" /> + <xs:element name="img" type="ImgType" /> + <xs:element name="snd" type="SndType" /> + <xs:element name="tasks" type="TasksType" /> + <xs:element name="task" type="TaskType" /> + <xs:element name="args" type="ArgsType" /> +<!-- <xs:element name="meta-arg" type="MetaArgsType" /> --> + <xs:element name="task-sequence" type="TaskSequenceType" /> + + <xs:complexType name="ConfigSheetType"> + <xs:sequence> + <xs:element ref="specifications" /> + <xs:element ref="tasks" /> + <xs:element ref="task-sequence" /> + </xs:sequence> + <xs:attribute name="name" type="xs:string" /> + <xs:attribute name="id" type="xs:string" /> + </xs:complexType> + + <xs:complexType name="SpecificationsType"> + <xs:sequence> + <xs:element ref="spec" minOccurs="1" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + + <xs:complexType name="SpecType"> + <xs:sequence> + <xs:element ref="one-of" minOccurs="1" maxOccurs="unbounded"/> + </xs:sequence> + <xs:attribute name="name" type="xs:string" /> + <xs:attribute name="id" type="xs:string" /> + </xs:complexType> + + <xs:complexType name="OneOfType"> + <xs:sequence> + <xs:element ref="option" minOccurs="1" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + + <xs:complexType name="OptionType"> + <xs:sequence> + <xs:element name="meta-arg" minOccurs="0"> + <xs:complexType> + <xs:simpleContent> + <xs:extension base="xs:string"> + <xs:attribute name="name" type="xs:string" /> + </xs:extension> + </xs:simpleContent> + </xs:complexType> + </xs:element> + <xs:element ref="command" minOccurs="1"/> + <xs:element ref="param" minOccurs="0" maxOccurs="unbounded"/> + <xs:element ref="img" minOccurs="0"/> + <xs:element ref="snd" minOccurs="0"/> + </xs:sequence> + </xs:complexType> + + <xs:complexType name="CommandType"> + <xs:attribute name="code" type="xs:string" /> + </xs:complexType> + + <xs:complexType name="ParamType"> + <xs:attribute name="name" type="xs:string" /> + <xs:attribute name="text" type="xs:string" /> + <xs:attribute name="value" type="xs:string" /> + <xs:attribute name="unit" type="xs:string" /> + </xs:complexType> + + <xs:complexType name="ImgType"> + <xs:attribute name="src" type="xs:string" /> + </xs:complexType> + + <xs:complexType name="SndType"> + <xs:attribute name="src" type="xs:string" /> + </xs:complexType> + + <xs:complexType name="TasksType"> + <xs:sequence> + <xs:element ref="task" minOccurs="1" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + + <xs:complexType name="TaskType"> + <xs:sequence> + <xs:element ref="args" minOccurs="0"/> + <xs:element ref="one-of" minOccurs="0"/> + </xs:sequence> + <xs:attribute name="name" type="xs:string" /> + <xs:attribute name="id" type="xs:string" /> + </xs:complexType> + + <xs:complexType name="ArgsType"> + <xs:sequence> + <xs:element name="arg0" type="xs:string"/> + <xs:element name="arg1" type="xs:string"/> + </xs:sequence> + </xs:complexType> + +<!-- <xs:complexType name="MetaArgsType"> --> +<!-- <xs:simpleContent> --> +<!-- <xs:extension base="xs:string"> --> +<!-- </xs:extension> --> +<!-- </xs:simpleContent> --> +<!-- <xs:attribute name="name" type="xs:string" /> --> +<!-- </xs:complexType> --> + + <xs:complexType name="TaskSequenceType"> + <xs:sequence> + <xs:element name="task" type="TaskType" maxOccurs="unbounded"/> + </xs:sequence> + </xs:complexType> + + + +</xs:schema> diff --git a/examples/config-sheet.xml b/examples/config-sheet.xml new file mode 100755 index 0000000..d4d22d3 --- /dev/null +++ b/examples/config-sheet.xml @@ -0,0 +1,190 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<configuration-sheet name="wood sign process" id="id001" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation='RobotForm.xsd' > + <specifications> + <spec name="shape" id="sid001"> + <one-of> + <option> + <command code="code/sharp.cd"/> + <param name="shape" text="sharp corners" value="sharp"/> + <img src="img/shape_sharp.jpg"/> + <snd src="snd/sharp.wav"/> + </option> + <option> + <command code="code/soft.cd"/> + <param name="shape" text="soft corner" value="soft"/> + <param name="diameter" text="Corner diameter [mm]" unit="mm"/> + <img src="img/shape_soft.jpg"/> + </option> + <option> + <command code="code/cut.cd"/> + <param name="shape" text="cut corners" value="cut"/> + <param name="height" text="Corner height [mm]" unit="mm"/> + <img src="img/shape_cut.jpg"/> + </option> + </one-of> + </spec> + <spec name="hole-configuration" id="sid002"> + <one-of> + <option> + <command code="code/hole.cd"/> + <param name="hole-configuration" text="one" value="one"/> + <img src="img/hole_one.jpg"/> + </option> + <option> + <command code="code/hole.cd"/> + <param name="hole-configuration" text="two" value="two"/> + <img src="img/hole_two.jpg"/> + </option> + <option> + <command code="code/hole.cd"/> + <param name="hole-configuration" text="four" value="four"/> + <img src="img/hole_four.jpg"/> + </option> + </one-of> + </spec> + <spec name="pattern-text" id="sid003"> + <one-of> + <option> + <command code="code/pattern-text.cd"/> + <param name="pattern" text="pattern1" value="pattern1"/> + <img src="img/pattern_one.jpg"/> + </option> + <option> + <command code="code/pattern-text.cd"/> + <param name="pattern" text="pattern2" value="pattern2"/> + <img src="img/pattern_two.jpg"/> + </option> + </one-of> + <one-of> + <option> + <command code="code/drawing.cd"/> + <param name="text" text="drawing" value="file"/> + <img src="img/text_area.jpg"/> + </option> + <option> + <command code="code/text.cd"/> + <param name="text" text="text" value="text"/> + <param name="text-value"/> + </option> + </one-of> + </spec> + </specifications> + <tasks> + <task name="calibration" id="tid001"> + <args> + <arg0>robot</arg0> + <arg1>work piece</arg1> + </args> + <!-- the options need input and output data. They are to be determined --> + <one-of> + <option> + <command code="code/preprog.cd"/> + <param name="calibration" text="preprogrammed" value="preprogrammed"/> + </option> + <option> + <meta-arg name="points">3</meta-arg> + <command code="manual.cd"/> + <param name="calibration" text="manual" value="manual"/> + </option> + <option> + <command code="code/touch_sensor.cd"/> + <param name="calibration" text="touch sensor" value="touch"/> + </option> + </one-of> + </task> + <task name="milling" id="tid002"> + <args> + <arg0>robot</arg0> + <arg1>wood sign corners</arg1> + </args> + <one-of> + <option> + <command code="code/skip.cd"/> + <param name="milling" text="skip" value="skip"/> + </option> + </one-of> + </task> + <task name="selection-drill-holes" id="tid003"> + <args> + <arg0>robot</arg0> + <arg1>work piece</arg1> + </args> + <one-of> + <option> + <command code="code/skip.cd"/> + <param name="hole" text="skip" value="skip"/> + </option> + <option> + <command code="code/manual.cd"/> + <param name="hole" text="automatic" value="automatic"/> + </option> + <option> + <command code="code/lead-through.cd"/> + <param name="hole" text="lead-through" value="lead-through"/> + </option> + <option> + <command code="code/gesture.cd"/> + <param name="hole" text="gesture" value="gesture"/> + </option> + </one-of> + </task> + <task name="drilling" id="tid004"> + <args> + <arg0>robot</arg0> + <arg1>holes</arg1> + </args> + <one-of> + <option> + <command code="code/skip.cd"/> + <param name="drilling" text="skip" value="skip"/> + </option> + </one-of> + </task> + <task name="selection-text-area" id="tid005"> + <args> + <arg0>robot</arg0> + <arg1>text area</arg1> + </args> + <one-of> + <option> + <command code="code/skip.cd"/> + <param name="selection-text-area" text="skip" value="skip"/> + </option> + <option> + <command code="code/manual.cd"/> + <param name="selection-text-area" text="automatic" value="automatic"/> + </option> + <option> + <command code="code/lead-through.cd"/> + <param name="selection-text-area" text="lead-through" value="lead-through"/> + </option> + <option> + <command code="code/gesture.cd"/> + <param name="selection-text-area" text="gesture" value="gesture"/> + </option> + </one-of> + </task> + <task name="grinding" id="tid006"> + <args> + <arg0>robot</arg0> + <arg1>surface</arg1> + </args> + <one-of> + <option> + <command code="code/skip.cd"/> + <param name="grinding" text="skip" value="skip"/> + </option> + </one-of> + </task> + </tasks> + <task-sequence> + <task id="tid001"/> + <task id="tid002"/> + <task id="tid003"/> + <task id="tid004"/> + <task id="tid005"/> + <task id="tid006"/> + </task-sequence> +</configuration-sheet> -- GitLab