147173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner/*
247173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner * Licensed to the Apache Software Foundation (ASF) under one
347173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner * or more contributor license agreements. See the NOTICE file
447173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner * distributed with this work for additional information
547173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner * regarding copyright ownership. The ASF licenses this file
647173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner * to you under the Apache License, Version 2.0 (the  "License");
747173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner * you may not use this file except in compliance with the License.
847173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner * You may obtain a copy of the License at
947173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner *
1047173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner *     http://www.apache.org/licenses/LICENSE-2.0
1147173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner *
1247173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner * Unless required by applicable law or agreed to in writing, software
1347173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner * distributed under the License is distributed on an "AS IS" BASIS,
1447173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1547173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner * See the License for the specific language governing permissions and
1647173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner * limitations under the License.
1747173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner */
1847173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner/*
1947173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner * $Id: ProcessorAttributeSet.java 468640 2006-10-28 06:53:53Z minchau $
2047173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner */
2147173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turnerpackage org.apache.xalan.processor;
2247173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner
2347173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turnerimport javax.xml.transform.TransformerException;
2447173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner
2547173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turnerimport org.apache.xalan.templates.ElemAttributeSet;
2647173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turnerimport org.apache.xalan.templates.ElemTemplateElement;
2747173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner
2847173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turnerimport org.xml.sax.Attributes;
2947173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner
3047173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner/**
3147173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner * This class processes parse events for an xsl:attribute-set.
3247173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner * @see <a href="http://www.w3.org/TR/xslt#dtd">XSLT DTD</a>
3347173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner * @see <a href="http://www.w3.org/TR/xslt#attribute-sets">attribute-sets in XSLT Specification</a>
3447173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner */
3547173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turnerclass ProcessorAttributeSet extends XSLTElementProcessor
3647173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner{
3747173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner    static final long serialVersionUID = -6473739251316787552L;
3847173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner
3947173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner  /**
4047173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   * Receive notification of the start of an xsl:attribute-set element.
4147173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   *
4247173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   * @param handler The calling StylesheetHandler/TemplatesBuilder.
4347173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   * @param uri The Namespace URI, or the empty string if the
4447173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   *        element has no Namespace URI or if Namespace
4547173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   *        processing is not being performed.
4647173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   * @param localName The local name (without prefix), or the
4747173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   *        empty string if Namespace processing is not being
4847173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   *        performed.
4947173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   * @param rawName The raw XML 1.0 name (with prefix), or the
5047173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   *        empty string if raw names are not available.
5147173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   * @param attributes The attributes attached to the element.  If
5247173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   *        there are no attributes, it shall be an empty
5347173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   *        Attributes object.
5447173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   *
5547173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   * @see org.apache.xalan.processor.StylesheetHandler#startElement
5647173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   * @see org.xml.sax.ContentHandler#startElement
5747173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   * @see org.xml.sax.ContentHandler#endElement
5847173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   * @see org.xml.sax.Attributes
5947173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   */
6047173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner  public void startElement(
6147173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner          StylesheetHandler handler, String uri, String localName, String rawName, Attributes attributes)
6247173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner            throws org.xml.sax.SAXException
6347173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner  {
6447173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner
6547173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner    ElemAttributeSet eat = new ElemAttributeSet();
6647173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner
6747173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner    eat.setLocaterInfo(handler.getLocator());
6847173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner    try
6947173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner    {
7047173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner      eat.setPrefixes(handler.getNamespaceSupport());
7147173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner    }
7247173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner    catch(TransformerException te)
7347173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner    {
7447173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner      throw new org.xml.sax.SAXException(te);
7547173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner    }
7647173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner
7747173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner    eat.setDOMBackPointer(handler.getOriginatingNode());
7847173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner    setPropertiesFromAttributes(handler, rawName, attributes, eat);
7947173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner    handler.getStylesheet().setAttributeSet(eat);
8047173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner
8147173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner    // handler.pushElemTemplateElement(eat);
8247173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner    ElemTemplateElement parent = handler.getElemTemplateElement();
8347173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner
8447173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner    parent.appendChild(eat);
8547173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner    handler.pushElemTemplateElement(eat);
8647173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner  }
8747173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner
8847173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner  /**
8947173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   * Receive notification of the end of an element.
9047173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   *
9147173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   * @param name The element type name.
9247173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   * @param attributes The specified or defaulted attributes.
9347173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   *
9447173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   * @param handler non-null reference to current StylesheetHandler that is constructing the Templates.
9547173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   * @param uri The Namespace URI, or an empty string.
9647173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   * @param localName The local name (without prefix), or empty string if not namespace processing.
9747173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   * @param rawName The qualified name (with prefix).
9847173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner   */
9947173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner  public void endElement(
10047173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner          StylesheetHandler handler, String uri, String localName, String rawName)
10147173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner            throws org.xml.sax.SAXException
10247173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner  {
10347173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner    handler.popElemTemplateElement();
10447173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner  }
10547173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner}
10647173c7d6704f1258b2d85537caa09185f6920c8David 'Digit' Turner