Facets

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 Replacement Table

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    

Facet Pattern

<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>

Example