Class NmTokenAttribute

    • Method Detail

      • checkValue

        protected void checkValue​(@Opt
                                  @Opt java.lang.String value)
                           throws TdomAttributeSyntaxException
        Description copied from class: TypedAttribute
        Check routine for the validity of the attributes' intended value. Is a call-back, implemented by the sub-classes. Is called only here, by two constructors and the #set_value(V) method. The value null means "absent" for #IMPLIED attributes and passes the test.
        Specified by:
        checkValue in class TypedAttribute<java.lang.String>
        Parameters:
        value - the value to test; maybe null.
        Throws:
        TdomAttributeSyntaxException - iff the value does not match the type of the XML attribute, including a forbidden Null.
      • getTypeString

        public java.lang.String getTypeString()
        Description copied from class: TypedAttribute
        The definition text for the "type" of the attribute in the original DTD.
        Specified by:
        getTypeString in class TypedAttribute<java.lang.String>
      • _checkToken

        protected static boolean _checkToken​(@Opt
                                             @Opt java.lang.String token,
                                             boolean mustBeName)
        Checks whether the argument fits the rules for Nmtoken and Name in XML1.0. For details see checkNmToken(java.lang.String).
        Parameters:
        token - the string to check.
        mustBeName - true if the stricter rules for name, not for NmTokenAttribute, are checked.
        Returns:
        true on success. Null passes the test.
      • checkNmToken

        public static void checkNmToken​(@Opt
                                        @Opt java.lang.String token)
        Check whether the argument is a legal value for "Nmtoken". This check method throws an IllegalArgumentException, or returns silently.

        The flavours of XML names and their relations

        The rules for a correct xml Nmtoken or xml Name are crucial and complicated, see [XML 1.0], grammar rules [5] and [7].
        Grammar rule [7] defines NmToken as a non-empty string from letters, digits and few punctation characters. XML spec lists about HUNDRED of ranges which can serve as "Letter", either defined as "BaseChar" or "Ideographic". [XML 1.0:rules 84-86].
        FIXME CHECK XML 1.1 !!
        Instead of "Letter" we use Character.isJavaIdentifierStart(char) as an APPROXIMATION, and for "Letter or Digit" we use Character.isJavaIdentifierPart(char). But both after excluding the "dollar" sign.

        Names are defined by rule [5]. The difference between Nmtokens and Names is, that the very first character of a name must be a "letter" or "_" or ":".
        Names are checked by checkNameToken(String).
        The Name production must be adhered to by the value of all attributes of type Id, IdRef, IdRefs, Entity, Entities and Notation. (The value for "notation" must be defined somewhere else as a "NOTATION"; this is a further *global* consistency condition currently not checked by tdom)

        The weaker Nmtoken can be used for NmToken, NmTokens and Enumeration values.

        Further there is NCName (="No-Colon-Name") [NSinXML 1.0:rule 4], which is a Name not containing a colon ":".
        NCNames are checked by checkNCName(String).

        Further there is PiTarget, which is a Name token which does not start with "(X|x)(M|m)(L|l)" in any combination.
        PiTargets are checked by checkPITarget(String).

        Further there are the un-reserved namespace prefixes, which are NCNames and do not start with "(X|x)(M|m)(L|l)" in any combination. [NSinXML: NSC:Reserved Prefixes and Namespace Names].

        Parameters:
        token - The token to check, Null passes the test.
        Throws:
        java.lang.IllegalArgumentException
      • checkNameToken

        public static void checkNameToken​(@Opt
                                          @Opt java.lang.String token)
        Check whether the argument is a legal value for a "Name" token, according to [XML 1.0].
        See checkNmToken(String) for details.
        Parameters:
        token - The token to check, Null passes the test.
        Throws:
        java.lang.IllegalArgumentException
      • checkNCName

        public static void checkNCName​(@Opt
                                       @Opt java.lang.String token)
        Check whether the argument is a legal value for a "Name" token and does not contain a colon ":".
        (This is currently not used by us, but defined by [NSinXML 1.0:rule 4], and addtionally REQUIRED FOR ALL Attribute Values of type Id/IdRef/IdRefs/Entity/Entities/Notation for a "namespace-valid" document, see [NSinXML 1.0:section 7, last sentence],
        See checkNmToken(String) for further details of all check methods in this class.
        Parameters:
        token - The token to check, Null passes the test.
        Throws:
        java.lang.IllegalArgumentException
      • checkPITarget

        public static void checkPITarget​(@Opt
                                         @Opt java.lang.String token)
        Check whether the argument is a legal value for a "Name" token and does not start with the three characters "XML" in any combination of upper/lower case. These can be used as "PI targets" and are allowed as prefices in namespace declarations. See [XML1.0:section 2.6] and [NSinXML 1.0:section 3, last sentence].
        See checkNmToken(String) for further details of all check methods in this class.
        Parameters:
        token - The token to check, Null passes the test.
        Throws:
        java.lang.IllegalArgumentException
      • getStringValue

        @Opt
        public final @Opt java.lang.String getStringValue​(@Opt
                                                          @Opt java.lang.String s)
        Description copied from class: TypedAttribute
        Returns the textual representation of a possible attribute value (not null), as it would be contained literally in a possible XML text representation. Since the textual representation of a String is the string itself, this method is relevant for enumeration types only (Later: also for "entity" types, but these are not yet supported.)
        Specified by:
        getStringValue in class TypedAttribute<java.lang.String>
        Returns:
        (never null) the textual representation of this attribute value, as it would be contained literally in a possible XML text representation.