ControlAnnotations.xsd Sample

This topic inludes the source code for the ControlAnnotations.xsd Sample.

Sample Location

This sample is located in the following directory in your WebLogic Workshop installation:

BEA_HOME/weblogic81/samples/workshop/SamplesApp/JavaControlProject/docs/

Sample Source Code


001 <?xml version="1.0" encoding="UTF-8"?>
002 <!-- edited with XMLSPY v5 rel. (http://www.xmlspy.com) by Dave Read (BEA Systems, Inc.) -->
003 <!-- edited with XML Spy v4.4 U (http://www.xmlspy.com) by David Read (private) -->
004 <xs:schema targetNamespace="http://www.bea.com/2003/03/controls/" xmlns="http://www.bea.com/2003/03/controls/" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
005   <xs:element name="jc-jar">
006     <xs:annotation>
007       <xs:documentation>Describes the contents of a control jar file.</xs:documentation>
008     </xs:annotation>
009     <xs:complexType>
010       <xs:sequence>
011         <xs:element name="control" maxOccurs="unbounded">
012           <xs:annotation>
013             <xs:documentation>The configuration of a specific control</xs:documentation>
014           </xs:annotation>
015           <xs:complexType>
016             <xs:sequence minOccurs="0">
017               <xs:element name="description" type="xs:string">
018                 <xs:annotation>
019                   <xs:documentation>Description of the control.  Will have version attribute concatenated if present.</xs:documentation>
020                 </xs:annotation>
021               </xs:element>
022             </xs:sequence>
023             <xs:attribute name="label" type="xs:string" use="required">
024               <xs:annotation>
025                 <xs:documentation>The text displayed for this control in the palette (formerly "name").</xs:documentation>
026               </xs:annotation>
027             </xs:attribute>
028             <xs:attribute name="interface-class" type="xs:string" use="required">
029               <xs:annotation>
030                 <xs:documentation>The fully qualified class name of the control interface.
031 </xs:documentation>
032               </xs:annotation>
033             </xs:attribute>
034             <xs:attribute name="implementation-class" type="xs:string" use="optional">
035               <xs:annotation>
036                 <xs:documentation>Fully qualified name of the control implementation class.  Only needed if the control implementation does not follow the convention of &lt;interface>Impl in the same package as the control interface.</xs:documentation>
037               </xs:annotation>
038             </xs:attribute>
039             <xs:attribute name="insert-wizard-class" type="xs:string" use="optional">
040               <xs:annotation>
041                 <xs:documentation>Fully qualified classname for a user provided insert wizard.  If no class is provided, the default insert wizard will be used.</xs:documentation>
042               </xs:annotation>
043             </xs:attribute>
044             <xs:attribute name="version" type="xs:string" use="optional">
045               <xs:annotation>
046                 <xs:documentation>A string representation of the control version.  The format and meaning of the version is implementation specific.  Will be appended to description in tool tip.</xs:documentation>
047               </xs:annotation>
048             </xs:attribute>
049             <xs:attribute name="icon-16" type="xs:string" use="optional">
050               <xs:annotation>
051                 <xs:documentation>Path to an icon to be used in the control palette.  If no icon is provided, only the label will be displayed in the palette.</xs:documentation>
052               </xs:annotation>
053             </xs:attribute>
054             <xs:attribute name="icon-32" type="xs:string" use="optional"/>
055             <xs:attribute name="group-priority" type="xs:int" use="optional">
056               <xs:annotation>
057                 <xs:documentation>Optional group priority that can be used to organize the order in which groups of controls appear on menus.</xs:documentation>
058               </xs:annotation>
059             </xs:attribute>
060             <xs:attribute name="group-name" type="ControlGroupNameType" use="optional"/>
061             <xs:attribute name="palette-priority" type="PalettePriorityType" use="optional">
062               <xs:annotation>
063                 <xs:documentation>Used as a hint to the IDE for ordering of controls within the palette.</xs:documentation>
064               </xs:annotation>
065             </xs:attribute>
066             <xs:attribute name="display-in-palette" type="xs:boolean" use="optional" default="true">
067               <xs:annotation>
068                 <xs:documentation>Defines whether this control will be displayed in the control palette.</xs:documentation>
069               </xs:annotation>
070             </xs:attribute>
071             <xs:attribute name="resource-file" type="xs:string" use="optional">
072               <xs:annotation>
073                 <xs:documentation>Optional name of resource file to load when the control author has provided localization strings.  Note that the only values that can be localized in jc-jar.xml are:
074 1. label
075 2. version
076 3. description</xs:documentation>
077               </xs:annotation>
078             </xs:attribute>
079             <xs:attribute name="requires-extension" type="xs:boolean" use="optional" default="false"/>
080           </xs:complexType>
081         </xs:element>
082       </xs:sequence>
083       <xs:attribute name="default-group-name" type="ControlGroupNameType" use="optional">
084         <xs:annotation>
085           <xs:documentation>Default group name for controls in this jar file.  If a control has its own group-name attribute, that value will be used for that control.
086 </xs:documentation>
087         </xs:annotation>
088       </xs:attribute>
089     </xs:complexType>
090   </xs:element>
091   <xs:element name="control-tags" type="ControlType">
092     <xs:annotation>
093       <xs:documentation>Describes the annotations for a specific control</xs:documentation>
094     </xs:annotation>
095   </xs:element>
096   <xs:complexType name="ControlType">
097     <xs:annotation>
098       <xs:documentation>Structure of a control.  Note that this structure has been re-factored in beta.  A tag is defined as either a control or method tag.</xs:documentation>
099     </xs:annotation>
100     <xs:sequence>
101       <xs:element name="control-tag" type="ControlTagType" minOccurs="0" maxOccurs="unbounded">
102         <xs:annotation>
103           <xs:documentation>A tag that applies to the control instance.</xs:documentation>
104         </xs:annotation>
105       </xs:element>
106       <xs:element name="method-tag" type="MethodTagType" minOccurs="0" maxOccurs="unbounded">
107         <xs:annotation>
108           <xs:documentation>A tag that applies to a method within a JCX.  Javelin should verify that this type of tag only exists for a customized control (i.e. the control can support a JCX).</xs:documentation>
109         </xs:annotation>
110       </xs:element>
111     </xs:sequence>
112     <xs:attribute name="editor-class" type="xs:string" use="optional">
113       <xs:annotation>
114         <xs:documentation>Fully qualified class name of a user provided class (e.g. property builder)</xs:documentation>
115       </xs:annotation>
116     </xs:attribute>
117     <xs:attribute name="control-validator" type="xs:string" use="optional"/>
118     <xs:attribute name="method-validator" type="xs:string" use="optional"/>
119   </xs:complexType>
120   <xs:complexType name="BaseTagType">
121     <xs:annotation>
122       <xs:documentation>Structure of a tag that configures a control</xs:documentation>
123     </xs:annotation>
124     <xs:sequence>
125       <xs:element name="description" type="xs:string"/>
126       <xs:element name="attribute" minOccurs="0" maxOccurs="unbounded">
127         <xs:complexType>
128           <xs:complexContent>
129             <xs:extension base="TagAttributeType">
130               <xs:attribute name="required" type="xs:boolean" use="required"/>
131             </xs:extension>
132           </xs:complexContent>
133         </xs:complexType>
134       </xs:element>
135       <xs:element name="attribute-group" minOccurs="0" maxOccurs="unbounded">
136         <xs:complexType>
137           <xs:sequence>
138             <xs:element name="attribute" type="TagAttributeType" minOccurs="2" maxOccurs="unbounded"/>
139           </xs:sequence>
140           <xs:attribute name="group-type" type="AttributeGroupType" use="required"/>
141         </xs:complexType>
142       </xs:element>
143     </xs:sequence>
144     <xs:attribute name="name" type="xs:string" use="required">
145       <xs:annotation>
146         <xs:documentation>the name of the tag.  does not include prefix.</xs:documentation>
147       </xs:annotation>
148     </xs:attribute>
149     <xs:attribute name="multiple" type="xs:boolean" use="optional" default="false">
150       <xs:annotation>
151         <xs:documentation>Whether the tag can have multiple occurrences.</xs:documentation>
152       </xs:annotation>
153     </xs:attribute>
154     <xs:attribute name="validator-class" type="xs:string" use="optional">
155       <xs:annotation>
156         <xs:documentation>Fully-qualified name (as stringof an optional user provided class.  The class provides custom validation logic over the entire tag.  This provides a mechanism for control authors to implement cross attribute validation for a specific tag instance.</xs:documentation>
157       </xs:annotation>
158     </xs:attribute>
159     <xs:attribute name="display-in-editor" type="xs:boolean" use="optional" default="true"/>
160   </xs:complexType>
161   <xs:simpleType name="PalettePriorityType">
162     <xs:annotation>
163       <xs:documentation>Range of priorities allowed for Palette Display</xs:documentation>
164     </xs:annotation>
165     <xs:restriction base="xs:integer">
166       <xs:minInclusive value="1"/>
167       <xs:maxInclusive value="10"/>
168     </xs:restriction>
169   </xs:simpleType>
170   <xs:complexType name="TagAttributeType">
171     <xs:sequence>
172       <xs:element name="description" type="xs:string"/>
173       <xs:element name="type">
174         <xs:complexType>
175           <xs:choice>
176             <xs:element name="text">
177               <xs:annotation>
178                 <xs:documentation>Simple text representation</xs:documentation>
179               </xs:annotation>
180               <xs:complexType>
181                 <xs:attribute name="max-length" type="xs:int" use="optional">
182                   <xs:annotation>
183                     <xs:documentation>Max length of the text value.</xs:documentation>
184                   </xs:annotation>
185                 </xs:attribute>
186                 <xs:attribute name="long" type="xs:boolean" use="optional" default="false">
187                   <xs:annotation>
188                     <xs:documentation>An indication for the IDE as to whether the text value should be edited in place or if a text box should be opened.</xs:documentation>
189                   </xs:annotation>
190                 </xs:attribute>
191               </xs:complexType>
192             </xs:element>
193             <xs:element name="enumeration">
194               <xs:annotation>
195                 <xs:documentation>A list of valid values</xs:documentation>
196               </xs:annotation>
197               <xs:complexType>
198                 <xs:sequence>
199                   <xs:element name="value" type="xs:string" maxOccurs="unbounded">
200                     <xs:annotation>
201                       <xs:documentation>A valid value as a string</xs:documentation>
202                     </xs:annotation>
203                   </xs:element>
204                 </xs:sequence>
205               </xs:complexType>
206             </xs:element>
207             <xs:element name="boolean">
208               <xs:annotation>
209                 <xs:documentation>true/false</xs:documentation>
210               </xs:annotation>
211               <xs:complexType/>
212             </xs:element>
213             <xs:element name="decimal">
214               <xs:annotation>
215                 <xs:documentation>non-integral value</xs:documentation>
216               </xs:annotation>
217               <xs:complexType>
218                 <xs:attribute name="places" type="xs:int" use="optional">
219                   <xs:annotation>
220                     <xs:documentation>The number of decimal places</xs:documentation>
221                   </xs:annotation>
222                 </xs:attribute>
223                 <xs:attribute name="min-value" type="xs:decimal" use="optional">
224                   <xs:annotation>
225                     <xs:documentation>The minimum value inclusive</xs:documentation>
226                   </xs:annotation>
227                 </xs:attribute>
228                 <xs:attribute name="max-value" type="xs:decimal" use="optional">
229                   <xs:annotation>
230                     <xs:documentation>The maximum value inclusive</xs:documentation>
231                   </xs:annotation>
232                 </xs:attribute>
233               </xs:complexType>
234             </xs:element>
235             <xs:element name="integer">
236               <xs:annotation>
237                 <xs:documentation>Integral value</xs:documentation>
238               </xs:annotation>
239               <xs:complexType>
240                 <xs:attribute name="min-value" type="xs:long" use="optional">
241                   <xs:annotation>
242                     <xs:documentation>Minimum value inclusive</xs:documentation>
243                   </xs:annotation>
244                 </xs:attribute>
245                 <xs:attribute name="max-value" type="xs:long" use="optional">
246                   <xs:annotation>
247                     <xs:documentation>Maximum value inclusive</xs:documentation>
248                   </xs:annotation>
249                 </xs:attribute>
250               </xs:complexType>
251             </xs:element>
252             <xs:element name="date">
253               <xs:annotation>
254                 <xs:documentation>Date</xs:documentation>
255               </xs:annotation>
256               <xs:complexType>
257                 <xs:attribute name="min-value" type="xs:date" use="optional">
258                   <xs:annotation>
259                     <xs:documentation>Minimum value inclusive</xs:documentation>
260                   </xs:annotation>
261                 </xs:attribute>
262                 <xs:attribute name="max-value" type="xs:date" use="optional">
263                   <xs:annotation>
264                     <xs:documentation>Maximum value inclusive</xs:documentation>
265                   </xs:annotation>
266                 </xs:attribute>
267               </xs:complexType>
268             </xs:element>
269             <xs:element name="URI" type="xs:string"/>
270             <xs:element name="URN" type="xs:string"/>
271             <xs:element name="URL" type="xs:string"/>
272             <xs:element name="QNAME">
273               <xs:annotation>
274                 <xs:documentation>An XML qualified name prefix:local part</xs:documentation>
275               </xs:annotation>
276               <xs:complexType/>
277             </xs:element>
278             <xs:element name="XML">
279               <xs:annotation>
280                 <xs:documentation>Well-formed XML</xs:documentation>
281               </xs:annotation>
282               <xs:complexType/>
283             </xs:element>
284             <xs:element name="class-name" type="xs:string">
285               <xs:annotation>
286                 <xs:documentation>Fully-qualified class name</xs:documentation>
287               </xs:annotation>
288             </xs:element>
289             <xs:element name="class-names" type="xs:string">
290               <xs:annotation>
291                 <xs:documentation>Space-separated list of fully qualified class names</xs:documentation>
292               </xs:annotation>
293             </xs:element>
294             <xs:element name="file-path">
295               <xs:annotation>
296                 <xs:documentation>Valid file path</xs:documentation>
297               </xs:annotation>
298             </xs:element>
299             <xs:element name="custom">
300               <xs:annotation>
301                 <xs:documentation>A custom (user definedtype</xs:documentation>
302               </xs:annotation>
303               <xs:complexType>
304                 <xs:attribute name="name" type="xs:string" use="required">
305                   <xs:annotation>
306                     <xs:documentation>The name of the type</xs:documentation>
307                   </xs:annotation>
308                 </xs:attribute>
309                 <xs:attribute name="class-name" type="xs:string" use="required">
310                   <xs:annotation>
311                     <xs:documentation>The fully qualified name of the class that implements an interface for validation of a type.</xs:documentation>
312                   </xs:annotation>
313                 </xs:attribute>
314               </xs:complexType>
315             </xs:element>
316           </xs:choice>
317         </xs:complexType>
318       </xs:element>
319       <xs:element name="default-value" type="xs:string" minOccurs="0">
320         <xs:annotation>
321           <xs:documentation>Default value for the attribute.</xs:documentation>
322         </xs:annotation>
323       </xs:element>
324     </xs:sequence>
325     <xs:attribute name="name" type="xs:string" use="required">
326       <xs:annotation>
327         <xs:documentation>Attribute name
328 </xs:documentation>
329       </xs:annotation>
330     </xs:attribute>
331   </xs:complexType>
332   <xs:complexType name="ControlTagType">
333     <xs:complexContent>
334       <xs:extension base="BaseTagType">
335         <xs:attribute name="allow-declaration-override" type="xs:boolean" use="optional" default="true"/>
336       </xs:extension>
337     </xs:complexContent>
338   </xs:complexType>
339   <xs:complexType name="MethodTagType">
340     <xs:complexContent>
341       <xs:extension base="BaseTagType">
342         <xs:attribute name="method-location" type="JbcxMethodType" use="optional" default="interface-method">
343           <xs:annotation>
344             <xs:documentation>Defines the types of methods where this tag can exist.  Javelin should verify that the methods match the control implementation (e.g. the control is extensible, there is a callback interface, etc).
345 </xs:documentation>
346           </xs:annotation>
347         </xs:attribute>
348       </xs:extension>
349     </xs:complexContent>
350   </xs:complexType>
351   <xs:simpleType name="JbcxMethodType">
352     <xs:restriction base="xs:string">
353       <xs:enumeration value="interface-method"/>
354       <xs:enumeration value="callback-method"/>
355       <xs:enumeration value="both"/>
356     </xs:restriction>
357   </xs:simpleType>
358   <xs:simpleType name="ControlGroupNameType">
359     <xs:annotation>
360       <xs:documentation>Optional group name that can be used to organize the control palette.</xs:documentation>
361     </xs:annotation>
362     <xs:restriction base="xs:string"/>
363   </xs:simpleType>
364   <xs:simpleType name="AttributeGroupType">
365     <xs:restriction base="xs:string">
366       <xs:enumeration value="at-most-one"/>
367       <xs:enumeration value="exactly-one"/>
368       <xs:enumeration value="at-least-one"/>
369     </xs:restriction>
370   </xs:simpleType>
371 </xs:schema>