org.attoparser.IProcessingInstructionHandler Maven / Gradle / Ivy
Show all versions of attoparser Show documentation
/*
* =============================================================================
*
* Copyright (c) 2012-2014, The ATTOPARSER team (http://www.attoparser.org)
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* =============================================================================
*/
package org.attoparser;
/**
*
* Interface to be implemented by all handlers capable of receiving events about Processing Instructions.
*
*
* Events in this interface are a part of the {@link IMarkupHandler} interface, the main handling interface in
* AttoParser.
*
*
* @author Daniel Fernández
* @since 2.0.0
* @see org.attoparser.IMarkupHandler
*
*/
public interface IProcessingInstructionHandler {
/**
*
* Called when a Processing Instruction is found.
*
*
* Three [offset, len] pairs are provided for three partitions (outer,
* target and content):
*
*
* <?xls-stylesheet somePar1="a" somePar2="b"?>
* | [TARGET------] [CONTENT----------------] |
* [OUTER-------------------------------------]
*
*
* Note that, although XML Declarations have the same format as processing instructions,
* they are not considered as such and therefore are handled through a different handling
* method.
*
*
* Artifacts are reported using the document buffer directly, and this buffer
* should not be considered to be immutable, so reported structures should be copied if they need
* to be stored (either by copying len chars from the buffer char[] starting
* in offset or by creating a String from it using the same specification).
*
*
* Implementations of this handler should never modify the document buffer.
*
*
* @param buffer the document buffer (not copied)
* @param targetOffset offset for the target partition.
* @param targetLen length of the target partition.
* @param targetLine the line in the original document where the target partition starts.
* @param targetCol the column in the original document where the target partition starts.
* @param contentOffset offset for the content partition.
* @param contentLen length of the content partition.
* @param contentLine the line in the original document where the content partition starts.
* @param contentCol the column in the original document where the content partition starts.
* @param outerOffset offset for the outer partition.
* @param outerLen length of the outer partition.
* @param line the line in the original document where this artifact starts.
* @param col the column in the original document where this artifact starts.
* @throws ParseException if any exceptions occur during handling.
*/
public void handleProcessingInstruction(
final char[] buffer,
final int targetOffset, final int targetLen,
final int targetLine, final int targetCol,
final int contentOffset, final int contentLen,
final int contentLine, final int contentCol,
final int outerOffset, final int outerLen,
final int line, final int col)
throws ParseException;
}