001: /* IXMLValidator.java NanoXML/Java
002: *
003: * $Revision: 1421 $
004: * $Date: 2006-03-12 09:32:32 -0700 (Sun, 12 Mar 2006) $
005: * $Name$
006: *
007: * This file is part of NanoXML 2 for Java.
008: * Copyright (C) 2001 Marc De Scheemaecker, All Rights Reserved.
009: *
010: * This software is provided 'as-is', without any express or implied warranty.
011: * In no event will the authors be held liable for any damages arising from the
012: * use of this software.
013: *
014: * Permission is granted to anyone to use this software for any purpose,
015: * including commercial applications, and to alter it and redistribute it
016: * freely, subject to the following restrictions:
017: *
018: * 1. The origin of this software must not be misrepresented; you must not
019: * claim that you wrote the original software. If you use this software in
020: * a product, an acknowledgment in the product documentation would be
021: * appreciated but is not required.
022: *
023: * 2. Altered source versions must be plainly marked as such, and must not be
024: * misrepresented as being the original software.
025: *
026: * 3. This notice may not be removed or altered from any source distribution.
027: */
028:
029: package net.n3.nanoxml;
030:
031: import java.util.Properties;
032:
033: /**
034: * IXMLValidator processes the DTD and handles entity references.
035: *
036: * @author Marc De Scheemaecker
037: * @version $Name$, $Revision: 1421 $
038: */
039: public interface IXMLValidator {
040:
041: /**
042: * Sets the parameter entity resolver.
043: *
044: * @param resolver the entity resolver.
045: */
046: public void setParameterEntityResolver(IXMLEntityResolver resolver);
047:
048: /**
049: * Returns the parameter entity resolver.
050: *
051: * @return the entity resolver.
052: */
053: public IXMLEntityResolver getParameterEntityResolver();
054:
055: /**
056: * Parses the DTD. The validator object is responsible for reading the full DTD.
057: *
058: * @param publicID the public ID, which may be null.
059: * @param reader the reader to read the DTD from.
060: * @param entityResolver the entity resolver.
061: * @param external true if the DTD is external.
062: *
063: * @throws java.lang.Exception if something went wrong.
064: */
065: public void parseDTD(String publicID, IXMLReader reader,
066: IXMLEntityResolver entityResolver, boolean external)
067: throws Exception;
068:
069: /**
070: * Indicates that an element has been started.
071: *
072: * @param name the name of the element.
073: * @param nsPrefix the prefix used to identify the namespace
074: * @param nsSystemId the system ID associated with the namespace
075: * @param systemId the system ID of the XML data of the element.
076: * @param lineNr the line number in the XML data of the element.
077: *
078: * @throws java.lang.Exception if the element could not be validated.
079: */
080: public void elementStarted(String name, String nsPrefix,
081: String nsSystemId, String systemId, int lineNr)
082: throws Exception;
083:
084: /**
085: * Indicates that the current element has ended.
086: *
087: * @param name the name of the element.
088: * @param nsPrefix the prefix used to identify the namespace
089: * @param nsSystemId the system ID associated with the namespace
090: * @param systemId the system ID of the XML data of the element.
091: * @param lineNr the line number in the XML data of the element.
092: *
093: * @throws java.lang.Exception if the element could not be validated.
094: */
095: public void elementEnded(String name, String nsPrefix,
096: String nsSystemId, String systemId, int lineNr)
097: throws Exception;
098:
099: /**
100: * Indicates that an attribute has been added to the current element.
101: *
102: * @param key the name of the attribute.
103: * @param nsPrefix the prefix used to identify the namespace
104: * @param nsSystemId the system ID associated with the namespace
105: * @param value the value of the attribute.
106: * @param systemId the system ID of the XML data of the element.
107: * @param lineNr the line number in the XML data of the element.
108: *
109: * @throws java.lang.Exception if the attribute could not be validated.
110: */
111: public void attributeAdded(String key, String nsPrefix,
112: String nsSystemId, String value, String systemId, int lineNr)
113: throws Exception;
114:
115: /**
116: * This method is called when the attributes of an XML element have been processed. If there are
117: * attributes with a default value which have not been specified yet, they have to be put into
118: * <I>extraAttributes</I>.
119: *
120: * @param name the name of the element.
121: * @param nsPrefix the prefix used to identify the namespace
122: * @param nsSystemId the system ID associated with the namespace
123: * @param extraAttributes where to put extra attributes.
124: * @param systemId the system ID of the XML data of the element.
125: * @param lineNr the line number in the XML data of the element.
126: *
127: * @throws java.lang.Exception if the element could not be validated.
128: */
129: public void elementAttributesProcessed(String name,
130: String nsPrefix, String nsSystemId,
131: Properties extraAttributes, String systemId, int lineNr)
132: throws Exception;
133:
134: /**
135: * Indicates that a new #PCDATA element has been encountered.
136: *
137: * @param systemId the system ID of the XML data of the element.
138: * @param lineNr the line number in the XML data of the element.
139: *
140: * @throws java.lang.Exception if the element could not be validated.
141: */
142: public void PCDataAdded(String systemId, int lineNr)
143: throws Exception;
144:
145: }
|