Generates a superflat world with a specified preset string - see e.g. [[http://www.minecraft101.net/superflat/]]
The superflat customization preset string.
Set this to true to force the world to be reloaded, otherwise the current world will be used (provided it matches the requested generator string).
Force reloading is slow, but will guarantee that no world changes will carry over between missions.
The world seed - leave blank (default) to get a random world.
Set this to true to force the world data files to be deleted after the mission is done.
Enabling this setting prevents the disk being filled with old worlds.
Generates the default terrain.
The world seed - leave blank (default) to get a random world.
Set this to true to force the world to be reloaded, otherwise the current world will be used (provided it matches the requested seed).
Force reloading is slow, but will guarantee that no world changes will carry over between missions.
Set this to true to force the world data files to be deleted after the mission is done.
Enabling this setting prevents the disk being filled with old worlds.
Loads a saved world from disk. You can find the saved worlds in "{{{Minecraft\run\saves}}}". Use the full path to one of those folders.
If Minecraft is running on a different machine then copy the folder to a readable network location and update the path accordingly. Example:
{{{<FileWorldGenerator src="\\\\machine-id\\shared\\ProjectMalmo\\saved_maps\\arena" />}}}
The path to the saved world folder.
Set this to true to force the world to be reloaded, otherwise the current world will be used (provided it matches the requested source filename).
Force reloading is slow, but will guarantee that no world changes will carry over between missions.
Set this to true to force the world data files to be deleted after the mission is done.
Enabling this setting prevents the disk being filled with old worlds.
Creates a moving two-block target which takes random moves within a specified arena. Can be linked to the turn scheduler.
This can be made more general in the future, but is currently tailored specifically for the Malmo collaborative challenge.
Define the bounds of the arena within which the target can move.
The master seed for the random number generator used to move the target.
Either an integer number, or the string "random".
The length, in ticks, between each update, or the string "turnbased" to use the turn scheduler.
Either an integer number, or the string "turnbased".
Adds a snake made of blocks, that grows at one end and shrinks at the other.
The master seed for the random number generator used to make the snake.
Either an integer number, or the string "random".
Optional seed for determining block types.
Either an integer number, or the string "random".
Adds a maze into the world.
The master seed for the random number generator used to make the maze.
Either an integer number, or the string "random".
Seed for the random number generator for determining block types - omit to allow master seed to control block types.
Either an integer number, or the string "random".
Omit this element if you want the optimal path to be unmarked.
Omit this element if you want the subgoal points to be unmarked.
Base class for all draw objects.
Base class for all block-based draw objects.
Draws structures into the world.
Specify a block by location and type.
Specify an item by location and type.
Specify an entity by location and type.
Specify a filled cuboid by inclusive coordinates and block type.
Specify a filled sphere by centre coordinates and inclusive radius.
Specify a line by start and end coordinates and thickness.
Adds a series of joined rooms into the world.
Basic animation created by repeatedly applying a DrawingDecorator at different positions.
Create an animation where the (x,y,z) position are determined by parametric equations. Recognised tokens are:
* basic arithmetic operations: +, -, /, *, % (modulo), ^ (to the power of)
* basic trig: sin, cos, tan, asin, acos, atan
* abs (absolute value)
* rand - replaces with a random float between 0 and 1
* t - the integer time variable, incremented with each time interval
For example, to create a structure which orbits in the x-z plane about the point (100,100,100) at a radius of 20, use:
"100+20*cos(t)" and "100+20*sin(t)" for the x and z strings.
The parser is not robust to mismatched brackets, typos, unrecognised tokens etc, and will fail silently.
The master seed for the random number generator used for any stochastic elements.
Either an integer number, or the string "random".
Create an animation where the (x,y,z) position is determined by the starting position, a constant velocity, and a bounding box.
Each time step, the position is updated by adding the velocity values. If the object goes outside of the bounding box in one dimension, that dimension's velocity will be flipped to reverse the direction.
Define the bounds of the canvas within which to move the object.
Define the starting position of the drawing's origin.
Define the initial velocity of the drawing's origin.
Define the drawing, relative to (0,0,0), which will be drawn for each frame of the animation.
The number of server ticks between each update of the animation.
Sets up a build battle area, with a source structure that can't be edited, and a goal structure, with optional recolouring of blocks to indicate correct/incorrect placement.
NOTE: Make sure to add a {{{RewardForStructureCopying}}} handler to the AgentHandlers if you want your agent to be rewarded for contributing to the build.
Define the bounds of the structure to be copied. Anything in this volume when the mission starts will be used as the blueprint - eg anything drawn here using the {{{DrawingDecorator}}}, etc.
Define the bounds in which the agent should build their copy.
If present, correctly placed blocks (in the source and the copy) will be changed to this block type.
If present, incorrectly placed blocks (in the copy only) will be changed to this block type.
Specifies a time limit that applies to all agents.
Specifies that the mission ends when any of the agents finish.
Requests that video frames be sent.
Set to false to specify the min and max depths manually. Default is true, where uses the min and max depths in the scene.
If true, returns depth in the fourth channel as RGBDRGBD.... Else as RGBRGB...
Sets the camera viewpoint. 0 = first-person, 1 = behind, 2 = facing.
Commands for smooth movement. Some examples:
"{{{move 0.5}}}" - start moving forward at 50% of the normal walking speed (-ve = backward, +ve = forward).
"{{{strafe -1}}}" - start moving left at 100% of the normal walking speed (-ve = left, +ve = right).
"{{{pitch 0.1}}}" - start tilting the agent's head down at 10% of the maximum speed (-ve = up, +ve = down). The maximum speed is set by {{{turnSpeedDegs}}} in {{{ContinuousMovementCommands}}}.
"{{{turn 0.1}}}" - start turning right at 10% of the maximum speed (-ve = anti-clockwise/left, +ve = clockwise/right). The maximum speed is set by {{{turnSpeedDegs}}} in {{{ContinuousMovementCommands}}}.
"{{{jump 1}}}" - start jumping (1 = start, 0 = stop).
"{{{crouch 1}}}" - start crouching (1 = start, 0 = stop).
"{{{attack 1}}}" - start attacking (1 = start, 0 = stop). The 'attack' command is for destroying blocks and attacking mobs.
"{{{use 1}}}" - start 'use'ing (1 = start, 0 = stop). The 'use' command is for placing blocks and for other things too.
Commands to set position and orientation directly. Some examples:
"{{{tp 23.5 1 -34.5}}}" - teleport the agent to the absolute position x y z (space delimited).
"{{{tpx 230}}}" - set the agent's x coordinate, without altering the y and z.
"{{{tpy 103.2}}}" - set the agent's y coordinate, without altering the x and z.
"{{{tpz -32.5}}}" - set the agent's z coordinate, without altering the x and y.
"{{{setYaw 30}}}" - set the agent's body orientation to be 30 degrees clockwise from south.
"{{{setPitch 20}}}" - set the agent's body orientation to be 20 degrees down from horizontal.
Commands for moving and turning in discrete increments. Some examples:
"{{{move 1}}}" - move the agent one block forwards (1 = forwards, -1 = backwards).
"{{{jumpmove 1}}}" - move the agent one block up and forwards (1 = forwards, -1 = backwards).
"{{{strafe 1}}}" - move the agent one block sideways (1 = right, -1 = left).
"{{{jumpstrafe 1}}}" - move the agent one block up and sideways (1 = right, -1 = left).
"{{{turn 1}}}" - rotate the agent 90 degrees right (1 = right, -1 = left).
"{{{movenorth 1}}}" - move the agent one block north.
"{{{moveeast 1}}}" - move the agent one block east.
"{{{movesouth 1}}}" - move the agent one block south.
"{{{movewest 1}}}" - move the agent one block west.
"{{{jumpnorth 1}}}" - move the agent one block up and north.
"{{{jumpeast 1}}}" - move the agent one block up and east.
"{{{jumpsouth 1}}}" - move the agent one block up and south.
"{{{jumpwest 1}}}" - move the agent one block up and west.
"{{{jump 1}}}" - move the agent one block up.
"{{{look 1}}}" - look down by 45 degrees (-ve = up, +ve = down).
"{{{attack 1}}}" - destroy the block that has focus.
"{{{use 1}}}" - place the held block item on the block face that has focus.
"{{{jumpuse}}}" - simultaneously jump and place the held block on the block face that has focus.
Commands for changing the contents of the inventory and hotbar.
To move items around in the inventory you can use {{{swapInventoryItems}}}. For example, to swap
the contents of slots 13 and 14, issue this command:
"{{{swapInventoryItems 13 14}}}"
Note that inventory slots are numbered from 0 to 39.
0-8 are the hotbar slots (which correspond to the hotbar commands hotbar.1-hotbar.9 - _note the offset_)
9-35 are the rest of the inventory (visible when you press 'E' in the game)
36-39 are the armour slots.
So to move an item out of the hotbar, say:
"{{{swapInventoryItems 3 30}}}"
Other commands:
"{{{combineInventoryItems x y}}}" - will attempt to combine the stacks in slots x and y, and leave the results in slot x. Eg if there are ten blocks of granite in slot 4, and 57 blocks of granite in slot 12, then {{{combineInventoryItems 4 12}}} will result in 64 (the max) blocks of granite in slot 4, and the remainder in slot 12. If the slots can't be combined (they are different types, or the first slot is full) then nothing will happen.
"{{{discardCurrentItem}}}" - discards the currently held item.
To select a hotbar slot:
"{{{hotbar.1 1}}}"
"{{{hotbar.1 0}}}"
Send both commands to select hotbar slot 1 as the currently-held tool. This affects the attack and use commands
- e.g. if the agent does 'use' while holding a block item it will place the block into the world.
A command for simple crafting:
Will look up all recipes that produce the requested object, and attempt each one in turn until one is successful or all have failed. This ignores all issues like requiring a crafting table / brewing stand etc, and the shape of the recipe (which items go in which slots on the crafting table). It will simply check to see whether the player has the necessary raw ingredients, and, if so, will remove them from the player's inventory and add the result of the recipe.
For basic objects, use the ItemTypes or BlockTypes found in Types.xsd. Eg:
"{{{craft diamond_pickaxe}}}" will remove three diamonds and two sticks from the player's inventory, and add a diamond pickaxe.
For more control over colours, types etc, add a Variation or Colour. Eg:
"{{{craft carpet PINK}}}"
etc.
A command for broadcasting text messages to the other players. An example:
"{{{chat I have found diamonds!}}}" - broadcasts the string "{{{I have found diamonds!}}}".
Chat messages from other players can be observed using {{{ObservationFromChat}}}.
A command for ending the mission, example:
"{{{quit}}}" - terminates the current mission.
Allow-list/deny-list base class - restricted by each command handler to only allow that handler's commands.
When present, the Mod will accept commands that control smooth movement.
Commands take the form of "verb <value>" e.g. "{{{move 1}}}" to move forwards with normal speed.
This sets the maximum speed for both turning the agent and adjusting the camera pitch, in degrees per second.
The turn and pitch command values are both scaled by this - eg "{{{turn -0.5}}}" to turn left (anti-clockwise) at half this maximum speed.
When present, the Mod will accept commands to set the player's position and orientation directly.
Commands take the form of "verb <value>" e.g. "{{{tpx 13}}}" to set the x-coordinate to 13.
When present, the Mod will accept commands that control movement in discrete jumps.
Commands take the form of "verb <value>" e.g. "{{{move 1}}}" to move forwards one square.
When present, the Mod will accept commands that control the player's inventory.
When present, the Mod will accept simple commands that implement a basic form of crafting.
When present, the Mod will accept commands that send chat messages to the other players.
When present, the Mod will accept a command that quits the mission.
Allows a user to specify that certain commands must be sent on a turn-by-turn basis - ie, in a multi-agent mission, placing the {{{DiscreteMovementCommand}}} handler inside the TurnBasedCommands section will mean that each agent must take it in turns to send a discrete movement command. See turn_based_test.py in the Python Samples for a demonstration/explanation of this.
When present, the Mod will return observations that say what commands have been acted on since the last report, in the JSON element {{{CommandsSinceLastObservation}}}.
Note that the commands returned might not yet have taken effect, depending on the command and the way in which Minecraft responds to it -
but they will have been processed by the command handling chain.
Automatically addd by Malmo when the user specifies the {{{TurnBasedCommands}}} handler. This provides vital observations back to the agent to allow them to make use of the turn scheduler. When it is the agent's turn, the JSON will contain {{{turn_number}}} - an integer which tracks the number of turns the agent has taken, and {{{turn_key}}} - a one-shot key which must be passed back to Malmo as a parameter in {{{sendCommand}}} in order for the command to be accepted.
When present, the Mod will return observations that indicate the direction to follow to the next subgoal.
The value to turn by is returned in the JSON element {{{yawDelta}}}.
When present, the Mod will return observations that say what is in the hotbar.
Up to four values are returned for each slot, if not empty: e.g. {{{Hotbar_1_size}}} and {{{Hotbar_1_item}}} containing the number and
type of the item(s) in the slot, respectively, and {{{Hotbar_1_colour}}} and {{{Hotbar_1_variant}}} if the item has a colour/variation. Hotbar slots are numbered 0 to 8 inclusive.
When present, the Mod will return several observations:
* Achievement statistics: {{{DistanceTravelled}}}, {{{TimeAlive}}}, {{{MobsKilled}}}, {{{PlayersKilled}}}, {{{DamageTaken}}}, {{{DamageDealt}}}
* Life statistics: {{{Life}}}, {{{Score}}}, {{{Food}}}, {{{Air}}}, {{{XP}}}, {{{IsAlive}}}, {{{Name}}}
* Position statistics: {{{XPos}}}, {{{YPos}}}, {{{ZPos}}}, {{{Pitch}}}, {{{Yaw}}}
* Environment statistics: {{{WorldTime}}} - current time in ticks, {{{TotalTime}}} - total world time, unaffected by ServerInitialConditions
When present, the Mod will return a JSON object called "LineOfSight", containing observations about the block or entity which is currently in the centre of the screen:
* Hit details: {{{hitType}}} - will be "block" for a block, "entity" for an entity (eg spider, rabbit etc) or "item" for a free-floating item that can be picked up. {{{inRange}}} will be true if the block/entity is within the agent's reach - ie attacking or using will have an effect on the object. {{{distance}}} gives the straight-line distance from the agent.
* Position: {{{x}}}, {{{y}}}, {{{z}}} - in the case of block hits, will be the precise point when the ray intercepts the block. {{{yaw}}}, {{{pitch}}} are also added for entities.
* Type information: {{{type}}}, {{{colour}}}, {{{variant}}}, {{{facing}}}
* Extra properties: in the case of block types, any extra properties will be returned by their minecraft name, prefixed with "prop_" (eg, for leaves, "prop_decayable" and "prop_check_decay") - this is the same data as can be seen by exploring Minecraft with the F3 debug information displayed. For floating items, the stack size is returned in {{{stackSize}}}
When present, the Mod will return observations that say what is in the player's inventory.
Up to four values are returned for each slot, if not empty: e.g. {{{Inventory_0_size}}} and {{{Inventory_0_item}}} containing the number and
type of the item(s) in the slot, respectively, and {{{Inventory_0_colour}}} and {{{Inventory_0_variant}}} if the item has a colour/variation. Inventory slots are numbered 0 to 39 inclusive.
When present, the Mod will return an observation of the player's position that is unique for every cell on the x/z plane.
This is useful for discrete-movement missions where we need to uniquely identify their location but don't mind how.
The observation will contain the JSON element {{{cell}}} containing e.g. {{{(2,4)}}} if the player is standing at any location where
x = 2 and z = 4.
When present, the Mod will return an observation that specifies the distance to a named location.
A JSON element {{{distanceFromNAME}}} will be returned (where {{{NAME}}} is replaced with the name of the NamedPoint),
with a value that is the distance.
{{{name}}} - Each grid has a text label to identify it.
{{{absoluteCoords}}} - If true, the min and max coordinates of the grid are interpreted as world coordinates. If false (the default)
then the coordinates are relative to the player.
{{{min}}}, {{{max}}} - The corners of the grid.
When present, the Mod will return observations that say what the nearby blocks are.
For each {{{Grid}}} entry, a named JSON element will be returned with a 1D array of block types, in order along the x, then z, then y axes.
Used by {{{ObservationFromNearbyEntities}}}. Defines the range within which entities will be returned. Eg a range of 10,1,10 will return all entities within +/-10 blocks of the agent in the x and z axes, and within +/-1 block vertically.
{{{update_frequency}}} is measured in Minecraft world ticks, and allows the user to specify how often they would like to receive each observation. A value of 20, under normal Minecraft running conditions, for example, would return the entity list once per second.
When present, the Mod will return observations that list the positions of all entities that fall within the given ranges of the agent.
A JSON array will be returned for each range requested, named using the {{{name}}} attribute of the range. Within the array will be a series of elements, one for each entity, containing the following:
- name: a string describing the entity (eg from Types.xsd)
- x: the x position of the entity
- y: the y position of the entity
- z: the z position of the entity
- quantity: if items have been grouped together by Minecraft, this indicates the number in the stack
- colour: if the item is a tile entity, with a colour, this will be present to describe the colour
- variation: optional string to describe the variation - eg the type of egg, or brick, etc (see Types.xsd)
When present, the Mod will return observations that say what chat messages have occurred and from which player.
A JSON element {{{Chat}}} will be returned, with a list of chat strings.
Note that unless the AgentHost ObservationsPolicy is set to KEEP_ALL_OBSERVATIONS it is likely that chat messages will be missed.
The default policy is LATEST_OBSERVATION_ONLY.
For multi-dimensional rewards, specifies the dimension to allocate this reward to. All rewards on this dimension will be summed.
Sends a reward when an entity is damaged.
Sends a reward when a specified position is reached by the agent.
Sends a rewards when an agent comes in contact with a specific block type.
Sends a reward when the agent issues a command.
Sends a reward when the agent sends a chat message that matches a given regular expression (supports Java regex syntax).
Sends a reward when the agent collects a specific item.
Sends a reward when an agent discards a specific item.
Sends a reward when the mission ends for a specified reason.
Reward type for {{{RewardForStructureCopying}}}:
- {{{PER_BLOCK}}} - reward will be given whenever a block is placed/destroyed in the goal volume, and will be determined by {{{RewardScale}}}. An additional reward of {{{RewardForCompletion}}} will be added the *first* time the copy is correctly completed.
- {{{MISSION_END}}} - no reward will be given until the mission ends. Reward will be scaled from 0-1, where 0 means "no blocks correct" and 1 means "all blocks correct", and then multipled by {{{RewardScale}}}.
Sends a reward when the agent copies blocks from a given structure.
NOTE: This will do nothing unless you have set up a {{{BuildBattleDecorator}}} on the server.
If present, the mission will end when the copy exactly matches the original. Set {{{description}}} to the quit code you'd like to receive when this happens. (See {{{RewardForMissionEnd}}}.)
This is the reward to be added or deducted for each block event.
The rewards are calculated as follows:
- For destroying a correct block: -1 * rewardScale
- For destroying an incorrect block: +1 * rewardScale
- For placing a correct block: +1 * rewardScale
- For placing an incorrect block: -1 * rewardScale
If {{{RewardDensity}}} is set to {{{{PER_BLOCK}}}, this reward will arrive after each block transaction. If it's set to {{{MISSION_END}}}, the individual rewards will not be sent, but will be summed throughout the course of the mission, and the resulting total will be sent as the final reward.
This is the extra reward to be added when the copy exactly matches the original. (Will only be applied once.)
Reward type for {{{RewardForTimeTaken}}}:
- {{{PER_TICK}}} - only the reward delta will be sent as a reward, at each tick. The initial reward will be ignored.
- {{{PER_TICK_ACCUMULATED}}} - the initial reward will be adjusted by the delta at each tick, and the current total sent. Eg: if the initial reward is 1000 and the delta is -1, the agent will receive rewards of 1000,999,998,997 for the first four ticks.
- {{{MISSION_END}}} - the initial reward will be adjusted by the delta at each tick, but no reward will be sent until the mission ends. Eg: if the initial reward is 1000, the delta is -1, and the mission runs for 800 ticks, then final reward sent will be 200.
Reward that is dependent on time. Can be received per tick, or just once at the end.
Reward for cornering a mob, such that it cannot move from its current square without passing through an agent.
If {{{global}}} is true then the agent doesn't have to be involved in catching the mob; otherwise they must be adjacent to the mob.
For our purposes, a mob is deemed "caught" if there are no unoccupied air blocks immediately north, south, east or west of them for them to move into. (An air block is considered occupied if there is an agent standing in it.) This does not necessarily correspond to Minecraft's definition of caught, in which mobs can escape by jumping or passing through agents.
If {{{oneshot}}} is true, the reward will only be counted once per entity.
When this is included the agent's mission will end when they reach a specified position.
When this is included the agent's mission will end when a certain amount of time has elapsed.
When this is included the agent's mission will end when they come in contact with a specified block type.
When this is included the agent's mission will end when they collect (or craft) a specified item.
Agent's mission will end when they corner a mob. If {{{global}}} is true then the agent doesn't have to be involved in catching the mob; otherwise they must be adjacent to the mob.
For our purposes, a mob is deemed "caught" if there are no unoccupied air blocks immediately north, south, east or west of them for them to move into. (An air block is considered occupied if there is an agent standing in it.) This does not necessarily correspond to Minecraft's definition of caught, in which mobs can escape by jumping or passing through agents.
Set up a quota for a group of commands. {{{AgentQuitFromReachingCommandQuota}}} will fire once the quota is exceeded.
List of commands, separated by spaces, that will share this quota. Commands must be valid members of {{{ContinuousMovementCommand}}}, {{{AbsoluteMovementCommand}}}, {{{DiscreteMovementCommand}}}, {{{InventoryCommand}}}, or {{{ChatCommand}}}.
For instance, if the command list contains {{{moveeast}}}, {{{movenorth}}}, {{{movesouth}}} and {{{movewest}}}, then the mission will end once the summed total usage of all four commands reaches the quota - even if the agent never used {{{movesouth}}}.
Total number of usages allocated for this command group.
String that will be returned from the {{{AgentQuitFromReachingCommandQuota}}} if this quota is reached. This can be used in {{{RewardForMissionEnd}}}, and is also returned in the {{{MissionEnded}}} message.
Count the commands acted on by the Mod, and signal the end of the mission when the defined quota of commands has been reached.
A total number of commands can be specified, and/or groups of commands can be given their own quota.
Total number of commands allowed before the mission ends. (Note that a command must be acted on to be counted - sending malformed commands won't affect the total.)
The check for total command use takes precedence over the individual group quotas, if used.
String that will be returned from the {{{AgentQuitFromReachingCommandQuota}}} if the total allowed command usage is reached. This can be used in {{{RewardForMissionEnd}}}, and is also returned in the {{{MissionEnded}}} message.
value comes from list: {'move'|'jumpmove'|'strafe'|'jumpstrafe'|'turn'|'movenorth'|'moveeast'|'movesouth'|'movewest'|'jumpnorth'|'jumpeast'|'jumpsouth'|'jumpwest'|'jump'|'look'|'attack'|'use'|'jumpuse'}
value comes from list: {'swapInventoryItems'|'combineInventoryItems'|'discardCurrentItem'|'hotbar.1'|'hotbar.2'|'hotbar.3'|'hotbar.4'|'hotbar.5'|'hotbar.6'|'hotbar.7'|'hotbar.8'|'hotbar.9'}
The XML Instance Representation table above shows the schema component's content as an XML instance.
The minimum and maximum occurrence of elements and attributes are provided in square brackets, e.g. [0..1].
Model group information are shown in gray, e.g. Start Choice ... End Choice.
For type derivations, the elements and attributes that have been added to or changed from the base type's content are shown in bold.
If an element/attribute has a fixed value, the fixed value is shown in green, e.g. country="Australia".
Otherwise, the type of the element/attribute is displayed.
If the element/attribute's type is in the schema, a link is provided to it.
For local simple type definitions, the constraints are displayed in angle brackets, e.g. <<pattern = [1-9][0-9]{3}>>.
If a local element/attribute has documentation, it will be displayed in a window that pops up when the question mark inside the attribute or next to the element is clicked, e.g. <postcode>.
Abstract(Applies to complex type definitions and element declarations). An abstract element or complex type cannot used to validate an element instance. If there is a reference to an abstract element, only element declarations that can substitute the abstract element can be used to validate the instance. For references to abstract type definitions, only derived types can be used.
Collapse Whitespace PolicyReplace tab, line feed, and carriage return characters with space character (Unicode character 32). Then, collapse contiguous sequences of space characters into single space character, and remove leading and trailing space characters.
Disallowed Substitutions(Applies to element declarations). If substitution is specified, then substitution group members cannot be used in place of the given element declaration to validate element instances. If derivation methods, e.g. extension, restriction, are specified, then the given element declaration will not validate element instances that have types derived from the element declaration's type using the specified derivation methods. Normally, element instances can override their declaration's type by specifying an xsi:type attribute.
Nillable(Applies to element declarations). If an element declaration is nillable, instances can use the xsi:nil attribute. The xsi:nil attribute is the boolean attribute, nil, from the http://www.w3.org/2001/XMLSchema-instance namespace. If an element instance has an xsi:nil attribute set to true, it can be left empty, even though its element declaration may have required content.
Prohibited Derivations(Applies to type definitions). Derivation methods that cannot be used to create sub-types from a given type definition.
Prohibited Substitutions(Applies to complex type definitions). Prevents sub-types that have been derived using the specified derivation methods from validating element instances in place of the given type definition.
Replace Whitespace PolicyReplace tab, line feed, and carriage return characters with space character (Unicode character 32).
Substitution GroupElements that are members of a substitution group can be used wherever the head element of the substitution group is referenced.
Substitution Group Exclusions(Applies to element declarations). Prohibits element declarations from nominating themselves as being able to substitute a given element declaration, if they have types that are derived from the original element's type using the specified derivation methods.
Target NamespaceThe target namespace identifies the namespace that components in this schema belongs to. If no target namespace is provided, then the schema components do not belong to any namespace.