# 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. 2 U (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 string) of 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 defined) type</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>`