001: package net.sf.saxon.tree;
002:
003: import net.sf.saxon.event.Receiver;
004: import net.sf.saxon.trans.XPathException;
005: import net.sf.saxon.type.Type;
006:
007: /**
008: * ProcInstImpl is an implementation of ProcInstInfo used by the Propagator to construct
009: * its trees.
010: * @author Michael H. Kay
011: */
012:
013: class ProcInstImpl extends NodeImpl {
014:
015: String content;
016: int nameCode;
017: String systemId;
018: int lineNumber = -1;
019:
020: public ProcInstImpl(int nameCode, String content) {
021: this .nameCode = nameCode;
022: this .content = content;
023: }
024:
025: /**
026: * Get the nameCode of the node. This is used to locate the name in the NamePool
027: */
028:
029: public int getNameCode() {
030: return nameCode;
031: }
032:
033: public String getStringValue() {
034: return content;
035: }
036:
037: public final int getNodeKind() {
038: return Type.PROCESSING_INSTRUCTION;
039: }
040:
041: /**
042: * Set the system ID and line number
043: */
044:
045: public void setLocation(String uri, int lineNumber) {
046: this .systemId = uri;
047: this .lineNumber = lineNumber;
048: }
049:
050: /**
051: * Get the system ID for the entity containing this node.
052: */
053:
054: public String getSystemId() {
055: return systemId;
056: }
057:
058: /**
059: * Get the line number of the node within its source entity
060: */
061:
062: public int getLineNumber() {
063: return lineNumber;
064: }
065:
066: /**
067: * Copy this node to a given outputter
068: */
069:
070: public void copy(Receiver out, int whichNamespaces,
071: boolean copyAnnotations, int locationId)
072: throws XPathException {
073: out.processingInstruction(getLocalPart(), content, locationId,
074: 0);
075: }
076:
077: // DOM methods
078:
079: /**
080: * The target of this processing instruction. XML defines this as being
081: * the first token following the markup that begins the processing
082: * instruction.
083: */
084:
085: public String getTarget() {
086: return getLocalPart();
087: }
088:
089: /**
090: * The content of this processing instruction. This is from the first non
091: * white space character after the target to the character immediately
092: * preceding the <code>?></code> .
093: */
094:
095: public String getData() {
096: return content;
097: }
098:
099: }
100:
101: //
102: // The contents of this file are subject to the Mozilla Public License Version 1.0 (the "License");
103: // you may not use this file except in compliance with the License. You may obtain a copy of the
104: // License at http://www.mozilla.org/MPL/
105: //
106: // Software distributed under the License is distributed on an "AS IS" basis,
107: // WITHOUT WARRANTY OF ANY KIND, either express or implied.
108: // See the License for the specific language governing rights and limitations under the License.
109: //
110: // The Original Code is: all this file.
111: //
112: // The Initial Developer of the Original Code is Michael H. Kay.
113: //
114: // Portions created by (your name) are Copyright (C) (your legal entity). All Rights Reserved.
115: //
116: // Contributor(s): none.
117: //
|