This is a placeholder abstract element used only to enable the use of substitution
groups to indicate which elements are valid in places where synthetic expressions are
expected.
A group of attributes that indicate file position information, i.e., the filename, the line number,
and the column number. Note that the line number and column number indicate the _end_ of the
referenced entity rather than the beginning.
An actual parameter passed to a call. The pos attribute gives the parameter position, where 0 is
the first parameter. The synthetic expression sub-element represents the value to be passed.
Used to reference an actual parameter of a call being replaced or the variable holding the return value of the call being replaced.
This element is only valid when appearing as a sub-element of a replace-call element. If the "pos" attribute is greater than
or equal to 0, the element represents the actual parameter to the call at that position, where the first parameter is at position 0.
If the "pos" attribute is -1, the element represents the variable holding the return value of the call.
A synthetic expression element representing an assignment.
The l-value sub-element gives a synthetic expression representing the left-hand side of the
assignment, and the r-value sub-element gives the right-hand side. Note that not all
possible synthetic expressions are valid l-values; we have not yet attempted to constrain
the l-value types further here, but may do so in the future.
A synthetic expression representing a method call. The signature attribute gives the method
signature in VDB format. Actual parameters for the call and file position information are also
provided.
Information on some existing call site in the application. The caller attribute gives the signature
of the caller method in VDB format. The call-sig attribute gives the signature of the callee method
in VDB format. The bytecodeIndex attribute gives the Java bytecode index of the call.
A reference to a formal parameter of the enclosing synthetic method. The pos attribute gives
the parameter position, where the first parameter is in position 0 (note that for an instance method,
the receiver (or 'this') parameter is the first one).
Used for declaring a local variable in a synthetic method. The id attribute gives a name for
the local that may be used in later local-ref elements to refer to the local.
The type and properties of the declaration can take one of two
forms: (1) a type attribute is provided, but no properties are provided, or (2) no type attribute
is provided, but a list of properties are provided as sub-elements. In case (1), the type attribute
gives the concrete type of the local. In case (2), the concrete type of the local should be some
type that contains fields corresponding to the provided properties. The initialization of the local
is unspecified; we assume that, like a JavaBean, some no-argument constructor can be invoked.
Used for declaring an object reference whose scope is outside a method, e.g., a global variable.
The id attribute gives a name for
the object that may be used in later object-ref elements to refer to the local.
The type and properties of the declaration can take one of two
forms: (1) a type attribute is provided, but no properties are provided, or (2) no type attribute
is provided, but a list of properties are provided as sub-elements. In case (1), the type attribute
gives the concrete type of the local. In case (2), the concrete type of the local should be some
type that contains fields corresponding to the provided properties.
The lifespan attribute can either be "entrypoint," indicating that this reference goes out of scope
at the end of each entrypoint (i.e., HTTP request), or "global," indicating that this reference is
live across multiple entrypoints.
XML Instance Representation
<... id="string[0..1]" type="string[0..1]" lifespan="string (value comes from list: {'entrypoint'|'global'})[0..1]"> Start Sequence[0..*]
An expression representing a reference to some object. The synthetic expression child element
gives the base pointer, and the ap attribute gives the access path off of
that base pointer. An access path is a possibly empty sequence of field names separated by the
'.' character.
Used for declaring a property of some object. The id attribute gives a name for the property,
and the type attribute gives the property's declared type.
Represents a synthetic method. The "sig" attribute gives the signature of the method in VDB format.
Sub-elements give declarations of locals and the method body.
A synthetic expression representing some tainted data. The type attribute gives the type of tainted
data (e.g., "parameter" for taint coming from an HTTP request parameter), and the optional name parameter
gives an associated name (e.g., "address" if the taint comes from the HTTP request parameter named "address").
A single URL mapping. The signature attribute gives the entrypoint method signature in VDB
format, and the URL attribute gives the corresponding URL pattern, which can include the
'*' regular expression operator.
Type of the top-level element in a WAFL spec. The global-bean-decls sub-element holds all the
global object declarations. Then, the synthetic-methods sub-element provides all synthetic
methods used in specifying the application. The entrypoint-signatures sub-element lists the
method signatures of all entrypoint methods, some of which may be synthetic. The url-mappings
element gives all discovered mappings from URLs to entrypoints. Finally, the call-replacements
sub-element gives information on what calls in the application should be replaced and what they
should be replaced with.
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.