XSD for passthrough request message

  <?xml version="1.0" encoding="UTF-8" ?> 
- <schema targetNamespace="http://www.DFHMAXMI.com/schemas/DFHMAXMIInterface" 
    xmlns="http://www.w3.org/2001/XMLSchema" 
    xmlns:scr="http://www.DFHMAXMI.com/schemas/DFHMAXMIInterface">
  - <annotation>
  <documentation>*************************************************************************** 
   The format of each request/response begins with a main session header (DFHMAHV). For a 
   passthrough request/response a Pass Through header (DFHMAH2V) immediately follows DFHMAHV. 
   This XML passthrough schema defines request/response elements that follow the passthrough header.
  </documentation>
  
  <documentation>
   Each XML passthrough requst/response contains a screen header that immediately 
   follows DFHMAH2V. See CIA-SCREEN-HEADER header structure 
   for detailed description of this header. The screen header contains the attentionID and the count of 
   the number of maps, input fields, and text fields contained in the screen. Input fields and text fields 
   do not correspond to the fields contained within a map.
  </documentation> 
  <documentation>
   Request elements (screen, map, input):
  </documentation> 
  <documentation>
   An unformatted or unmapped request is used to begin a new session. In this case the "screen" 
   element may contain a single "input" element. The value of the "input" element is the input text, 
   beginning with the 4 character transaction ID. Irregardless of whether an input element is present 
   the target 3270 application will be run using the value contained in the passthrough request header
   "dfhmah2_transid" element.
  </documentation> 
  <documentation>
   A mapped request is used to continue an existing session. In this case the "screen" element will 
   contain a single "map" element.
  </documentation> 
  <documentation>
   A "text" element is not valid for either a mapped or unmapped input request.
  </documentation> 
  <documentation>
   Response elements (screen, map, text):
  </documentation> 
  <documentation>
   For a response the "screen" element may contain both "text" or "map" elements in any combination. 
   A "map" element contains 1 or more "field" elements that correspond to named fields in a BMS map.
  </documentation> 
  <documentation>
   The value of a "text" element contains text from a SEND TEXT command or from a SEND command that 
   contains a single line of text.
  </documentation> 
  <documentation>
   An "input" element is not valid in a response. *************************************************
  </documentation> 
  </annotation>
    <element name="screen">
        <complexType>
        	<sequence>
                <element maxOccurs="unbounded" minOccurs="0" ref="scr:map"/>
                <choice>
                    <element maxOccurs="unbounded" minOccurs="0" ref="scr:text"/>
                    <element maxOccurs="1" minOccurs="0" ref="scr:input"/>
                </choice>
            </sequence>
            <attribute name="attentionid" use="required">
            	<annotation>
            		<documentation>
            			attentionid= key pressed to submit the input screen
            		</documentation>
            	</annotation>
            	<simpleType>
            		<restriction base="string">
                    	<enumeration value="enter"/>
                        <enumeration value="clear"/>
                        <enumeration value="pf1"/>
                        <enumeration value="pf2"/>
                        <enumeration value="pf3"/>
                        <enumeration value="pf4"/>
                        <enumeration value="pf5"/>
                        <enumeration value="pf6"/>
                        <enumeration value="pf7"/>
                        <enumeration value="pf8"/>
                        <enumeration value="pf9"/>
                        <enumeration value="pf10"/>
                        <enumeration value="pf11"/>
                        <enumeration value="pf12"/>
                        <enumeration value="pf13"/>
                        <enumeration value="pf14"/>
                        <enumeration value="pf15"/>
                        <enumeration value="pf16"/>
                        <enumeration value="pf17"/>
                        <enumeration value="pf18"/>
                        <enumeration value="pf19"/>
                        <enumeration value="pf20"/>
                        <enumeration value="pf21"/>
                        <enumeration value="pf22"/>
                        <enumeration value="pf23"/>
                        <enumeration value="pf24"/>
                        <enumeration value="pa1"/>
                        <enumeration value="pa2"/>
                        <enumeration value="pa3"/>
                        <enumeration value="pen"/>
                        <enumeration value="msre"/>
                        <enumeration value="opid"/>
                        <enumeration value="trig"/>
                        <maxLength value="5"/>
                	</restriction>
                </simpleType>
            </attribute>	
            <attribute name="maps" use="required">
            	<annotation>
            		<documentation>
            			maps= number of maps, including input and text fields
            		</documentation>
            	</annotation>
            	<simpleType>
                   <restriction base="integer">
                       <minInclusive value="0"/>
                       <totalDigits value="4"/>
                   </restriction>
               	</simpleType>
            </attribute>
        </complexType>
    </element>
    <element name="map">
        <complexType>
            <sequence>
                <element maxOccurs="unbounded" minOccurs="1" ref="scr:field"/>
            </sequence>
            <attribute name="name" use="required">
            	<annotation>
            		<documentation>
            			name= BMS map name
            		</documentation>
            	</annotation>
            	<simpleType>
                   <restriction base="string">
                       <maxLength value="7"/>
                   </restriction>
               	</simpleType>
            </attribute>
            <attribute name="mapset" use="required">
            	<annotation>
            		<documentation>
            			mapset= BMS mapset name
            		</documentation>
            	</annotation>
            	<simpleType>
                   <restriction base="string">
                       <maxLength value="7"/>
                   </restriction>
               	</simpleType>
            </attribute>   	
            <attribute name="rows" use="optional">
            	<annotation>
            		<documentation>
            			rows= number of map rows
            		</documentation>
            	</annotation>
            	<simpleType>
                   <restriction base="integer">
                       <minInclusive value="12"/>
                       <maxInclusive value="43"/>
                       <totalDigits value="2"/>
                   </restriction>
               	</simpleType>
            </attribute> 
            <attribute name="columns" use="optional">
            	<annotation>
            		<documentation>
            			columns= number of BMS map columns
            		</documentation>
            	</annotation>
 				<simpleType>
                   <restriction base="integer">
                       <minInclusive value="40"/>
                       <maxInclusive value="132"/>
                       <totalDigits value="3"/>
                   </restriction>
               	</simpleType>
            </attribute>           	
            <attribute name="fields" use="optional">
            	<annotation>
            		<documentation>
            			fields= number of map fields
            		</documentation>
            	</annotation>
            	<simpleType>
                   <restriction base="integer">
                       <minInclusive value="1"/>
                       <totalDigits value="3"/>
                   </restriction>
               	</simpleType>
            </attribute>
            <attribute name="focus" use="optional">
            	<annotation>
            		<documentation>
            			focus= map field name where the cursor 
            			is initially positioned
            		</documentation>
            	</annotation>
            	<simpleType>
                   <restriction base="string">
                       <maxLength value="32"/>
                   </restriction>
               	</simpleType>
            </attribute>
        </complexType>
    </element>
    <element name="field">
        <complexType> 
        	<annotation>
            		<documentation>
            			field= BMS map field
            		</documentation>
            	</annotation>      	
            <simpleContent>
                <extension base="string">
                    <attribute name="name" use="required">
                    	<simpleType>
            				<annotation>
            					<documentation>
            						name= BMS field name
            					</documentation>
            				</annotation>           			
                   			<restriction base="string">
                       			<maxLength value="30"/>
                   			</restriction>
               			</simpleType>
            		</attribute>          
                    <attribute name="ml" use="required">
                    	<simpleType>
                    		<annotation>
            					<documentation>
            						ml= maximum length
            					</documentation>
            				</annotation>
                   			<restriction base="integer">
                       			<minInclusive value="1"/>
                       			<maxInclusive value="255"/>
                       			<totalDigits value="3"/>
                   			</restriction>
               			</simpleType>
 					</attribute>              	
                    <attribute name="pa" use="required">
                        <simpleType>
                        	<annotation>
            					<documentation>
            						pa= protect attribute:
            						p= protect,
            						u= unprotect
            					</documentation>
            				</annotation>
                            <restriction base="string">
                                <enumeration value="p"/>
                                <enumeration value="u"/>
                                <maxLength value="1"/>
                            </restriction>
                        </simpleType>
                    </attribute>
                    <attribute name="ia" use="required">
                        <simpleType>
                        	<annotation>
            					<documentation>
            						ia= intensity attribute:
            						n= normal intensity,
            						b= bright intensity,
            						d= dark or non-display intensity
            					</documentation>
            				</annotation>
                            <restriction base="string">
                                <enumeration value="n"/>
                                <enumeration value="b"/>
                                <enumeration value="d"/>
                                <maxLength value="1"/>
                            </restriction>
                        </simpleType>
                    </attribute>
                    <attribute name="fa" use="optional">
                        <simpleType>
                        	<annotation>
            					<documentation>
            						fa= FSET attribute:
            						y= FSET on or modified data tag turned on
            					</documentation>
            				</annotation>
                            <restriction base="string">
                                <enumeration value="y"/>
                                <maxLength value="1"/>
                            </restriction>
                        </simpleType>
                    </attribute>
                    <attribute name="da" use="optional">
                        <simpleType>
                        	<annotation>
            					<documentation>
            						da= selector pen detectable attribute:
            						y= detectable turned on
            					</documentation>
            				</annotation>
                            <restriction base="string">
                                <enumeration value="y"/>
                                <maxLength value="1"/>
                            </restriction>
                        </simpleType>
                    </attribute>
                    <attribute name="ca" use="optional">
                        <simpleType>
                        	<annotation>
            					<documentation>
            						ca= color attribute:
            						b= blue,
            						r= red,
            						g= green,
            						t= turqoise,
            						y= yellow,
            						p= pink,
            						n= neutral
            					</documentation>
            				</annotation>
                            <restriction base="string">
                                <enumeration value="b"/>
                                <enumeration value="r"/>
                                <enumeration value="g"/>
                                <enumeration value="t"/>
                                <enumeration value="y"/>
                                <enumeration value="p"/>
                                <enumeration value="n"/>
                                <maxLength value="1"/>
                            </restriction>
                        </simpleType>
                    </attribute>
                    <attribute name="ha" use="optional">
                        <simpleType>
                        	<annotation>
            					<documentation>
            						ha= highlight attribute:
            						b= blink,
            						u= underline,
            						r= reverse video
            					</documentation>
            				</annotation>
                            <restriction base="string">
                                <enumeration value="b"/>
                                <enumeration value="u"/>
                                <enumeration value="r"/>
                                <maxLength value="1"/>
                            </restriction>
                        </simpleType>
                    </attribute>
                    <attribute name="va" use="optional">
                        <simpleType>
                        	<annotation>
            					<documentation>
            						va= Validation attribute:
            						f= must fill,
            						e= must enter,
            						t= trigger 
           					    </documentation>
            				</annotation>
                            <restriction base="string">
                                <enumeration value="f"/>
                                <enumeration value="e"/>
                                <enumeration value="t"/>
                                <maxLength value="1"/>
                            </restriction>
                        </simpleType>
                    </attribute>
                    <attribute name="ps" use="optional">
                    	<simpleType>		
                    		<annotation>
            					<documentation>
            						ps= programmed symbols
            					</documentation>
            				</annotation>
            				<restriction base="string">
                                <maxLength value="1"/>
                            </restriction>
            			</simpleType>
            		</attribute>		
                    <attribute name="so" use="optional">
                        <simpleType>
                        	<annotation>
            					<documentation>
            						so= shift in / shift out:
            						y= yes,
            						n= no
            					</documentation>
            				</annotation>
                            <restriction base="string">
                                <enumeration value="y"/>
                                <enumeration value="n"/>
                                <maxLength value="1"/>
                            </restriction>
                        </simpleType>
                    </attribute>
                    <attribute name="oi" use="optional">
                    	<simpleType>
                    		<annotation>
            					<documentation>
            						oi= occurs index
            					</documentation>
            				</annotation>
                   			<restriction base="integer">
                      			<minInclusive value="1"/>
                      			<totalDigits value="3"/>
                  			</restriction>
               			</simpleType>
           			 </attribute>
                </extension>
            </simpleContent>
        </complexType>
    </element>
    <element name="text">
    	<simpleType>
    		<annotation>
            	<documentation>
            		text= from SEND TEXT or SEND command
            	</documentation>
            </annotation>
            <restriction base="string">                      			
                <maxLength value="255"/>
            </restriction>
        </simpleType>
    </element>
    <element name="input">
    	<simpleType>
    		<annotation>
            	<documentation>
            		input= text entered on unformatted or unmapped screen
            	</documentation>
            </annotation>
            <restriction base="string">                      			
                <maxLength value="132"/>
            </restriction>
        </simpleType>
    </element>
</schema>