Advertisement
Guest User

Untitled

a guest
Apr 23rd, 2017
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Scheme 14.02 KB | None | 0 0
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"
  3.     xmlns="https://se2.mini.pw.edu.pl/17-results/" targetNamespace="https://se2.mini.pw.edu.pl/17-results/">
  4.   <xs:simpleType name="guid">
  5.     <xs:restriction base="xs:string">
  6.       <xs:pattern value="[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}" />
  7.     </xs:restriction>
  8.   </xs:simpleType>
  9.   <xs:simpleType name="GameName">
  10.     <xs:restriction base="xs:string">
  11.       <xs:pattern value="[A-Za-z][a-z0-9]*( [a-z0-9]+)*" />
  12.     </xs:restriction>
  13.   </xs:simpleType>
  14.   <xs:complexType name="Location">
  15.     <xs:attribute name="x" type="xs:unsignedInt" use="required" />
  16.     <xs:attribute name="y" type="xs:unsignedInt" use="required" />
  17.   </xs:complexType>
  18.   <xs:complexType name="Field" abstract="true">
  19.     <xs:complexContent>
  20.       <xs:extension base="Location">
  21.         <xs:attribute name="timestamp" type="xs:dateTime" use="required" />
  22.         <xs:attribute name="playerId" type="xs:unsignedLong" use="optional" />
  23.       </xs:extension>
  24.     </xs:complexContent>
  25.   </xs:complexType>
  26.  
  27.   <xs:complexType name="TaskField">
  28.     <xs:complexContent>
  29.       <xs:extension base="Field">
  30.         <xs:attribute name="distanceToPiece" type="xs:int" use="required" />
  31.         <xs:attribute name="pieceId" type="xs:unsignedLong" use="optional" />
  32.       </xs:extension>
  33.     </xs:complexContent>
  34.   </xs:complexType>
  35.   <xs:simpleType name="GoalFieldType">
  36.     <xs:restriction base="xs:string">
  37.       <xs:enumeration value="unknown" />
  38.       <xs:enumeration value="goal" />
  39.       <xs:enumeration value="non-goal" />
  40.     </xs:restriction>
  41.   </xs:simpleType>
  42.  
  43.   <xs:complexType name="GoalField">
  44.     <xs:complexContent>
  45.       <xs:extension base="Field">
  46.         <xs:attribute name="type" type="GoalFieldType" use="required" />
  47.         <xs:attribute name="team" type="TeamColour" use="required" />
  48.       </xs:extension>
  49.     </xs:complexContent>
  50.   </xs:complexType>
  51.   <xs:simpleType name="PieceType">
  52.     <xs:restriction base="xs:string">
  53.       <xs:enumeration value="unknown" />
  54.       <xs:enumeration value="sham" />
  55.       <xs:enumeration value="normal" />
  56.     </xs:restriction>
  57.   </xs:simpleType>
  58.   <xs:complexType name="Piece">
  59.     <xs:attribute name="id" type="xs:unsignedLong" use="required" />
  60.     <xs:attribute name="type" type="PieceType" use="required" />
  61.     <xs:attribute name="timestamp" type="xs:dateTime" use="required" />
  62.     <xs:attribute name="playerId" type="xs:unsignedLong" use="optional" />
  63.   </xs:complexType>
  64.   <xs:simpleType name="TeamColour">
  65.     <xs:restriction base="xs:string">
  66.       <xs:enumeration value="red" />
  67.       <xs:enumeration value="blue" />
  68.     </xs:restriction>
  69.   </xs:simpleType>
  70.   <xs:simpleType name="MoveType">
  71.     <xs:restriction base="xs:string">
  72.       <xs:enumeration value="up" />
  73.       <xs:enumeration value="down" />
  74.       <xs:enumeration value="left" />
  75.       <xs:enumeration value="right" />
  76.     </xs:restriction>
  77.   </xs:simpleType>
  78.   <xs:simpleType name="PlayerType">
  79.     <xs:restriction base="xs:string">
  80.       <xs:enumeration value="leader" />
  81.       <xs:enumeration value="member" />
  82.     </xs:restriction>
  83.   </xs:simpleType>
  84.   <xs:complexType name="PlayerMessage">
  85.     <xs:attribute name="playerId" type="xs:unsignedLong"  use="required" />
  86.   </xs:complexType>
  87.   <xs:complexType name="BetweenPlayersMessage" abstract="true">
  88.     <xs:complexContent>
  89.       <xs:extension base="PlayerMessage">
  90.         <xs:attribute name="senderPlayerId" type="xs:unsignedLong"  use="required" />
  91.       </xs:extension>
  92.     </xs:complexContent>
  93.   </xs:complexType>
  94.   <xs:complexType name="GameMessage" abstract="true">
  95.     <xs:attribute name="playerGuid" type="guid" use="required" />
  96.     <xs:attribute name="gameId" type="xs:unsignedLong"  use="required" />
  97.   </xs:complexType>
  98.   <xs:complexType name="GameInfo">
  99.     <xs:attribute name="gameName" type="GameName" use="required" />
  100.     <xs:attribute name="redTeamPlayers" type="xs:unsignedLong" use="required" />
  101.     <xs:attribute name="blueTeamPlayers" type="xs:unsignedLong" use="required"  />
  102.   </xs:complexType>
  103.   <xs:complexType name="Player">
  104.     <xs:attribute name="team" type="TeamColour" use="required" />
  105.     <xs:attribute name="type" type="PlayerType" use="required" />
  106.     <xs:attribute name="id" type="xs:unsignedLong" use="required" />
  107.   </xs:complexType>
  108.   <xs:element name="Data">
  109.     <xs:complexType>
  110.       <xs:complexContent>
  111.         <xs:extension base="PlayerMessage">
  112.           <xs:sequence>
  113.             <xs:element name="TaskFields" minOccurs="0">
  114.               <xs:annotation>
  115.                 <xs:documentation>The state of the fields in the Task Area</xs:documentation>
  116.               </xs:annotation>
  117.               <xs:complexType>
  118.                 <xs:sequence>
  119.                   <xs:element name="TaskField" type="TaskField" minOccurs="0" maxOccurs="unbounded" />
  120.                 </xs:sequence>
  121.               </xs:complexType>
  122.             </xs:element>
  123.             <xs:element name="GoalFields" minOccurs="0">
  124.               <xs:annotation>
  125.                 <xs:documentation>The state of the fields in the Goals Area</xs:documentation>
  126.               </xs:annotation>
  127.               <xs:complexType>
  128.                 <xs:sequence>
  129.                   <xs:element name="GoalField" type="GoalField" minOccurs="0" maxOccurs="unbounded" />
  130.                 </xs:sequence>
  131.               </xs:complexType>
  132.             </xs:element>
  133.             <xs:element name="Pieces" minOccurs="0" >
  134.               <xs:annotation>
  135.                 <xs:documentation>The state of occuring pieces</xs:documentation>
  136.               </xs:annotation>
  137.               <xs:complexType>
  138.                 <xs:sequence>
  139.                   <xs:element name="Piece" type="Piece" minOccurs="0" maxOccurs="unbounded" />
  140.                 </xs:sequence>
  141.               </xs:complexType>
  142.             </xs:element>
  143.             <xs:element name="PlayerLocation" type="Location" minOccurs="0">
  144.               <xs:annotation>
  145.                 <xs:documentation>The location in which player should place himself</xs:documentation>
  146.               </xs:annotation>
  147.             </xs:element>
  148.           </xs:sequence>
  149.           <xs:attribute type="xs:boolean" name="gameFinished" use="required" />
  150.         </xs:extension>
  151.       </xs:complexContent>
  152.     </xs:complexType>
  153.   </xs:element>
  154.   <xs:element name="TestPiece">
  155.     <xs:complexType>
  156.       <xs:complexContent>
  157.         <xs:extension base="GameMessage" />
  158.       </xs:complexContent>
  159.     </xs:complexType>
  160.   </xs:element>
  161.   <xs:element name="PlacePiece">
  162.     <xs:complexType>
  163.       <xs:complexContent>
  164.         <xs:extension base="GameMessage" />
  165.       </xs:complexContent>
  166.     </xs:complexType>
  167.   </xs:element>
  168.   <xs:element name="PickUpPiece">
  169.     <xs:complexType>
  170.       <xs:complexContent>
  171.         <xs:extension base="GameMessage" />
  172.       </xs:complexContent>
  173.     </xs:complexType>
  174.   </xs:element>
  175.   <xs:element name="Move">
  176.     <xs:complexType>
  177.       <xs:complexContent>
  178.         <xs:extension base="GameMessage">
  179.           <xs:attribute name="direction" type="MoveType" />
  180.         </xs:extension>
  181.       </xs:complexContent>
  182.     </xs:complexType>
  183.   </xs:element>
  184.   <xs:element name="Discover">
  185.     <xs:complexType>
  186.       <xs:complexContent>
  187.         <xs:extension base="GameMessage" />
  188.       </xs:complexContent>
  189.     </xs:complexType>
  190.   </xs:element>
  191.   <xs:element name="AuthorizeKnowledgeExchange">
  192.     <xs:complexType>
  193.       <xs:complexContent>
  194.         <xs:extension base="GameMessage">
  195.           <xs:attribute name="withPlayerId" type="xs:unsignedLong" use="required" />
  196.         </xs:extension>
  197.       </xs:complexContent>
  198.     </xs:complexType>
  199.   </xs:element>
  200.   <xs:element name="KnowledgeExchangeRequest">
  201.     <xs:complexType>
  202.       <xs:complexContent>
  203.         <xs:extension base="BetweenPlayersMessage" />
  204.       </xs:complexContent>
  205.     </xs:complexType>
  206.   </xs:element>
  207.   <xs:element name="AcceptExchangeRequest">
  208.     <xs:complexType>
  209.       <xs:complexContent>
  210.         <xs:extension base="BetweenPlayersMessage" />
  211.       </xs:complexContent>
  212.     </xs:complexType>
  213.   </xs:element>
  214.   <xs:element name="RejectKnowledgeExchange">
  215.     <xs:complexType>
  216.       <xs:complexContent>
  217.         <xs:extension base="BetweenPlayersMessage">
  218.           <xs:attribute name="permanent" type="xs:boolean" use="required" />
  219.         </xs:extension>
  220.       </xs:complexContent>
  221.     </xs:complexType>
  222.   </xs:element>
  223.   <xs:element name="Game">
  224.     <xs:complexType>
  225.       <xs:complexContent>
  226.         <xs:extension base="PlayerMessage">
  227.           <xs:sequence>
  228.             <xs:element name="Players">
  229.               <xs:complexType>
  230.                 <xs:sequence>
  231.                   <xs:element maxOccurs="unbounded" name="Player" type="Player" />
  232.                 </xs:sequence>
  233.               </xs:complexType>
  234.             </xs:element>
  235.             <xs:element name="Board">
  236.               <xs:complexType>
  237.                 <xs:attribute name="width" type="xs:unsignedInt" use="required" />
  238.                 <xs:attribute name="tasksHeight" type="xs:unsignedInt" use="required" />
  239.                 <xs:attribute name="goalsHeight" type="xs:unsignedInt" use="required" />
  240.               </xs:complexType>
  241.             </xs:element>
  242.             <xs:element name="PlayerLocation" type="Location" />
  243.           </xs:sequence>
  244.         </xs:extension>
  245.       </xs:complexContent>
  246.     </xs:complexType>
  247.   </xs:element>
  248.   <xs:element name="RegisterGame">
  249.     <xs:complexType>
  250.       <xs:sequence>
  251.         <xs:element name="NewGameInfo" type="GameInfo" />
  252.       </xs:sequence>
  253.     </xs:complexType>
  254.   </xs:element>
  255.   <xs:element name="ConfirmGameRegistration">
  256.     <xs:complexType>
  257.       <xs:attribute name="gameId" type="xs:unsignedLong" use="required" />
  258.     </xs:complexType>
  259.   </xs:element>
  260.   <xs:element name="RejectGameRegistration">
  261.     <xs:annotation>
  262.       <xs:documentation>
  263.         Used to inform Game Master that the proposed game cannot be added
  264.         to the list served by Communication Server.
  265.         The typical reason would be that the game with the same
  266.         name already exists.
  267.       </xs:documentation>
  268.     </xs:annotation>
  269.     <xs:complexType>
  270.       <xs:attribute name="gameName" type="GameName" use="required" />
  271.     </xs:complexType>
  272.   </xs:element>
  273.   <xs:element name="GameStarted">
  274.     <xs:annotation>
  275.       <xs:documentation>
  276.         Used for informing the Communication Server that a given game is started
  277.         and should be deregistered from the list of games available on server
  278.       </xs:documentation>
  279.     </xs:annotation>
  280.     <xs:complexType>
  281.       <xs:attribute name="gameId" type="xs:unsignedLong" use="required" />
  282.     </xs:complexType>
  283.   </xs:element>
  284.   <xs:element name="GetGames">
  285.     <xs:complexType>
  286.  
  287.     </xs:complexType>
  288.   </xs:element>
  289.   <xs:element name="RegisteredGames">
  290.     <xs:complexType>
  291.       <xs:sequence>
  292.         <xs:element name="GameInfo" type="GameInfo" minOccurs="0" maxOccurs="unbounded" />
  293.       </xs:sequence>
  294.     </xs:complexType>
  295.   </xs:element>
  296.   <xs:element name="JoinGame">
  297.     <xs:complexType>
  298.       <xs:attribute name="gameName" type="GameName" use="required" />
  299.       <xs:attribute name="preferredTeam" type="TeamColour" use="required">
  300.         <xs:annotation>
  301.           <xs:documentation>Possible values: red|blue</xs:documentation>
  302.         </xs:annotation>
  303.       </xs:attribute>
  304.       <xs:attribute name="preferredRole" type="PlayerType" use="required">
  305.         <xs:annotation>
  306.           <xs:documentation>Possible values: leader|member</xs:documentation>
  307.         </xs:annotation>
  308.       </xs:attribute>
  309.       <xs:attribute name="playerId" type="xs:unsignedLong" use="optional">
  310.         <xs:annotation>
  311.           <xs:documentation>Id is assigned by a communication server when player wishes to join a game and that way passed to a game master</xs:documentation>
  312.         </xs:annotation>
  313.       </xs:attribute>
  314.     </xs:complexType>
  315.   </xs:element>
  316.   <xs:element name="ConfirmJoiningGame">
  317.     <xs:complexType>
  318.       <xs:complexContent>
  319.         <xs:extension base="PlayerMessage">
  320.           <xs:sequence>
  321.             <xs:element name="PlayerDefinition" type="Player" />
  322.           </xs:sequence>
  323.           <xs:attribute name="gameId" type="xs:unsignedLong" use="required" />
  324.           <xs:attribute name="privateGuid" type="guid" use="required" />
  325.         </xs:extension>
  326.       </xs:complexContent>
  327.     </xs:complexType>
  328.   </xs:element>
  329.   <xs:element name="RejectJoiningGame">
  330.     <xs:annotation>
  331.       <xs:documentation>
  332.         Used to inform Player that he cannot join a game of a given name.
  333.         The typical reason would be that the game has no vacant positions.
  334.       </xs:documentation>
  335.     </xs:annotation>
  336.     <xs:complexType>
  337.       <xs:complexContent>
  338.         <xs:extension base="PlayerMessage">
  339.           <xs:attribute name="gameName" type="GameName" use="required" />
  340.         </xs:extension>
  341.       </xs:complexContent>
  342.     </xs:complexType>
  343.   </xs:element>
  344.   <xs:element name="GameMasterDisconnected">
  345.     <xs:annotation>
  346.       <xs:documentation>
  347.         A message used to inform Players that Game Master has disconnected
  348.         (or otherwise failed). Player should react as if the game had been
  349.         properly finished: reset its state and try to join another game
  350.         with the same name.
  351.       </xs:documentation>
  352.     </xs:annotation>
  353.     <xs:complexType>
  354.       <xs:attribute name="gameId" type="xs:unsignedLong" use="required" />
  355.     </xs:complexType>
  356.   </xs:element>
  357.   <xs:element name="PlayerDisconnected">
  358.     <xs:annotation>
  359.       <xs:documentation>
  360.         A message used to inform Game Master that a Player has disconnected
  361.         (or otherwise failed). Game Master should react by logging that fact
  362.         as a Disconnected event in its games CSV log.
  363.       </xs:documentation>
  364.     </xs:annotation>
  365.     <xs:complexType>
  366.       <xs:attribute name="playerId" type="xs:unsignedLong" use="required" />
  367.     </xs:complexType>
  368.   </xs:element>
  369. </xs:schema>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement