001 /*
002 * Copyright (c) 2005 Marko Karppinen & Co. LLC
003 *
004 * Permission is hereby granted, free of charge, to any person obtaining a
005 * copy of this software and associated documentation files (the "Software"),
006 * to deal in the Software without restriction, including without limitation
007 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
008 * and/or sell copies of the Software, and to permit persons to whom the
009 * Software is furnished to do so, subject to the following conditions:
010 *
011 * The above copyright notice and this permission notice shall be included in
012 * all copies or substantial portions of the Software.
013 *
014 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
015 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
016 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
017 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
018 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
019 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
020 * DEALINGS IN THE SOFTWARE.
021 */
022
023 package fi.karppinen.xml;
024
025 import gnu.xml.pipeline.EventConsumer;
026 import gnu.xml.pipeline.EventFilter;
027
028 import org.xml.sax.Attributes;
029 import org.xml.sax.SAXException;
030
031 /**
032 * Adds an <code>action</code> attribute to XHTML 1.x <code>form</code> elements.
033 * The <code>form</code> elements must not have an <code>action</code> attribute
034 * to begin with.
035 *
036 * @version $Id: FormActionInjector.java,v 1.1 2006/10/30 19:57:09 hsivonen Exp $
037 * @author hsivonen
038 */
039 public class FormActionInjector extends EventFilter {
040
041 private String action;
042
043 /**
044 *
045 */
046 public FormActionInjector(String action) {
047 super();
048 this.action = action;
049 setContentHandler(this);
050 }
051
052 /**
053 * @param consumer
054 */
055 public FormActionInjector(String action, EventConsumer consumer) {
056 super(consumer);
057 this.action = action;
058 setContentHandler(this);
059 }
060
061 /**
062 * @see org.xml.sax.ContentHandler#startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)
063 */
064 public void startElement(String uri, String localName, String qName,
065 Attributes atts) throws SAXException {
066 if("form".equals(localName) && "http://www.w3.org/1999/xhtml".equals(uri)) {
067 AttributesImpl attributes = new AttributesImpl(atts);
068 attributes.addAttribute("action", action);
069 super.startElement(uri, localName, qName, attributes);
070 } else {
071 super.startElement(uri, localName, qName, atts);
072 }
073 }
074
075
076 }