net.sf.saxon.om
Class NameChecker

java.lang.Object
  extended by net.sf.saxon.om.NameChecker
Direct Known Subclasses:
Name10Checker, Name11Checker

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.


Constructor Summary
NameChecker()
           
 
Method Summary
 String[] checkQNameParts(CharSequence qname)
          Validate a QName, and return the prefix and local name.
static String getPrefix(String qname)
          Extract the prefix from a QName.
 String[] getQNameParts(CharSequence qname)
          Validate a QName, and return the prefix and local name.
abstract  String getXMLVersion()
          Return the XML version supported by this NameChecker
 boolean isQName(String name)
          Validate whether a given string constitutes a valid QName, as defined in XML Namespaces.
abstract  boolean isValidChar(int ch)
          Test whether a character is a valid XML character
abstract  boolean isValidNCName(CharSequence name)
          Validate whether a given string constitutes a valid NCName, as defined in XML Namespaces.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

NameChecker

public NameChecker()
Method Detail

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

isValidNCName

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

Parameters:
name - the name to be tested
Returns:
true if the name is a lexically-valid QName

getPrefix

public static final 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)
                             throws QNameException
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.

checkQNameParts

public final String[] checkQNameParts(CharSequence qname)
                               throws XPathException
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.

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

getXMLVersion

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

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


Copyright (C) Michael H. Kay. All rights reserved.