  -- SDL XSD Generator --  	 Buiding -   M   Compiling requires a PL/I compiler, available from Kednos (www.kednos.com).   H   The source includes a copy of the modified SDL$HEADER routine and it'sJ   include file. As well as the source for the module. The library SDL.OLB,H   supplied, contains all the internal SDL functions necessary for an SDL3   module, as well as the modified SDLHEADER module.   E   Before compiling or linking you will need to define the SDL$LIBRARY 5   logical to point to the location of the SDL source.   J   If compiling you will need to generate the SDL include files. This meansJ   using SDL to generate the PLI header files (make sure they end in ".IN")I   and then executing the relevant EDT procedures to modify the SDL output =   accordingly. The following are good examples to start with.   '     $ SDL/ALPHA/LAN=(PLI=.IN) SDLSEMDEF $     $ SDL/ALPHA/LAN=(PLI=.IN) SDLSHR&     $ SDL/ALPHA/LAN=(PLI=.IN) SDLNODEF'     $ SDL/ALPHA/LAN=(PLI=.IN) SDLTYPDEF   G   Dont forget to copy SDLSHR.IN into SDL$LIBRARY after doing the above, @   or copying SDLSHR.SDL into SDL$LIBRARY before doing the above.  *   Next execute the TPU and EDT procedures:+     $ EDIT/EDT/COMMAND=SDLSHR.EDT SDLSHR.IN '     $ EDIT/EDT/COMMAND=SDLVERSION.EDT - *     _$ SDLVERSION.OPT/OUTPUT=SDLVERSION.IN  B   The above commands where taken from SDLBLD.COM from the SDL kit.  J   To link and/or compile execute the procedure BUILD_SDLXSD.COM in [.SRC].'   Pass the parameter LINK to link only.        $ SET DEFAULT [.SRC}  
   Linking:       $ @BUILD_SDLXSD LINK     Compiling:       $ @BUILD_SDLXSD    Setup -   G   Setup is easy, simply define the logical ALPHA_SDLXSD to point to the G   SDLXSD executable and away you go. Simply specify a language of "XSD"    when you run SDL.   &   $ SDL/ALPHA/LANGUAGE=XSD EXAMPLE.SDL  D   You might want to add it to the SDL startup procedure and copy theI   executable, ALPHA_SDLXSD.EXE to the module directory to keep everything    together.   K   The file EXAMPLE.SDL is the example from the SDL manual from page 4-1. An !   example of the output is below.   	 Options -      o. SDLXSD_OPTIONS F 	This logical was introduced specifically for generating configuration> 	file schemas. This allows the XML to have the same fields and@ 	value restrictions as the configuration block, just without the 	prefix and/or tag.   D 	SDLXSD_OPTIONS translates to a comman delimited list. Currently the 	only two options are:  8 	    NOPREFIX	Disables the prefix set in the SDL source.2 	    NOTAG	Disables the tag set in the SDL source.   Quirks -  E   o.	Unfortunately, the XML standard says that the dollar sign is not ? 	acceptable in a name so SDLXSD converts this to an underscore. E 	There is no command line qualifier to switch this on and off as that E 	would require changes to the main SDL program and other things. This B 	isn't something I can or want to do. Besides, the only XML parserE 	for VMS that supports schemas that I know of, libxml2, won't support  	it.  F   o.	G- and H-Float are supported as "xsd:anyType". D- and F-Float areC 	supported as "xsd:double" and "xsd:float", respectively. If anyone E 	wants this changed then contact me and we'll discuss it. I don't use  	this.   Changes to SDL -  G   o.	The routine SDL$HEADER only accepted comment begin and end strings F 	that were two characters. I have changed this to support XML comments: 	which are four and three characters long ("<!--", "-->").  D   o.	Once again the SDL$HEADER routine has been changed, this was toF 	prevent NULLs from appearing at the end of the source filename. NULLs! 	aren't allowed in XML documents.    XSD Translation Summary -    	 SDL Declaration		XSD Output   .     MODULE name			<!-- *** MODULE name *** --> 	IDENT string		<!-- string -->  !     /* comment			<!-- comment -->        CONSTANT x EQUALS n		n/a       ENTRY name			n/a!         PARAMETER (type, ...)	n/a  	    ANY			n/a 	    DESCRIPTOR		n/a
 	    IN			n/a  	    OUT			n/a 	    NAMED param-name	n/a  	    VALUE		n/a  	    REF			n/a 	    DEFAULT		n/a  	    OPTIONAL		n/a 	TYPENAME type-name	n/a  	RETURNS return-type	n/a 	VARIABLE		n/a 	ALIAS			n/a 	LINKAGE			n/a  -     name STRUCTURE		<xsd:element name="name">  				  <xsd:complexType>  				    <xsd:sequence>	 				    . 	 				    . 	 				    .  				    </xsd:sequence>  				  </xsd:complexType> 				</xsd:element>  *     name UNION			<xsd:element name="name"> 				  <xsd:complexType>  				    <xsd:sequence> 				      <xsd:choice> 					<xsd:element .... 					. 					. 					. 					<xsd:element .... 					. 					. 					. 				      </xsd:choice>  				    </xsd:sequence>  				  </xsd:complexType> 				<xsd:element>     C     The following types will generate XML similar to the following:    	<xsd:element name="name"> 	  <xsd:simpleType> # 	    <xsd:restriction base="type"/>  	  </xsd:simpleType> 	</xsd:element>   L     If the element is within a structure or union then the facet "maxOccurs"M     on the element will be set to 0. Some types have extra restrictions also. !     These will be detailed below.        name BYTE			xsd:byte     name WORD			xsd:short      name LONGWORD		xsd:int     name QUADWORD		xsd:long      name OCTAWORD		xsd:integer(     name BYTE UNSIGNED		xsd:unsignedByte)     name WORD UNSIGNED		xsd:unsignedShort *     name LONGWORD UNSIGNED	xsd:unsignedInt+     name QUADWORD UNSIGNED	xsd:unsignedLong &     name OCTAWORD UNSIGNED	xsd:integer 				    minInclusive="0"     name F_FLOATING		xsd:float     name D_FLOATING		xsd:double       name G_FLOATING		xsd:anyType      name H_FLAOTING		xsd:anyType&     name DECIMAL precision	xsd:decimal 	(p,q)			    totalDigits=" 				    fractionDigits="&     name BITFIELD LENGHT n	xsd:integer 				    minInclusive="0"  				    maxInclusive="(2^n) - 1" 	MASK			    n/a  	SIGNED			    n/a      name BOOLEAN		xsd:boolean &     name CHARACTER LENGTH n	xsd:string 				    maxLength="n"   @     name ADDRESS		xsd:unsignedInt (VAX) | xsd:unsignedLong (AXP)         COMMON storage class	n/a       GLOBAL storage class	n/a 	with /GLOBALREF		n/a        BASED pointer-name  L     DIMENSION [lbound:]hbound	Arrays are handled a bit differently. An array. 				will generate an element of the array name, 				containing an element with a "maxOccurs"$ 				of hbound. This element is named- 				prefix + tag + "_item" with the base type - 				of the array. See example (opr_w_operand) 
 				below.       ORIGIN member-name		n/a   	 Contact -   /   Tim Sneddon			email:	tesneddon(at)bigpond.com   
 Examples -  >   The following was generated using the example on page 4-1 ofJ   "VAX SDL (structure Definition Language)", Software Version VAX SDL 3.0.   <!--***************************************************************************************************************************-->@ <!-- Created: 14-MAY-2003 09:09:41 by OpenVMS SDL EV1-60     -->V <!-- Source:  13-MAY-2003 17:12:04 YSPROG:[TSNEDDON.SOURCE.SDLXSD]EXAMPLE.SDL;2    --> <!--***************************************************************************************************************************-->9 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">  <!-- *** MODULE $defopr *** --> $   <xsd:element name="block_list_id">     <xsd:simpleType>0       <xsd:restriction base="xsd:unsignedLong"/>     </xsd:simpleType>    </xsd:element>P <!-- assign values to context identifiers                                    -->   <xsd:element name="operator">      <xsd:complexType>        <xsd:sequence>3         <xsd:element name="opr_w_id" maxOccurs="0">            <xsd:simpleType>/             <xsd:restriction base="xsd:short"/>            </xsd:simpleType>          </xsd:element>6         <xsd:element name="opr_w_count" maxOccurs="0">           <xsd:simpleType>/             <xsd:restriction base="xsd:short"/>            </xsd:simpleType>          </xsd:element>5         <xsd:element name="opr_w_size" maxOccurs="0">            <xsd:simpleType>/             <xsd:restriction base="xsd:short"/>            </xsd:simpleType>          </xsd:element>9         <xsd:element name="opr_w_last_use" maxOccurs="0">            <xsd:simpleType>/             <xsd:restriction base="xsd:short"/>            </xsd:simpleType>          </xsd:element>5         <xsd:element name="opr_b_type" maxOccurs="0">            <xsd:simpleType>6             <xsd:restriction base="xsd:unsignedByte"/>           </xsd:simpleType>          </xsd:element>7         <xsd:element name="opr_b_number" maxOccurs="0">            <xsd:simpleType>6             <xsd:restriction base="xsd:unsignedByte"/>           </xsd:simpleType>          </xsd:element>7         <xsd:element name="opr_b_opcode" maxOccurs="0">            <xsd:simpleType>6             <xsd:restriction base="xsd:unsignedByte"/>           </xsd:simpleType>          </xsd:element>7         <xsd:element name="opr_r_opbits" maxOccurs="0">            <xsd:complexType>              <xsd:sequence>D               <xsd:element name="opr_v_variable_size" maxOccurs="0">                  <xsd:simpleType>6                   <xsd:restriction base="xsd:integer">1                     <xsd:minInclusive value="0"/> 1                     <xsd:maxInclusive value="1"/> $                   </xsd:restriction>!                 </xsd:simpleType>                </xsd:element>A               <xsd:element name="opr_v_size_units" maxOccurs="0">                   <xsd:simpleType>6                   <xsd:restriction base="xsd:integer">1                     <xsd:minInclusive value="0"/> 1                     <xsd:maxInclusive value="7"/> $                   </xsd:restriction>!                 </xsd:simpleType>                </xsd:element>C               <xsd:element name="opr_v_offset_units" maxOccurs="0">                   <xsd:simpleType>6                   <xsd:restriction base="xsd:integer">1                     <xsd:minInclusive value="0"/> 1                     <xsd:maxInclusive value="7"/> $                   </xsd:restriction>!                 </xsd:simpleType>                </xsd:element><               <xsd:element name="opr_v_alias" maxOccurs="0">                  <xsd:simpleType>6                   <xsd:restriction base="xsd:integer">1                     <xsd:minInclusive value="0"/> 1                     <xsd:maxInclusive value="1"/> $                   </xsd:restriction>!                 </xsd:simpleType>                </xsd:element>             </xsd:sequence>            </xsd:complexType>         </xsd:element>8         <xsd:element name="opr_r_argbits" maxOccurs="0">           <xsd:complexType>              <xsd:sequence>?               <xsd:element name="opr_v_by_desc_" maxOccurs="0">                   <xsd:simpleType>6                   <xsd:restriction base="xsd:integer">1                     <xsd:minInclusive value="0"/> 1                     <xsd:maxInclusive value="1"/> $                   </xsd:restriction>!                 </xsd:simpleType>                </xsd:element>@               <xsd:element name="opr_v_by_immed_" maxOccurs="0">                  <xsd:simpleType>6                   <xsd:restriction base="xsd:integer">1                     <xsd:minInclusive value="0"/> 1                     <xsd:maxInclusive value="1"/> $                   </xsd:restriction>!                 </xsd:simpleType>                </xsd:element>>               <xsd:element name="opr_v_by_ref_" maxOccurs="0">                  <xsd:simpleType>6                   <xsd:restriction base="xsd:integer">1                     <xsd:minInclusive value="0"/> 1                     <xsd:maxInclusive value="1"/> $                   </xsd:restriction>!                 </xsd:simpleType>                </xsd:element>>               <xsd:element name="opr_v_fill_0_" maxOccurs="0">                  <xsd:simpleType>6                   <xsd:restriction base="xsd:integer">1                     <xsd:minInclusive value="0"/> 2                     <xsd:maxInclusive value="31"/>$                   </xsd:restriction>!                 </xsd:simpleType>                </xsd:element>             </xsd:sequence>            </xsd:complexType>         </xsd:element>8         <xsd:element name="opr_w_operand" maxOccurs="0">           <xsd:complexType>              <xsd:sequence>=               <xsd:element name="opr_w_item" maxOccurs="254">                   <xsd:simpleType>5                   <xsd:restriction base="xsd:short"/> !                 </xsd:simpleType>                </xsd:element>             </xsd:sequence>            </xsd:complexType>         </xsd:element>       </xsd:sequence>      </xsd:complexType>   </xsd:element>P   <xsd:element name="token">            <!-- filled in by LEX                -->     <xsd:complexType>        <xsd:sequence>P         <xsd:element name="tok_l_token_id" maxOccurs="0"> <!-- token id      -->           <xsd:simpleType>-             <xsd:restriction base="xsd:int"/>            </xsd:simpleType>          </xsd:element>b         <xsd:element name="tok_l_source_line" maxOccurs="0"> <!-- source line number of token  -->           <xsd:simpleType>-             <xsd:restriction base="xsd:int"/>            </xsd:simpleType>          </xsd:element>^         <xsd:element name="tok_l_token_length" maxOccurs="0"> <!-- length of token string  -->           <xsd:simpleType>-             <xsd:restriction base="xsd:int"/>            </xsd:simpleType>          </xsd:element>T         <xsd:element name="tok_t_token_string" maxOccurs="0"> <!-- token string  -->           <xsd:simpleType>0             <xsd:restriction base="xsd:string"/>           </xsd:simpleType>          </xsd:element>       </xsd:sequence>      </xsd:complexType>   </xsd:element>! <!-- *** MODULE externals *** --> P <!-- Get Job/Process Information system service                              -->/ <!-- *** MODULE more_examples IDENT V10 *** --> P <!--                                                                         -->P <!-- CSR07 (+^o16) - Interrupt Summary 2 CSR                                 -->P <!-- Example of Union                                                        -->P <!--                                                                         -->!   <xsd:element name="isum2_word">      <xsd:complexType>        <xsd:sequence>         <xsd:choice>Q           <xsd:element name="isum2" maxOccurs="0"> <!-- InterruptSummary2CSR  -->              <xsd:simpleType>9               <xsd:restriction base="xsd:unsignedShort"/>              </xsd:simpleType>            </xsd:element>7           <xsd:element name="isum2_bits" maxOccurs="0">              <xsd:complexType>                <xsd:sequence>V                 <xsd:element name="sgp_v_fonterror" maxOccurs="0"> <!-- FontError  -->"                   <xsd:simpleType>8                     <xsd:restriction base="xsd:integer">3                       <xsd:minInclusive value="0"/> 3                       <xsd:maxInclusive value="1"/> &                     </xsd:restriction>#                   </xsd:simpleType>                  </xsd:element>R                 <xsd:element name="sgp_v_clipped" maxOccurs="0"> <!-- Clipped  -->"                   <xsd:simpleType>8                     <xsd:restriction base="xsd:integer">3                       <xsd:minInclusive value="0"/> 3                       <xsd:maxInclusive value="1"/> &                     </xsd:restriction>#                   </xsd:simpleType>                  </xsd:element>@                 <xsd:element name="sgp_v_isum2_1" maxOccurs="0">"                   <xsd:simpleType>8                     <xsd:restriction base="xsd:integer">3                       <xsd:minInclusive value="0"/> 7                       <xsd:maxInclusive value="16383"/> &                     </xsd:restriction>#                   </xsd:simpleType>                  </xsd:element>               </xsd:sequence>              </xsd:complexType>           </xsd:element>         </xsd:choice>        </xsd:sequence>      </xsd:complexType>   </xsd:element>P <!--                                                                         -->P <!-- an example with one of every data type                                  -->P <!--                                                                         -->P   <xsd:element name="one_of_each">      <!-- show all data types             -->     <xsd:complexType>        <xsd:sequence>m         <xsd:element name="sdl_r_integer_types" maxOccurs="0"> <!-- for fun, overlay signed and unsigned  -->            <xsd:complexType>              <xsd:sequence>               <xsd:choice>`                 <xsd:element name="sdl_r_signed_types" maxOccurs="0"> <!-- signed datatypes  -->#                   <xsd:complexType> "                     <xsd:sequence>[                       <xsd:element name="sdl_b_one" maxOccurs="0"> <!-- byte datatype;  --> (                         <xsd:simpleType><                           <xsd:restriction base="xsd:byte"/>)                         </xsd:simpleType> $                       </xsd:element>[                       <xsd:element name="sdl_w_two" maxOccurs="0"> <!-- word datatype;  --> (                         <xsd:simpleType>=                           <xsd:restriction base="xsd:short"/> )                         </xsd:simpleType> $                       </xsd:element>b                       <xsd:element name="sdl_l_three" maxOccurs="0"> <!-- a longword datatype  -->(                         <xsd:simpleType>;                           <xsd:restriction base="xsd:int"/> )                         </xsd:simpleType> $                       </xsd:element>a                       <xsd:element name="sdl_q_four" maxOccurs="0"> <!-- a quadword datatype  --> (                         <xsd:simpleType><                           <xsd:restriction base="xsd:long"/>)                         </xsd:simpleType> $                       </xsd:element>b                       <xsd:element name="sdl_o_five" maxOccurs="0"> <!-- an octaword datatype  -->(                         <xsd:simpleType>?                           <xsd:restriction base="xsd:integer"/> )                         </xsd:simpleType> $                       </xsd:element>#                     </xsd:sequence> $                   </xsd:complexType>                 </xsd:element>e                 <xsd:element name="sdl_r_unsigned_types" maxOccurs="0"> <!-- unsigned data types  --> #                   <xsd:complexType> "                     <xsd:sequence>C                       <xsd:element name="sdl_b_uone" maxOccurs="0"> (                         <xsd:simpleType>D                           <xsd:restriction base="xsd:unsignedByte"/>)                         </xsd:simpleType> $                       </xsd:element>C                       <xsd:element name="sdl_w_utwo" maxOccurs="0"> (                         <xsd:simpleType>E                           <xsd:restriction base="xsd:unsignedShort"/> )                         </xsd:simpleType> $                       </xsd:element>E                       <xsd:element name="sdl_l_uthree" maxOccurs="0"> (                         <xsd:simpleType>C                           <xsd:restriction base="xsd:unsignedInt"/> )                         </xsd:simpleType> $                       </xsd:element>D                       <xsd:element name="sdl_q_ufour" maxOccurs="0">(                         <xsd:simpleType>D                           <xsd:restriction base="xsd:unsignedLong"/>)                         </xsd:simpleType> $                       </xsd:element>D                       <xsd:element name="sdl_o_ufive" maxOccurs="0">(                         <xsd:simpleType>?                           <xsd:restriction base="xsd:integer"/> )                         </xsd:simpleType> $                       </xsd:element>#                     </xsd:sequence> $                   </xsd:complexType>                 </xsd:element>               </xsd:choice>              </xsd:sequence>            </xsd:complexType>         </xsd:element>P         <xsd:element name="sdl_f_f" maxOccurs="0"> <!-- single floating      -->           <xsd:simpleType>/             <xsd:restriction base="xsd:float"/>            </xsd:simpleType>          </xsd:element>Z         <xsd:element name="sdl_r_dg" maxOccurs="0"> <!-- good place for a union array  -->           <xsd:complexType>              <xsd:sequence>;               <xsd:element name="sdl_r_item" maxOccurs="4"> !                 <xsd:complexType>                     <xsd:sequence>                      <xsd:choice>Z                       <xsd:element name="sdl_d_d" maxOccurs="0"> <!-- double floating  -->(                         <xsd:simpleType>>                           <xsd:restriction base="xsd:double"/>)                         </xsd:simpleType> $                       </xsd:element>Y                       <xsd:element name="sdl_g_g" maxOccurs="0"> <!-- grand floating  --> (                         <xsd:simpleType>?                           <xsd:restriction base="xsd:anyType"/> )                         </xsd:simpleType> $                       </xsd:element>!                     </xsd:choice> !                   </xsd:sequence> "                 </xsd:complexType>               </xsd:element>             </xsd:sequence>            </xsd:complexType>         </xsd:element>P         <xsd:element name="sdl_h_h" maxOccurs="0"> <!-- huge floating        -->           <xsd:simpleType>1             <xsd:restriction base="xsd:anyType"/>            </xsd:simpleType>          </xsd:element>P         <xsd:element name="sdl_p_dec" maxOccurs="0"> <!-- packed decimal     -->           <xsd:simpleType>0             <xsd:restriction base="xsd:decimal">.               <xsd:fractionDigits value="10"/>*               <xsd:totalDigits value="5"/>             </xsd:restriction>           </xsd:simpleType>          </xsd:element>:         <xsd:element name="sdl_r_some_bits" maxOccurs="0">           <xsd:complexType>              <xsd:sequence>P               <xsd:element name="sdl_v_b1" maxOccurs="0"> <!-- one bit       -->                  <xsd:simpleType>6                   <xsd:restriction base="xsd:integer">1                     <xsd:minInclusive value="0"/> 1                     <xsd:maxInclusive value="1"/> $                   </xsd:restriction>!                 </xsd:simpleType>                </xsd:element>P               <xsd:element name="sdl_v_b2" maxOccurs="0"> <!-- two bits      -->                  <xsd:simpleType>6                   <xsd:restriction base="xsd:integer">1                     <xsd:minInclusive value="0"/> 1                     <xsd:maxInclusive value="3"/> $                   </xsd:restriction>!                 </xsd:simpleType>                </xsd:element>P               <xsd:element name="sdl_v_b3" maxOccurs="0"> <!-- three bits    -->                  <xsd:simpleType>6                   <xsd:restriction base="xsd:integer">1                     <xsd:minInclusive value="0"/> 1                     <xsd:maxInclusive value="7"/> $                   </xsd:restriction>!                 </xsd:simpleType>                </xsd:element>>               <xsd:element name="sdl_v_fill_1_" maxOccurs="0">                  <xsd:simpleType>6                   <xsd:restriction base="xsd:integer">1                     <xsd:minInclusive value="0"/> 1                     <xsd:maxInclusive value="3"/> $                   </xsd:restriction>!                 </xsd:simpleType>                </xsd:element>             </xsd:sequence>            </xsd:complexType>         </xsd:element>P         <xsd:element name="sdl_b_truth" maxOccurs="0"> <!-- boolean          -->           <xsd:simpleType>1             <xsd:restriction base="xsd:boolean"/>            </xsd:simpleType>          </xsd:element>R         <xsd:element name="sdl_t_string" maxOccurs="0"> <!-- character string  -->           <xsd:simpleType>0             <xsd:restriction base="xsd:string"/>           </xsd:simpleType>          </xsd:element>T         <xsd:element name="sdl_t_vstring" maxOccurs="0"> <!-- character varying  -->           <xsd:simpleType>0             <xsd:restriction base="xsd:string"/>           </xsd:simpleType>          </xsd:element>Q         <xsd:element name="sdl_a_p1" maxOccurs="0"> <!-- pointer to longword  -->            <xsd:simpleType>6             <xsd:restriction base="xsd:unsignedLong"/>           </xsd:simpleType>          </xsd:element>Z         <xsd:element name="sdl_a_p2" maxOccurs="0"> <!-- pointer to char string array  -->           <xsd:simpleType>6             <xsd:restriction base="xsd:unsignedLong"/>           </xsd:simpleType>          </xsd:element>R         <xsd:element name="sdl_a_p3" maxOccurs="0"> <!-- pointer to aggregate  -->           <xsd:simpleType>6             <xsd:restriction base="xsd:unsignedLong"/>           </xsd:simpleType>          </xsd:element>P         <xsd:element name="sdl_a_p4" maxOccurs="0"> <!-- untyped pointer     -->           <xsd:simpleType>6             <xsd:restriction base="xsd:unsignedLong"/>           </xsd:simpleType>          </xsd:element>[         <xsd:element name="sdl_a_p5" maxOccurs="0"> <!-- array of pointers to an array  -->            <xsd:complexType>              <xsd:sequence><               <xsd:element name="sdl_a_item" maxOccurs="10">                  <xsd:simpleType><                   <xsd:restriction base="xsd:unsignedLong"/>!                 </xsd:simpleType>                </xsd:element>             </xsd:sequence>            </xsd:complexType>         </xsd:element>       </xsd:sequence>      </xsd:complexType>   </xsd:element>P <!-- Example of an implicit union with dimension                             -->   <xsd:element name="fill_2_">     <xsd:complexType>        <xsd:sequence>         <xsd:choice>6           <xsd:element name="tst_w_fid" maxOccurs="0">             <xsd:complexType>                <xsd:sequence>=                 <xsd:element name="tst_w_item" maxOccurs="3"> "                   <xsd:simpleType>7                     <xsd:restriction base="xsd:short"/> #                   </xsd:simpleType>                  </xsd:element>               </xsd:sequence>              </xsd:complexType>           </xsd:element>:           <xsd:element name="tst_r_fill_3_" maxOccurs="0">             <xsd:complexType>                <xsd:sequence>>                 <xsd:element name="tst_w_first" maxOccurs="0">"                   <xsd:simpleType>7                     <xsd:restriction base="xsd:short"/> #                   </xsd:simpleType>                  </xsd:element>?                 <xsd:element name="tst_w_second" maxOccurs="0"> "                   <xsd:simpleType>7                     <xsd:restriction base="xsd:short"/> #                   </xsd:simpleType>                  </xsd:element>>                 <xsd:element name="tst_w_third" maxOccurs="0">"                   <xsd:simpleType>7                     <xsd:restriction base="xsd:short"/> #                   </xsd:simpleType>                  </xsd:element>               </xsd:sequence>              </xsd:complexType>           </xsd:element>         </xsd:choice>        </xsd:sequence>      </xsd:complexType>   </xsd:element>
 </xsd:schema> 