/**
  * Get the value of a node as a string.
  *
  * @param n Node to be converted to a string. May be null.
  * @return value of n as a string, or an empty string if n is null.
  */
 public String toString(org.w3c.dom.Node n) {
   // %REVIEW% You can't get much uglier than this...
   int nodeHandle = getDTMHandleFromNode(n);
   DTM dtm = getDTM(nodeHandle);
   XMLString strVal = dtm.getStringValue(nodeHandle);
   return strVal.toString();
 }
Exemple #2
0
 /**
  * Compares this string to the specified object. The result is <code>true</code> if and only if
  * the argument is not <code>null</code> and is a <code>String</code> object that represents the
  * same sequence of characters as this object.
  *
  * @param obj2 the object to compare this <code>String</code> against.
  * @return <code>true</code> if the <code>String </code>are equal; <code>false</code> otherwise.
  * @see java.lang.String#compareTo(java.lang.String)
  * @see java.lang.String#equalsIgnoreCase(java.lang.String)
  */
 public boolean equals(XMLString obj2) {
   if (obj2 != null) {
     if (!obj2.hasString()) {
       return obj2.equals(str());
     } else {
       return str().equals(obj2.toString());
     }
   }
   return false;
 }
  /**
   * Execute the first argument expression that is expected to return a number. If the argument is
   * null, then get the number value from the current context node.
   *
   * @param xctxt Runtime XPath context.
   * @return The number value of the first argument, or the number value of the current context node
   *     if the first argument is null.
   * @throws javax.xml.transform.TransformerException if an error occurs while executing the
   *     argument expression.
   */
  protected double getArg0AsNumber(XPathContext xctxt)
      throws javax.xml.transform.TransformerException {

    if (null == m_arg0) {
      int currentNode = xctxt.getCurrentNode();
      if (DTM.NULL == currentNode) return 0;
      else {
        DTM dtm = xctxt.getDTM(currentNode);
        XMLString str = dtm.getStringValue(currentNode);
        return str.toDouble();
      }

    } else return m_arg0.execute(xctxt).num();
  }
Exemple #4
0
  /**
   * Compares two strings lexicographically.
   *
   * @param xstr the <code>String</code> to be compared.
   * @return the value <code>0</code> if the argument string is equal to this string; a value less
   *     than <code>0</code> if this string is lexicographically less than the string argument; and
   *     a value greater than <code>0</code> if this string is lexicographically greater than the
   *     string argument.
   * @exception java.lang.NullPointerException if <code>anotherString</code> is <code>null</code>.
   */
  public int compareTo(XMLString xstr) {

    int len1 = this.length();
    int len2 = xstr.length();
    int n = Math.min(len1, len2);
    int i = 0;
    int j = 0;

    while (n-- != 0) {
      char c1 = this.charAt(i);
      char c2 = xstr.charAt(j);

      if (c1 != c2) {
        return c1 - c2;
      }

      i++;
      j++;
    }

    return len1 - len2;
  }
Exemple #5
0
  /**
   * Tests if this string starts with the specified prefix beginning a specified index.
   *
   * @param prefix the prefix.
   * @param toffset where to begin looking in the string.
   * @return <code>true</code> if the character sequence represented by the argument is a prefix of
   *     the substring of this object starting at index <code>toffset</code>; <code>false</code>
   *     otherwise. The result is <code>false</code> if <code>toffset</code> is negative or greater
   *     than the length of this <code>String</code> object; otherwise the result is the same as the
   *     result of the expression
   *     <pre>
   *          this.subString(toffset).startsWith(prefix)
   *          </pre>
   *
   * @exception java.lang.NullPointerException if <code>prefix</code> is <code>null</code>.
   */
  public boolean startsWith(XMLString prefix, int toffset) {

    int to = toffset;
    int tlim = this.length();
    int po = 0;
    int pc = prefix.length();

    // Note: toffset might be near -1>>>1.
    if ((toffset < 0) || (toffset > tlim - pc)) {
      return false;
    }

    while (--pc >= 0) {
      if (this.charAt(to) != prefix.charAt(po)) {
        return false;
      }

      to++;
      po++;
    }

    return true;
  }
Exemple #6
0
  /**
   * Convert a string to a double -- Allowed input is in fixed notation ddd.fff.
   *
   * @return A double value representation of the string, or return Double.NaN if the string can not
   *     be converted.
   */
  public double toDouble() {
    /* XMLCharacterRecognizer.isWhiteSpace(char c) methods treats the following
     * characters as white space characters.
     * ht - horizontal tab, nl - newline , cr - carriage return and sp - space
     * trim() methods by default also takes care of these white space characters
     * So trim() method is used to remove leading and trailing white spaces.
     */
    XMLString s = trim();
    double result = Double.NaN;
    for (int i = 0; i < s.length(); i++) {
      char c = s.charAt(i);
      if (c != '-' && c != '.' && (c < 0X30 || c > 0x39)) {
        // The character is not a '-' or a '.' or a digit
        // then return NaN because something is wrong.
        return result;
      }
    }
    try {
      result = Double.parseDouble(s.toString());
    } catch (NumberFormatException e) {
    }

    return result;
  }
Exemple #7
0
 /**
  * Returns the index within this string of the first occurrence of the specified substring. The
  * integer returned is the smallest value <i>k</i> such that:
  *
  * <blockquote>
  *
  * <pre>
  * this.startsWith(str, <i>k</i>)
  * </pre>
  *
  * </blockquote>
  *
  * is <code>true</code>.
  *
  * @param str any string.
  * @return if the string argument occurs as a substring within this object, then the index of the
  *     first character of the first such substring is returned; if it does not occur as a
  *     substring, <code>-1</code> is returned.
  * @exception java.lang.NullPointerException if <code>str</code> is <code>null</code>.
  */
 public int indexOf(XMLString str) {
   return str().indexOf(str.toString());
 }