Class DecimalSymbols

java.lang.Object
net.sf.saxon.trans.DecimalSymbols

public class DecimalSymbols extends Object
This class is modelled on Java's DecimalFormatSymbols, but it allows the use of any Unicode character to represent symbols such as the decimal point and the grouping separator, whereas DecimalFormatSymbols restricts these to a char (1-65535).
  • Field Details

  • Constructor Details

    • DecimalSymbols

      public DecimalSymbols(HostLanguage language, int languageLevel)
      Create a DecimalSymbols object with default values for all properties
  • Method Details

    • setHostLanguage

      public void setHostLanguage(HostLanguage language, int languageLevel)
    • getDecimalSeparator

      public int getDecimalSeparator()
      Get the decimal separator value
      Returns:
      the decimal separator value that has been explicitly set, or its default ('.')
    • getGroupingSeparator

      public int getGroupingSeparator()
      Get the grouping separator value
      Returns:
      the grouping separator value that has been explicitly set, or its default (',')
    • getDigit

      public int getDigit()
      Get the digit symbol value
      Returns:
      the digit symbol value that has been explicitly set, or its default ('#')
    • getMinusSign

      public int getMinusSign()
      Get the minus sign value
      Returns:
      the minus sign value that has been explicitly set, or its default ('-')
    • getPercent

      public int getPercent()
      Get the percent symbol value
      Returns:
      the percent symbol value that has been explicitly set, or its default ('%')
    • getPerMille

      public int getPerMille()
      Get the per-mille symbol value
      Returns:
      the per-mille symbol value that has been explicitly set, or its default
    • getZeroDigit

      public int getZeroDigit()
      Get the zero digit symbol value
      Returns:
      the zero digit symbol value that has been explicitly set, or its default ('0')
    • getExponentSeparator

      public int getExponentSeparator()
      Get the exponent separator symbol
      Returns:
      the exponent separator character that has been explicitly set, or its default ('e');
    • getPatternSeparator

      public int getPatternSeparator()
      Get the pattern separator value
      Returns:
      the pattern separator value that has been explicitly set, or its default (';')
    • getInfinity

      public String getInfinity()
      Get the infinity symbol value
      Returns:
      the infinity symbol value that has been explicitly set, or its default ('Infinity')
    • getNaN

      public String getNaN()
      Get the NaN symbol value
      Returns:
      the NaN symbol value that has been explicitly set, or its default ('NaN')
    • setDecimalSeparator

      public void setDecimalSeparator(String value) throws XPathException
      Set the character to be used as the decimal separator
      Parameters:
      value - the character to be used
      Throws:
      XPathException - if the value is not a single Unicode character (a surrogate pair is permitted)
    • setGroupingSeparator

      public void setGroupingSeparator(String value) throws XPathException
      Set the character to be used as the grouping separator
      Parameters:
      value - the character to be used
      Throws:
      XPathException - if the value is not a single Unicode character (a surrogate pair is permitted)
    • setDigit

      public void setDigit(String value) throws XPathException
      Set the character to be used as the digit symbol (default is '#')
      Parameters:
      value - the character to be used
      Throws:
      XPathException - if the value is not a single Unicode character (a surrogate pair is permitted)
    • setMinusSign

      public void setMinusSign(String value) throws XPathException
      Set the character to be used as the minus sign
      Parameters:
      value - the character to be used
      Throws:
      XPathException - if the value is not a single Unicode character (a surrogate pair is permitted)
    • setPercent

      public void setPercent(String value) throws XPathException
      Set the character to be used as the percent sign
      Parameters:
      value - the character to be used
      Throws:
      XPathException - if the value is not a single Unicode character (a surrogate pair is permitted)
    • setPerMille

      public void setPerMille(String value) throws XPathException
      Set the character to be used as the per-mille sign
      Parameters:
      value - the character to be used
      Throws:
      XPathException - if the value is not a single Unicode character (a surrogate pair is permitted)
    • setZeroDigit

      public void setZeroDigit(String value) throws XPathException
      Set the character to be used as the zero digit (which determines the digit family used in the output)
      Parameters:
      value - the character to be used
      Throws:
      XPathException - if the value is not a single Unicode character (a surrogate pair is permitted), or if it is not a character classified in Unicode as a digit with numeric value zero
    • setExponentSeparator

      public void setExponentSeparator(String value) throws XPathException
      Set the character to be used as the exponent separator
      Parameters:
      value - the character to be used
      Throws:
      XPathException - if the value is not a single Unicode character (a surrogate pair is permitted)
    • setPatternSeparator

      public void setPatternSeparator(String value) throws XPathException
      Set the character to be used as the pattern separator (default ';')
      Parameters:
      value - the character to be used
      Throws:
      XPathException - if the value is not a single Unicode character (a surrogate pair is permitted)
    • setInfinity

      public void setInfinity(String value) throws XPathException
      Set the string to be used to represent infinity
      Parameters:
      value - the string to be used
      Throws:
      XPathException - - should not happen
    • setNaN

      public void setNaN(String value) throws XPathException
      Set the string to be used to represent NaN
      Parameters:
      value - the string to be used
      Throws:
      XPathException - - should not happen
    • setProperty

      public void setProperty(int key, String value, int precedence) throws XPathException
      Set the value of a property
      Parameters:
      key - the integer key of the property to be set
      value - the value of the property as a string (in many cases, this must be a single character)
      precedence - the precedence of the property value
      Throws:
      XPathException - if the property is invalid. This method does not check the consistency of different properties. If two different values are supplied for the same property at the same precedence, the method does not complain, but notes the fact, and if the inconsistency is not subsequently cleared by supplying another value at a higher precedence, the error is reported when the checkConsistency() method is subsequently called.
    • setIntProperty

      public void setIntProperty(String name, int value)
      Set one of the single-character properties. Used when reloading an exported package
      Parameters:
      name - the name of the property
      value - the Unicode codepoint of the property value
    • export

      public void export(StructuredQName name, ExpressionPresenter out)
    • checkConsistency

      public void checkConsistency(StructuredQName name) throws XPathException
      Check that no character is used in more than one role
      Parameters:
      name - the name of the decimal format (null for the unnamed decimal format)
      Throws:
      XPathException - if the same character is used in conflicting rules, for example as decimal separator and also as grouping separator
    • isValidZeroDigit

      public static boolean isValidZeroDigit(int zeroDigit)
      Check that the character declared as a zero-digit is indeed a valid zero-digit
      Parameters:
      zeroDigit - the value to be checked
      Returns:
      false if it is not a valid zero-digit
    • equals

      public boolean equals(Object obj)
      Test if two sets of decimal format symbols are the same
      Overrides:
      equals in class Object
      Parameters:
      obj - the other set of symbols
      Returns:
      true if the same characters/strings are assigned to each role in both sets of symbols. The precedences are not compared.
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object