A facet constrains the range of allowable values for simple content.
In NIEM, the most commonly used facets are enumerations (code values). Other examples of a facet include pattern, minLength, and maxExclusive.
Variable | Description | Usage | NDR Reference |
---|---|---|---|
{$Name} |
Name of the code type | Required | NDR Section 10.8: Naming Rules |
{$Definition} |
The definition of the code type | Required | NDR Rule 9-12: Simple type has definition NDR Rule 9-25: Complex type has definition |
{$XSDBase} |
The Schema built-in type that the simple code type is restricting | Required; often "xs:token" | |
{$Facet} |
The kind of facet. See "Facet" column in table below for values. | Required. Repeat facet block for each facet value. | |
{$FacetValue} |
The value of the facet | Required | |
{$FacetDefinition} |
The definition of the facet | Required |
Facet | Description | Text | Numeric | Date |
---|---|---|---|---|
enumeration | An allowable value (a code). | X | X | X |
fractionDigits | The maximum number of decimal places allowed. | X | ||
length | The number of characters of a value. | X | ||
maxLength | The maximum number of characters of a value. | X | ||
minLength | The minimum number of characters of a value. | X | ||
minExclusive | The lower bound - the number must be greater than this constraint. | X | X | |
minInclusive | The lower bound - the number must be greater than or equal to this constraint. | X | X | |
maxExclusive | The upper bound - the number must be less than this constraint. | X | X | |
maxInclusive | The upper bound - the number must be less than or equal to this constraint. | X | X | |
pattern | The regular expression that the value must match. | X | X | X |
totalDigits | The maximum number of digits allowed. | X | ||
whiteSpace | The way white space (spaces, tabs, line feeds, carriage returns) will be handled. | X |
<xs:simpleType name="{$Name}SimpleType"> <xs:annotation> <xs:documentation>A data type for a(n) {$Definition}</xs:documentation> </xs:annotation> <xs:restriction base="{$XSDBase}"> <xs:{$Facet} value="{$FacetValue}"> <xs:annotation> <xs:documentation>{$FacetDefinition}</xs:documentation> </xs:annotation> </xs:{$Facet}> </xs:restriction> </xs:simpleType>