001: /*
002: * This file is part of the WfMOpen project.
003: * Copyright (C) 2001-2003 Danet GmbH (www.danet.de), GS-AN.
004: * All rights reserved.
005: *
006: * This program is free software; you can redistribute it and/or modify
007: * it under the terms of the GNU General Public License as published by
008: * the Free Software Foundation; either version 2 of the License, or
009: * (at your option) any later version.
010: *
011: * This program is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
014: * GNU General Public License for more details.
015: *
016: * You should have received a copy of the GNU General Public License
017: * along with this program; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
019: *
020: * $Id: XmlnsUrisPatcher.java,v 1.2 2006/09/29 12:32:11 drmlipp Exp $
021: *
022: * $Log: XmlnsUrisPatcher.java,v $
023: * Revision 1.2 2006/09/29 12:32:11 drmlipp
024: * Consistently using WfMOpen as projct name now.
025: *
026: * Revision 1.1.1.1 2003/06/30 20:05:12 drmlipp
027: * Initial import
028: *
029: * Revision 1.2 2003/06/27 08:51:46 lipp
030: * Fixed copyright/license information.
031: *
032: * Revision 1.1 2003/05/01 17:53:07 lipp
033: * New helper
034: *
035: */
036: package de.danet.an.util.sax;
037:
038: import org.xml.sax.Attributes;
039: import org.xml.sax.SAXException;
040: import org.xml.sax.XMLReader;
041: import org.xml.sax.helpers.AttributesImpl;
042: import org.xml.sax.helpers.XMLFilterImpl;
043:
044: import de.danet.an.util.XMLUtil;
045:
046: /**
047: * This class provides a simple filter that can be used to convert the
048: * SAX events reported for attributes with qualified name "xmlns" or
049: * prefix "xmlns:" to the later XML namespaces specification. This is
050: * intended to be used in conjunction with parsers that do not
051: * support the "xmlns-uris" feature.
052: *
053: * @author <a href="mailto:lipp@danet.de">Michael Lipp</a>
054: * @version $Revision: 1.2 $
055: */
056:
057: public class XmlnsUrisPatcher extends XMLFilterImpl {
058:
059: /**
060: * Creates an instance of <code>XmlnsUrisPatcher</code>
061: * with all attributes initialized to default values.
062: */
063: public XmlnsUrisPatcher() {
064: }
065:
066: /**
067: * Creates an instance of <code>XmlnsUrisPatcher</code>
068: * with the specified parent.
069: * @param parent the parent XMLReader.
070: */
071: public XmlnsUrisPatcher(XMLReader parent) {
072: super (parent);
073: }
074:
075: /**
076: * Receive notification of the beginning of an element.
077: *
078: * @param namespaceURI The Namespace URI, or the empty string if the
079: * element has no Namespace URI or if Namespace
080: * processing is not being performed.
081: * @param localName The local name (without prefix), or the
082: * empty string if Namespace processing is not being
083: * performed.
084: * @param qName The qualified name (with prefix), or the
085: * empty string if qualified names are not available.
086: * @param atts The attributes attached to the element. If
087: * there are no attributes, it shall be an empty
088: * Attributes object.
089: * @throws SAXException Any SAX exception, possibly
090: * wrapping another exception.
091: * @see #endElement
092: * @see org.xml.sax.Attributes
093: */
094: public void startElement(String namespaceURI, String localName,
095: String qName, Attributes atts) throws SAXException {
096: AttributesImpl a = new AttributesImpl(atts);
097: for (int i = 0; i < a.getLength(); i++) {
098: String qname = a.getQName(i);
099: if (qname.equals("xmlns") || qname.startsWith("xmlns:")) {
100: a.setURI(i, XMLUtil.XMLNS_NS);
101: }
102: }
103: super.startElement(namespaceURI, localName, qName, a);
104: }
105:
106: }
|