## net.sf.saxon.value
Class StringValue

    java.lang.Object
      net.sf.saxon.value.Value
          net.sf.saxon.value.AtomicValue
              net.sf.saxon.value.StringValue

All Implemented Interfaces:
  Expression, Item, java.io.Serializable, ValueRepresentation

Direct Known Subclasses:
  AnyURIValue, RestrictedStringValue, UntypedAtomicValue

public class StringValue
extends AtomicValue

An atomic value of type xs:string

See Also:
  Serialized Form

Nested Class Summary
`class` `StringValue.CharacterIterator` CharacterIterator is used to iterate over the characters in a string, returning them as integers representing the Unicode code-point.

Field Summary
`static StringValue` `EMPTY_STRING`
`protected int` `length`
`static StringValue` `SINGLE_SPACE`
`protected java.lang.CharSequence` `value`

Fields inherited from interface net.sf.saxon.expr.Expression
`EVALUATE_METHOD, ITERATE_METHOD, PROCESS_METHOD`

Constructor Summary
`protected` `StringValue()` Protected constructor for use by subtypes
`` `StringValue(java.lang.CharSequence value)` Constructor.

Method Summary
`AtomicValue` `convertPrimitive(BuiltInAtomicType requiredType, boolean validate)` Convert a value to another primitive data type, with control over how validation is handled.
`java.lang.Object` `convertToJava(java.lang.Class target, XPathContext context)` Convert to Java object (for passing to external functions)
`boolean` `effectiveBooleanValue(XPathContext context)` Get the effective boolean value of the value
`boolean` `equals(java.lang.Object other)` Determine if two StringValues are equal, according to XML Schema rules.
`static int[]` `expand(java.lang.CharSequence s)` Expand a string containing surrogate pairs into an array of 32-bit characters
`ItemType` `getItemType()` Return the type of the expression
`int` `getStringLength()` Get the length of this string, as defined in XPath.
`static int` `getStringLength(java.lang.CharSequence s)` Get the length of a string, as defined in XPath.
`java.lang.String` `getStringValue()` Get the string value as a String
`java.lang.CharSequence` `getStringValueCS()` Get the value of the item as a CharSequence.
`int` `hashCode()` Return a hash code to support the equals() function
`SequenceIterator` `iterateCharacters()` Iterate over a string, returning a sequence of integers representing the Unicode code-point values
`java.lang.String` `toString()` Get string value.

Methods inherited from class net.sf.saxon.value.AtomicValue
`checkPermittedContents, convert, convert, display, evaluateAsString, evaluateItem, getCardinality, getComponent, getImplementationMethod, getLength, getPrimitiveValue, getTypedValue, hasBuiltInType, iterate, process`

Methods inherited from class net.sf.saxon.value.Value
`analyze, asItem, asValue, collapseWhitespace, convert, convertJavaObjectToXPath, getDependencies, getIterator, getParentExpression, getSpecialProperties, itemAt, iterateSubExpressions, makeQNameValue, normalizeWhitespace, promote, simplify, stringToNumber, trimWhitespace`

Methods inherited from class java.lang.Object
`clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

Field Detail

### EMPTY_STRING

    public static final StringValue EMPTY_STRING

### SINGLE_SPACE

    public static final StringValue SINGLE_SPACE

### value

    protected java.lang.CharSequence value

### length

    protected int length

Constructor Detail

### StringValue

    protected StringValue()

  Protected constructor for use by subtypes

### StringValue

    public StringValue(java.lang.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

### getStringValue

    public final java.lang.String getStringValue()

  Get the string value as a String

  Specified by:
    `getStringValue` in interface `Item`
  Specified by:
    `getStringValue` in class `AtomicValue`

### getStringValueCS

    public final java.lang.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.

  Specified by:
    `getStringValueCS` in interface `Item`
  Overrides:
    `getStringValueCS` in class `AtomicValue`

### convertPrimitive

    public AtomicValue convertPrimitive(BuiltInAtomicType requiredType,
                                        boolean validate)

  Convert a value to another primitive data type, with control over how validation is handled.

  Specified by:
    `convertPrimitive` in class `AtomicValue`
  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.
  Returns:
    the result of the conversion, if successful. If unsuccessful, the value returned will be an ErrorValue. The caller must check for this condition. No exception is thrown, instead the exception will be encapsulated within the ErrorValue.

### getItemType

    public ItemType getItemType()

  Return the type of the expression

  Specified by:
    `getItemType` in interface `Expression`
  Overrides:
    `getItemType` in class `Value`
  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(java.lang.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

### iterateCharacters

    public SequenceIterator iterateCharacters()

  Iterate over a string, returning a sequence of integers representing the Unicode code-point values

### expand

    public static int[] expand(java.lang.CharSequence s)

  Expand a string containing surrogate pairs into an array of 32-bit characters

### equals

    public boolean equals(java.lang.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.)

  Overrides:
    `equals` in class `Value`
  Throws:
    `java.lang.ClassCastException` - if the values are not comparable

### hashCode

    public int hashCode()

  Description copied from class: `Value`
  Return a hash code to support the equals() function

  Overrides:
    `hashCode` in class `Value`

### effectiveBooleanValue

    public boolean effectiveBooleanValue(XPathContext context)
                                  throws XPathException

  Description copied from class: `AtomicValue`
  Get the effective boolean value of the value

  Specified by:
    `effectiveBooleanValue` in interface `Expression`
  Overrides:
    `effectiveBooleanValue` in class `AtomicValue`
  Parameters:
    `context` - the evaluation context (not used in this implementation)
  Returns:
    true, unless the value is boolean false, numeric zero, or zero-length string
  Throws:
    `XPathException`

### convertToJava

    public java.lang.Object convertToJava(java.lang.Class target,
                                          XPathContext context)
                                   throws XPathException

  Convert to Java object (for passing to external functions)

  Overrides:
    `convertToJava` in class `Value`
  Throws:
    `XPathException`

### toString

    public java.lang.String toString()

  Description copied from class: `AtomicValue`
  Get string value. In general toString() for an atomic value displays the value as it would be written in XPath: that is, as a literal if available, or as a call on a constructor function otherwise.

  Overrides:
    `toString` in class `AtomicValue`