net.sf.saxon.value

Class StringValue

public class StringValue extends AtomicValue

An atomic value of type xs:string
Nested Class Summary
classStringValue.CharacterIterator
CharacterIterator is used to iterate over the characters in a string, returning them as integers representing the Unicode code-point.
Field Summary
static StringValueEMPTY_STRING
protected intlength
static StringValueSINGLE_SPACE
protected CharSequencevalue
Constructor Summary
protected StringValue()
Protected constructor for use by subtypes
StringValue(CharSequence value)
Constructor.
Method Summary
static CharSequencecontract(int[] codes, int used)
Contract an array of integers containing Unicode codepoints into a Java string
AtomicValueconvertPrimitive(BuiltInAtomicType requiredType, boolean validate, XPathContext context)
Convert a value to another primitive data type, with control over how validation is handled.
static AtomicValueconvertStringToAtomicType(CharSequence value, AtomicType targetType, NameChecker checker)
Convert the value to a given type.
static AtomicValueconvertStringToBuiltInType(CharSequence value, BuiltInAtomicType requiredType, NameChecker checker)
Convert a string value to another built-in data type, with control over how validation is handled.
ObjectconvertToJava(Class target, XPathContext context)
Convert to Java object (for passing to external functions)
booleaneffectiveBooleanValue(XPathContext context)
booleanequals(Object other)
Determine if two StringValues are equal, according to XML Schema rules.
static int[]expand(CharSequence s)
Expand a string containing surrogate pairs into an array of 32-bit characters
ItemTypegetItemType(TypeHierarchy th)
Return the type of the expression
intgetStringLength()
Get the length of this string, as defined in XPath.
static intgetStringLength(CharSequence s)
Get the length of a string, as defined in XPath.
StringgetStringValue()
Get the string value as a String
CharSequencegetStringValueCS()
Get the value of the item as a CharSequence.
inthashCode()
SequenceIteratoriterateCharacters()
Iterate over a string, returning a sequence of integers representing the Unicode code-point values
static StringValuemakeStringValue(CharSequence value)
Factory method.
booleanschemaEquals(Value obj)
Compare two values for equality.
StringtoString()

Field Detail

EMPTY_STRING

public static final StringValue EMPTY_STRING

length

protected int length

SINGLE_SPACE

public static final StringValue SINGLE_SPACE

value

protected CharSequence value

Constructor Detail

StringValue

protected StringValue()
Protected constructor for use by subtypes

StringValue

public StringValue(CharSequence value)
Constructor. Note that although a StringValue may wrap any kind of CharSequence (usually a String, but it can also be, for example, a StringBuffer), the caller is responsible for ensuring that the value is immutable.

Parameters: value the String value. Null is taken as equivalent to "".

Method Detail

contract

public static CharSequence contract(int[] codes, int used)
Contract an array of integers containing Unicode codepoints into a Java string

convertPrimitive

public AtomicValue convertPrimitive(BuiltInAtomicType requiredType, boolean validate, XPathContext context)
Convert a value to another primitive data type, with control over how validation is handled.

Parameters: requiredType type code of the required atomic type validate true if validation is required. If set to false, the caller guarantees that the value is valid for the target data type, and that further validation is therefore not required. Note that a validation failure may be reported even if validation was not requested. context

Returns: the result of the conversion, if successful. If unsuccessful, the value returned will be a ValidationErrorValue. The caller must check for this condition. No exception is thrown, instead the exception will be encapsulated within the ErrorValue.

convertStringToAtomicType

public static AtomicValue convertStringToAtomicType(CharSequence value, AtomicType targetType, NameChecker checker)
Convert the value to a given type. The result of the conversion will be an atomic value of the required type. This method works where the target type is a built-in atomic type and also where it is a user-defined atomic type.

Parameters: targetType the type to which the value is to be converted checker a NameChecker if validation is required, null if the caller already knows that the value is valid

Returns: the value after conversion if successful; or a ValidationErrorValue if conversion failed. The caller must check for this condition. Validation may fail even if validation was not requested.

convertStringToBuiltInType

public static AtomicValue convertStringToBuiltInType(CharSequence value, BuiltInAtomicType requiredType, NameChecker checker)
Convert a string value to another built-in data type, with control over how validation is handled.

Parameters: value the value to be converted requiredType the required atomic type checker if validation is required, a NameChecker. If set to null, the caller guarantees that the value is valid for the target data type, and that further validation is therefore not required. Note that a validation failure may be reported even if validation was not requested.

Returns: the result of the conversion, if successful. If unsuccessful, the value returned will be a ValidationErrorValue. The caller must check for this condition. No exception is thrown, instead the exception will be encapsulated within the ValidationErrorValue.

convertToJava

public Object convertToJava(Class target, XPathContext context)
Convert to Java object (for passing to external functions)

effectiveBooleanValue

public boolean effectiveBooleanValue(XPathContext context)

equals

public boolean equals(Object other)
Determine if two StringValues are equal, according to XML Schema rules. (This method is not used for XPath comparisons, which are always under the control of a collation.)

Throws: ClassCastException if the values are not comparable

expand

public static int[] expand(CharSequence s)
Expand a string containing surrogate pairs into an array of 32-bit characters

getItemType

public ItemType getItemType(TypeHierarchy th)
Return the type of the expression

Parameters: th

Returns: Type.STRING (always)

getStringLength

public int getStringLength()
Get the length of this string, as defined in XPath. This is not the same as the Java length, as a Unicode surrogate pair counts as a single character

getStringLength

public static int getStringLength(CharSequence s)
Get the length of a string, as defined in XPath. This is not the same as the Java length, as a Unicode surrogate pair counts as a single character.

Parameters: s The string whose length is required

getStringValue

public final String getStringValue()
Get the string value as a String

getStringValueCS

public final CharSequence getStringValueCS()
Get the value of the item as a CharSequence. This is in some cases more efficient than the version of the method that returns a String.

hashCode

public int hashCode()

iterateCharacters

public SequenceIterator iterateCharacters()
Iterate over a string, returning a sequence of integers representing the Unicode code-point values

makeStringValue

public static StringValue makeStringValue(CharSequence value)
Factory method. Unlike the constructor, this avoids creating a new StringValue in the case of a zero-length string (and potentially other strings, in future)

Parameters: value the String value. Null is taken as equivalent to "".

Returns: the corresponding StringValue

schemaEquals

public boolean schemaEquals(Value obj)
Compare two values for equality. This supports identity constraints in XML Schema, which allow list-valued elements and attributes to participate in key and uniqueness constraints. This method returns false if any error occurs during the comparison, or if any of the items in either sequence is a node rather than an atomic value. The default implementation of schemaEquals() is the same as equals(), but subclasses can override this.

toString

public String toString()