IFClite TypeScript API
    Preparing search index...

    Interface IDSBoundsConstraint

    Bounds constraint - numeric range or string length

    interface IDSBoundsConstraint {
        and?: readonly IDSConstraint[];
        base?: string;
        fractionDigits?: number;
        length?: number;
        maxExclusive?: number;
        maxInclusive?: number;
        maxLength?: number;
        minExclusive?: number;
        minInclusive?: number;
        minLength?: number;
        temporalBounds?: {
            maxExclusive?: string;
            maxInclusive?: string;
            minExclusive?: string;
            minInclusive?: string;
        };
        totalDigits?: number;
        type: "bounds";
        unparseableFacets?: readonly { facet: string; rawValue: string }[];
    }
    Index
    and?: readonly IDSConstraint[]

    Facets of the SAME <xs:restriction> beyond this one. XSD facets in a single restriction are conjunctive — a value must satisfy every one — but one IDSConstraint expresses only one family, so parseRestriction keeps the first here and hangs the rest off this list for matchConstraint to require as well. Unset for the overwhelmingly common single-family restriction. Matching (matchConstraint) and the two description paths (formatConstraint, TranslationService.describeConstraint) account for it, and so do the IDS-document auditors under audit/ (coherence and predefined-type checks visit every sibling, IDS-010).

    base?: string

    The originating xs:restriction @base (e.g. xs:double, xs:integer). Set when the constraint came from an <xs:restriction> so the auditor can compare against the IFC dataType's backing type directly.

    fractionDigits?: number

    xs:fractionDigits — maximum number of digits after the decimal point

    length?: number

    xs:length — exact string length

    maxExclusive?: number

    Maximum exclusive value

    maxInclusive?: number

    Maximum inclusive value

    maxLength?: number

    xs:maxLength — maximum string length

    minExclusive?: number

    Minimum exclusive value

    minInclusive?: number

    Minimum inclusive value

    minLength?: number

    xs:minLength — minimum string length

    temporalBounds?: {
        maxExclusive?: string;
        maxInclusive?: string;
        minExclusive?: string;
        minInclusive?: string;
    }

    The bound facets of an xs:date / xs:dateTime / xs:time / xs:duration restriction, as their validated lexical text. Those value spaces are not numbers, so the numeric min* / max* fields above stay unset for them and the bounds live here instead, compared in the base's own order (#7399).

    totalDigits?: number

    xs:totalDigits — maximum number of significant decimal digits

    type: "bounds"
    unparseableFacets?: readonly { facet: string; rawValue: string }[]

    Facets whose <xs:*Inclusive|Exclusive|Length|Digits> element was PRESENT in the source <xs:restriction> but whose @value is not in the lexical space the facet requires: for a min/max bound, the restriction @base's (#7399); for a length or digit-count facet, a non-negative integer — e.g. a typo'd "6O" (letter O), the European decimal "6,5", or "2024-13-01" under xs:date. Distinct from a facet that was never present at all: the corresponding numeric field above is undefined in BOTH cases, but only this list distinguishes "no such constraint" from "the author tried to constrain this and failed." matchBounds fails closed (rejects every value) when this is non-empty, rather than silently treating a botched restriction as unbounded.