14c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson/*
24c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Licensed to the Apache Software Foundation (ASF) under one
34c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * or more contributor license agreements. See the NOTICE file
44c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * distributed with this work for additional information
54c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * regarding copyright ownership. The ASF licenses this file
64c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * to you under the Apache License, Version 2.0 (the  "License");
74c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * you may not use this file except in compliance with the License.
84c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * You may obtain a copy of the License at
94c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson *
104c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson *     http://www.apache.org/licenses/LICENSE-2.0
114c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson *
124c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Unless required by applicable law or agreed to in writing, software
134c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * distributed under the License is distributed on an "AS IS" BASIS,
144c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
154c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * See the License for the specific language governing permissions and
164c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * limitations under the License.
174c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */
184c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson/*
194c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * $Id: ProcessorDecimalFormat.java 468640 2006-10-28 06:53:53Z minchau $
204c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */
214c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilsonpackage org.apache.xalan.processor;
224c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
234c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilsonimport org.apache.xalan.templates.DecimalFormatProperties;
244c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilsonimport org.xml.sax.Attributes;
254c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
264c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson/**
274c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * Process xsl:decimal-format by creating a DecimalFormatProperties
284c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * object and passing it to the stylesheet.
294c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson *
304c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @see org.apache.xalan.templates.Stylesheet#setDecimalFormat
314c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @see org.apache.xalan.templates.DecimalFormatProperties
324c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @see <a href="http://www.w3.org/TR/xslt#format-number">format-number in XSLT Specification</a>
334c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson * @xsl.usage internal
344c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson */
354c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilsonclass ProcessorDecimalFormat extends XSLTElementProcessor
364c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson{
374c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    static final long serialVersionUID = -5052904382662921627L;
384c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
394c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson  /**
404c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   * Receive notification of the start of an element.
414c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   *
424c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   * @param handler The calling StylesheetHandler/TemplatesBuilder.
434c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   * @param uri The Namespace URI, or the empty string if the
444c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   *        element has no Namespace URI or if Namespace
454c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   *        processing is not being performed.
464c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   * @param localName The local name (without prefix), or the
474c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   *        empty string if Namespace processing is not being
484c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   *        performed.
494c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   * @param rawName The raw XML 1.0 name (with prefix), or the
504c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   *        empty string if raw names are not available.
514c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   * @param attributes The attributes attached to the element.  If
524c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   *        there are no attributes, it shall be an empty
534c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   *        Attributes object.
544c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   * @see org.apache.xalan.processor.StylesheetHandler#startElement
554c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   * @see org.apache.xalan.processor.StylesheetHandler#endElement
564c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   * @see org.xml.sax.ContentHandler#startElement
574c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   * @see org.xml.sax.ContentHandler#endElement
584c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   * @see org.xml.sax.Attributes
594c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson   */
604c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson  public void startElement(
614c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson          StylesheetHandler handler, String uri, String localName, String rawName, Attributes attributes)
624c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson            throws org.xml.sax.SAXException
634c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson  {
644c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
654c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    DecimalFormatProperties dfp = new DecimalFormatProperties(handler.nextUid());
664c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
674c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    dfp.setDOMBackPointer(handler.getOriginatingNode());
684c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    dfp.setLocaterInfo(handler.getLocator());
694c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
704c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    setPropertiesFromAttributes(handler, rawName, attributes, dfp);
714c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    handler.getStylesheet().setDecimalFormat(dfp);
724c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson
734c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson    handler.getStylesheet().appendChild(dfp);
744c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson  }
754c7a0d97cf2b27790e6236965a1d798d710d7ec7Jesse Wilson}
76