001: package net.sf.saxon.jdom;
002:
003: import net.sf.saxon.Configuration;
004: import net.sf.saxon.om.DocumentInfo;
005: import net.sf.saxon.om.NamePool;
006: import net.sf.saxon.om.NodeInfo;
007: import net.sf.saxon.type.Type;
008: import org.jdom.Document;
009:
010: /**
011: * The root node of an XPath tree. (Or equivalently, the tree itself).<P>
012: * This class should have been named Root; it is used not only for the root of a document,
013: * but also for the root of a result tree fragment, which is not constrained to contain a
014: * single top-level element.
015: * @author Michael H. Kay
016: */
017:
018: public class DocumentWrapper extends NodeWrapper implements
019: DocumentInfo {
020:
021: protected Configuration config;
022: protected String baseURI;
023: protected int documentNumber;
024:
025: /**
026: * Create a Saxon wrapper for a JDOM document
027: * @param doc The JDOM document
028: * @param baseURI The base URI for all the nodes in the document
029: */
030:
031: public DocumentWrapper(Document doc, String baseURI,
032: Configuration config) {
033: super (doc, null, 0);
034: node = doc;
035: nodeKind = Type.DOCUMENT;
036: this .baseURI = baseURI;
037: docWrapper = this ;
038: setConfiguration(config);
039: }
040:
041: /**
042: * Wrap a node in the JDOM document.
043: * @param node The node to be wrapped. This must be a node in the same document
044: * (the system does not check for this).
045: * @return the wrapping NodeInfo object
046: */
047:
048: public NodeWrapper wrap(Object node) {
049: if (node == this .node) {
050: return this ;
051: }
052: return makeWrapper(node, this );
053: }
054:
055: /**
056: * Set the configuration (containing the name pool used for all names in this document)
057: */
058:
059: public void setConfiguration(Configuration config) {
060: this .config = config;
061: documentNumber = config.getDocumentNumberAllocator()
062: .allocateDocumentNumber();
063: }
064:
065: /**
066: * Get the configuration previously set using setConfiguration
067: * (or the default configuraton allocated automatically)
068: */
069:
070: public Configuration getConfiguration() {
071: return config;
072: }
073:
074: /**
075: * Get the name pool used for the names in this document
076: */
077:
078: public NamePool getNamePool() {
079: return config.getNamePool();
080: }
081:
082: /**
083: * Get the unique document number
084: */
085:
086: public int getDocumentNumber() {
087: return documentNumber;
088: }
089:
090: /**
091: * Get the element with a given ID, if any
092: * @param id the required ID value
093: * @return null: JDOM does not provide any information about attribute types.
094: */
095:
096: public NodeInfo selectID(String id) {
097: return null;
098: }
099:
100: /**
101: * Get the unparsed entity with a given name
102: * @param name the name of the entity
103: * @return null: JDOM does not provide access to unparsed entities
104: */
105:
106: public String[] getUnparsedEntity(String name) {
107: return null;
108: }
109:
110: }
111:
112: //
113: // The contents of this file are subject to the Mozilla Public License Version 1.0 (the "License");
114: // you may not use this file except in compliance with the License. You may obtain a copy of the
115: // License at http://www.mozilla.org/MPL/
116: //
117: // Software distributed under the License is distributed on an "AS IS" basis,
118: // WITHOUT WARRANTY OF ANY KIND, either express or implied.
119: // See the License for the specific language governing rights and limitations under the License.
120: //
121: // The Original Code is: all this file.
122: //
123: // The Initial Developer of the Original Code is Michael Kay
124: //
125: // Portions created by (your name) are Copyright (C) (your legal entity). All Rights Reserved.
126: //
127: // Contributor(s): none.
128: //
|