@User public abstract class NmTokenAttribute extends TypedAttribute<String>
NMTOKEN
" type.
Offers additionally static methods for checking several flavours of
Token definitions from XML, which can be used explicitly by user code, and are used
by this and other attribute base classes.TypedAttribute.__PreAtts, TypedAttribute.SafeValues
TypedNode.ParseListener<E extends TypedElement<?,?>>
__preAtts, emptyAttributes, mutable, safeValues, specified, value
Modifier | Constructor and Description |
---|---|
protected |
NmTokenAttribute() |
protected |
NmTokenAttribute(@Opt String value) |
Modifier and Type | Method and Description |
---|---|
protected static boolean |
_checkToken(@Opt String token,
boolean mustBeName)
Checks whether the argument fits the rules for Nmtoken and Name in XML1.0.
|
static void |
checkNameToken(@Opt String token)
Check whether the argument is a legal value for a "Name" token,
according to [XML 1.0].
|
static void |
checkNCName(@Opt String token)
Check whether the argument is a legal value for a "Name" token and does
not contain a colon ":".
|
static void |
checkNmToken(@Opt String token)
Check whether the argument is a legal value for "Nmtoken".
|
static void |
checkPITarget(@Opt 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.
|
protected void |
checkValue(@Opt String value)
Check routine for the validity of the attributes' intended value.
|
void |
encode(EncodingOutputStream out,
TypedExtension ext)
Abstract fall-back method which MUST be overridden and always throws an Exception.
|
@Opt String |
getStringValue(@Opt String s)
Returns the textual representation of a possible attribute value (not null),
as it would be contained literally in a possible XML text representation.
|
String |
getTypeString()
The definition text for the "type" of the attribute in the original DTD.
|
assertSetAttrValid, checkRequired, clearValue, find, find, getDefaultValue, getLocalName, getNamespaceName, getNamespaceURI, getStringValue, getTagName, getValue, isFixed, isOptional, isRequired, isSpecified, makeUnspecified, put, setValue
asBigDecimal, asBigDecimal, asBigDecimal, asBigDecimal, asBigInteger, asBigInteger, asBigInteger, asBigInteger, asBoolean, asBoolean, asDouble, asDouble, asDouble, asDouble, asFloat, asFloat, asFloat, asFloat, asHexInt, asHexInt, asHexInt, asHexInt, asInt, asInt, asInt, asInt, asLong, asLong, asLong, asLong, asTrimmedString, asTrimmedString, asTrimmedString, asTrimmedString, checkPlus, checkPlus, checkStar, checkStar, checkStrict, encode, encodeOptional, encodePlus, encodePlus, encodeStar, encodeStar, extractEthereals, getLocation, getPCData, setLocation, setLocation, setLocation
protected NmTokenAttribute()
protected NmTokenAttribute(@Opt @Opt String value) throws TdomAttributeSyntaxException
TdomAttributeSyntaxException
protected void checkValue(@Opt @Opt String value) throws TdomAttributeSyntaxException
TypedAttribute
#set_value(V)
method.
The value null
means "absent" for #IMPLIED
attributes and passes the test.checkValue
in class TypedAttribute<String>
value
- the value to test; maybe null.TdomAttributeSyntaxException
- iff the value does not match the type of the
XML attribute, including a forbidden Null.public String getTypeString()
TypedAttribute
getTypeString
in class TypedAttribute<String>
protected static boolean _checkToken(@Opt @Opt String token, boolean mustBeName)
checkNmToken(java.lang.String)
.token
- the string to check.mustBeName
- true if the stricter rules for name, not for NmTokenAttribute, are
checked.@User public static void checkNmToken(@Opt @Opt String token)
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].
token
- The token to check, Null passes the test.IllegalArgumentException
@User public static void checkNameToken(@Opt @Opt String token)
checkNmToken(String)
for details.token
- The token to check, Null passes the test.IllegalArgumentException
@User public static void checkNCName(@Opt @Opt String token)
checkNmToken(String)
for further details of all check methods in this class.token
- The token to check, Null passes the test.IllegalArgumentException
@User public static void checkPITarget(@Opt @Opt String token)
checkNmToken(String)
for further details of all check methods in this class.token
- The token to check, Null passes the test.IllegalArgumentException
public final void encode(EncodingOutputStream out, TypedExtension ext) throws IOException
TypedNode
encode
in class TypedNode<TypedExtension>
IOException
@Opt public final @Opt String getStringValue(@Opt @Opt String s)
TypedAttribute
getStringValue
in class TypedAttribute<String>
see also the complete user documentation .