net.sf.saxon.om

Class NameChecker

public abstract class NameChecker extends Object

A NameChecker performs validation and analysis of XML names. There are two implementations of this interface, one for XML 1.0 names and one for XML 1.1 names. The class also handles validation of characters against the XML 1.0 or XML 1.1 rules.
Method Summary
String[]checkQNameParts(CharSequence qname)
Validate a QName, and return the prefix and local name.
static StringgetPrefix(String qname)
Extract the prefix from a QName.
String[]getQNameParts(CharSequence qname)
Validate a QName, and return the prefix and local name.
abstract StringgetXMLVersion()
Return the XML version supported by this NameChecker
abstract booleanisNCNameChar(int ch)
Test whether a character can appear in an NCName
abstract booleanisNCNameStartChar(int ch)
Test whether a character can appear at the start of an NCName
booleanisQName(String name)
Validate whether a given string constitutes a valid QName, as defined in XML Namespaces.
abstract booleanisValidChar(int ch)
Test whether a character is a valid XML character
booleanisValidNCName(CharSequence ncName)
Validate whether a given string constitutes a valid NCName, as defined in XML Namespaces.
booleanisValidNmtoken(CharSequence nmtoken)
Check to see if a string is a valid Nmtoken according to [7] in the XML 1.0 Recommendation

Method Detail

checkQNameParts

public final String[] checkQNameParts(CharSequence qname)
Validate a QName, and return the prefix and local name. Both parts are checked to ensure they are valid NCNames.

Used from compiled code

Parameters: qname the lexical QName whose parts are required. Note that leading and trailing whitespace is not permitted

Returns: an array of two strings, the prefix and the local name. The first item is a zero-length string if there is no prefix.

Throws: XPathException if not a valid QName.

getPrefix

public static String getPrefix(String qname)
Extract the prefix from a QName. Note, the QName is assumed to be valid.

Parameters: qname The lexical QName whose prefix is required

Returns: the prefix, that is the part before the colon. Returns an empty string if there is no prefix

getQNameParts

public final String[] getQNameParts(CharSequence qname)
Validate a QName, and return the prefix and local name. The local name is checked to ensure it is a valid NCName. The prefix is not checked, on the theory that the caller will look up the prefix to find a URI, and if the prefix is invalid, then no URI will be found.

Parameters: qname the lexical QName whose parts are required. Note that leading and trailing whitespace is not permitted

Returns: an array of two strings, the prefix and the local name. The first item is a zero-length string if there is no prefix.

Throws: QNameException if not a valid QName.

getXMLVersion

public abstract String getXMLVersion()
Return the XML version supported by this NameChecker

Returns: "1.0" or "1.1" as a string

isNCNameChar

public abstract boolean isNCNameChar(int ch)
Test whether a character can appear in an NCName

Parameters: ch the character to be tested

Returns: true if this is a valid character in an NCName the selected version of XML

isNCNameStartChar

public abstract boolean isNCNameStartChar(int ch)
Test whether a character can appear at the start of an NCName

Parameters: ch the character to be tested

Returns: true if this is a valid character at the start of an NCName the selected version of XML

isQName

public final boolean isQName(String name)
Validate whether a given string constitutes a valid QName, as defined in XML Namespaces. Note that this does not test whether the prefix is actually declared.

Parameters: name the name to be tested

Returns: true if the name is a lexically-valid QName

isValidChar

public abstract boolean isValidChar(int ch)
Test whether a character is a valid XML character

Parameters: ch the character to be tested

Returns: true if this is a valid character in the selected version of XML

isValidNCName

public final boolean isValidNCName(CharSequence ncName)
Validate whether a given string constitutes a valid NCName, as defined in XML Namespaces.

Parameters: ncName the name to be tested

Returns: true if the name is a lexically-valid QName

isValidNmtoken

public final boolean isValidNmtoken(CharSequence nmtoken)
Check to see if a string is a valid Nmtoken according to [7] in the XML 1.0 Recommendation

Parameters: nmtoken string to check

Returns: true if nmtoken is a valid Nmtoken