|Version 9 (modified by dtea, 6 years ago)|
The contract between the framework and one observer is composed of two files located on observer side :
To learn more : http://www.w3.org/QA/Tools/Unicorn/contract/
This file describes the communication protocol between an observer and the framework who wants to use it. It defines all communication methods with their parameters and values allowed.
- Step 1 :
Write an XML header, root tag called application and define XML namespace attributs used.
<?xml version="1.0" encoding="utf-8"?> <application xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://research.sun.com/wadl wadl.xsd" xmlns="http://research.sun.com/wadl" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:uco="http://www.w3.org/unicorn/observationresponse"> ... </application>
- Step 2 :
In this part, we are going to define severals ressources of our observer.
In our case, we have just one resource, calculator.php, based on http://localhost/ (Full path of our observer will be http://localhost/calculator.php).
<?xml version...?> <application...> <resources base="http://localhost/"> <resource uri="calculator.php"> ... </resource> </resources> </application>
- Step 3 :
Now, we have to define methods of our observer.
There is two attributs for tag method :
- name : GET or POST.
- id : method's key name. We'll use this id in observer.rdf.
In our case, there is just one method. It takes 3 parameters (of which two are optional).
- uri : path of a file which contains some simple arithmetic operations.
- x2 : it's a complex type to multiply results by 2. We'll describe this more in details later.
- xn : to multiply results by n.
<method name="GET" id="CalculatorGET"> <request> <query_variable name="uri" /> <query_variable name="x2" type="tX2"/> <query_variable name="xn"/> </request> </method>
- Step 4 :
In step 3, we have defined a parameter "x2" with "tX2" type.
Only two values are possible for this parameter : 0 or 1.
If 1, results will be multiply by 2.
So, we are going now to definie a schema for our new type "tX2.
<xs:schema> <xs:element name="tX2"> <xs:complexType> <xs:choice> <xs:element name="0" /> <xs:element name="1" /> </xs:choice> </xs:complexType> </xs:element> </xs:schema>
You can see full observer.wadl here.