org.odftoolkit.odfdom.pkg
Class OdfFileDom

java.lang.Object
  extended by org.apache.xerces.dom.NodeImpl
      extended by org.apache.xerces.dom.ChildNode
          extended by org.apache.xerces.dom.ParentNode
              extended by org.apache.xerces.dom.CoreDocumentImpl
                  extended by org.apache.xerces.dom.DocumentImpl
                      extended by org.odftoolkit.odfdom.pkg.OdfFileDom
All Implemented Interfaces:
Serializable, Cloneable, NamespaceContext, Document, DocumentEvent, EventTarget, Node, NodeList, DocumentRange, DocumentTraversal
Direct Known Subclasses:
OdfContentDom, OdfManifestDom, OdfMetaDom, OdfSettingsDom, OdfStylesDom

public class OdfFileDom
extends DocumentImpl
implements NamespaceContext

The DOM representation of an XML file within the ODF document.

See Also:
Serialized Form

Field Summary
protected  Map<Node,com.hp.hpl.jena.rdf.model.Model> inCententMetadataCache
          The cache of in content metadata: key: a Node in the dom ; value: the Jena RDF model of triples of the Node
protected  Map<String,Set<String>> mDuplicatePrefixesByUri
          Contains only the duplicate prefix.
protected  OdfPackage mPackage
           
protected  OdfPackageDocument mPackageDocument
           
protected  String mPackagePath
           
protected  Map<String,String> mPrefixByUri
           
protected  Map<String,String> mUriByPrefix
           
protected  XPath mXPath
           
protected  JenaSink sink
           
 
Fields inherited from class org.apache.xerces.dom.DocumentImpl
eventListeners, iterators, mutationEvents, ranges
 
Fields inherited from class org.apache.xerces.dom.CoreDocumentImpl
actualEncoding, allowGrammarAccess, changes, docElement, docType, encoding, errorChecking, fDocumentURI, identifiers, standalone, userData, version, xmlVersionChanged
 
Fields inherited from class org.apache.xerces.dom.ParentNode
firstChild, fNodeListCache, ownerDocument
 
Fields inherited from class org.apache.xerces.dom.ChildNode
nextSibling, previousSibling
 
Fields inherited from class org.apache.xerces.dom.NodeImpl
DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_IS_CONTAINED, DOCUMENT_POSITION_PRECEDING, ELEMENT_DEFINITION_NODE, FIRSTCHILD, flags, HASSTRING, ID, IGNORABLEWS, NORMALIZED, OWNED, ownerNode, READONLY, SPECIFIED, SYNCCHILDREN, SYNCDATA, TREE_POSITION_ANCESTOR, TREE_POSITION_DESCENDANT, TREE_POSITION_DISCONNECTED, TREE_POSITION_EQUIVALENT, TREE_POSITION_FOLLOWING, TREE_POSITION_PRECEDING, TREE_POSITION_SAME_NODE
 
Fields inherited from interface org.w3c.dom.Node
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
 
Constructor Summary
protected OdfFileDom(OdfPackageDocument packageDocument, String packagePath)
          Creates the DOM representation of an XML file of an Odf document.
protected OdfFileDom(OdfPackage pkg, String packagePath)
          Creates the DOM representation of an XML file of an Odf document.
 
Method Summary
 OdfAttribute createAttribute(String name)
          Create the ODF attribute with its name
 OdfAttribute createAttributeNS(OdfName name)
          Create the ODF attribute with ODF name
 OdfAttribute createAttributeNS(String nsuri, String qname)
          Create the ODF attribute with namespace uri and qname
 OdfElement createElement(String name)
          Create ODF element with namespace uri and qname
 OdfElement createElementNS(OdfName name)
          Create ODF element with ODF name
 OdfElement createElementNS(String nsuri, String qname)
          Create ODF element with namespace uri and qname
 com.hp.hpl.jena.rdf.model.Model getBookmarkRDFMetadata()
           
 OdfPackageDocument getDocument()
          Retrieves the OdfPackageDocument of the XML file.
 Map<Node,com.hp.hpl.jena.rdf.model.Model> getInContentMetadataCache()
          Get in-content metadata cache model
 String getNamespaceURI(String prefix)
          Get Namespace URI bound to a prefix in the current scope (the XML file).
 String getPackagePath()
          Retrieves the String of Package Path
 String getPrefix(String namespaceURI)
          Get prefix bound to Namespace URI in the current scope (the XML file).
 Iterator<String> getPrefixes(String namespaceURI)
          Get all prefixes bound to a Namespace URI in the current scope.
 OdfElement getRootElement()
          Retrieves the ODF root element.
 JenaSink getSink()
          The end users needn't to care of this method, which is used by BookmarkRDFMetadataExtractor
 XPath getXPath()
          Create an XPath instance to select one or more nodes from an ODF document.
protected  void initialize()
           
static OdfFileDom newFileDom(OdfPackageDocument packageDocument, String packagePath)
           
static OdfFileDom newFileDom(OdfPackage pkg, String packagePath)
           
<T extends OdfElement>
T
newOdfElement(Class<T> clazz)
           
 OdfNamespace setNamespace(NamespaceName name)
          Adds a new Namespace to the DOM.
 OdfNamespace setNamespace(String prefix, String uri)
          Adds a new Namespace to the DOM.
 String toString()
           
 void updateInContentMetadataCache(Node node)
          Update the in content metadata of the node.
 
Methods inherited from class org.apache.xerces.dom.DocumentImpl
addEventListener, cloneNode, copyEventListeners, createEvent, createNodeIterator, createNodeIterator, createRange, createTreeWalker, createTreeWalker, dispatchAggregateEvents, dispatchAggregateEvents, dispatchEvent, dispatchEventToSubtree, dispatchingEventToSubtree, getEventListeners, getImplementation, removeEventListener, saveEnclosingAttr, setEventListeners
 
Methods inherited from class org.apache.xerces.dom.CoreDocumentImpl
abort, adoptNode, callUserDataHandlers, changed, changes, checkDOMNSErr, checkNamespaceWF, checkQName, clearIdentifiers, clone, cloneNode, createAttributeNS, createCDATASection, createComment, createDocumentFragment, createDocumentType, createElementDefinition, createElementNS, createEntity, createEntityReference, createNotation, createProcessingInstruction, createTextNode, getAsync, getBaseURI, getDoctype, getDocumentElement, getDocumentURI, getDomConfig, getElementById, getElementsByTagName, getElementsByTagNameNS, getEncoding, getErrorChecking, getFeature, getIdentifier, getIdentifiers, getInputEncoding, getNodeName, getNodeNumber, getNodeNumber, getNodeType, getOwnerDocument, getStandalone, getStrictErrorChecking, getTextContent, getUserData, getUserData, getUserDataRecord, getVersion, getXmlEncoding, getXmlStandalone, getXmlVersion, importNode, insertBefore, isKidOK, isValidQName, isXMLName, load, loadXML, normalizeDocument, putIdentifier, removeChild, removeIdentifier, renameNode, replaceChild, saveXML, setAsync, setDocumentURI, setEncoding, setErrorChecking, setInputEncoding, setStandalone, setStrictErrorChecking, setTextContent, setUserData, setUserData, setVersion, setXmlEncoding, setXmlStandalone, setXmlVersion, undeferChildren
 
Methods inherited from class org.apache.xerces.dom.ParentNode
getChildNodes, getChildNodesUnoptimized, getFirstChild, getLastChild, getLength, hasChildNodes, isEqualNode, item, normalize, setOwnerDocument, setReadOnly, synchronizeChildren
 
Methods inherited from class org.apache.xerces.dom.ChildNode
getNextSibling, getParentNode, getPreviousSibling
 
Methods inherited from class org.apache.xerces.dom.NodeImpl
addEventListener, appendChild, compareDocumentPosition, compareTreePosition, dispatchEvent, getAttributes, getContainer, getLocalName, getNamespaceURI, getNodeValue, getPrefix, getReadOnly, getUserData, getUserData, getUserDataRecord, hasAttributes, isDefaultNamespace, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, needsSyncChildren, removeEventListener, setNodeValue, setPrefix, setUserData, setUserData, synchronizeData
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.w3c.dom.Node
appendChild, compareDocumentPosition, getAttributes, getChildNodes, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeValue, getParentNode, getPrefix, getPreviousSibling, getUserData, hasAttributes, hasChildNodes, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, setNodeValue, setPrefix, setUserData
 

Field Detail

mPackagePath

protected String mPackagePath

mPackageDocument

protected OdfPackageDocument mPackageDocument

mPackage

protected OdfPackage mPackage

mXPath

protected XPath mXPath

mUriByPrefix

protected Map<String,String> mUriByPrefix

mPrefixByUri

protected Map<String,String> mPrefixByUri

mDuplicatePrefixesByUri

protected Map<String,Set<String>> mDuplicatePrefixesByUri
Contains only the duplicate prefix. The primary hold by mPrefixByUri still have to be added


inCententMetadataCache

protected Map<Node,com.hp.hpl.jena.rdf.model.Model> inCententMetadataCache
The cache of in content metadata: key: a Node in the dom ; value: the Jena RDF model of triples of the Node


sink

protected JenaSink sink
Constructor Detail

OdfFileDom

protected OdfFileDom(OdfPackageDocument packageDocument,
                     String packagePath)
Creates the DOM representation of an XML file of an Odf document.

Parameters:
packageDocument - the document the XML files belongs to
packagePath - the internal package path to the XML file

OdfFileDom

protected OdfFileDom(OdfPackage pkg,
                     String packagePath)
Creates the DOM representation of an XML file of an Odf document.

Parameters:
pkg - the package the XML files belongs to
packagePath - the internal package path to the XML file
Method Detail

newFileDom

public static OdfFileDom newFileDom(OdfPackageDocument packageDocument,
                                    String packagePath)

newFileDom

public static OdfFileDom newFileDom(OdfPackage pkg,
                                    String packagePath)

initialize

protected void initialize()

getDocument

public OdfPackageDocument getDocument()
Retrieves the OdfPackageDocument of the XML file. A package document is usually represented as a directory with a mediatype.

Returns:
The document holding the XML file.

getPackagePath

public String getPackagePath()
Retrieves the String of Package Path

Returns:
The path of the XML file relative to the package root

getRootElement

public OdfElement getRootElement()
Retrieves the ODF root element.

Returns:
The OdfElement being the root of the document.

createElement

public OdfElement createElement(String name)
                         throws DOMException
Create ODF element with namespace uri and qname

Specified by:
createElement in interface Document
Overrides:
createElement in class CoreDocumentImpl
Parameters:
name - The element name
Throws:
DOMException

createElementNS

public OdfElement createElementNS(String nsuri,
                                  String qname)
                           throws DOMException
Create ODF element with namespace uri and qname

Specified by:
createElementNS in interface Document
Overrides:
createElementNS in class CoreDocumentImpl
Parameters:
nsuri - The namespace uri
qname - The element qname
Throws:
DOMException

createElementNS

public OdfElement createElementNS(OdfName name)
                           throws DOMException
Create ODF element with ODF name

Parameters:
name - The OdfName
Returns:
The OdfElement
Throws:
DOMException

createAttribute

public OdfAttribute createAttribute(String name)
                             throws DOMException
Create the ODF attribute with its name

Specified by:
createAttribute in interface Document
Overrides:
createAttribute in class CoreDocumentImpl
Parameters:
name - the attribute qname
Returns:
The OdfAttribute
Throws:
DOMException

createAttributeNS

public OdfAttribute createAttributeNS(String nsuri,
                                      String qname)
                               throws DOMException
Create the ODF attribute with namespace uri and qname

Specified by:
createAttributeNS in interface Document
Overrides:
createAttributeNS in class CoreDocumentImpl
Parameters:
nsuri - The namespace uri
qname - the attribute qname
Returns:
The OdfAttribute
Throws:
DOMException

createAttributeNS

public OdfAttribute createAttributeNS(OdfName name)
                               throws DOMException
Create the ODF attribute with ODF name

Parameters:
name - The OdfName
Returns:
The OdfAttribute
Throws:
DOMException

newOdfElement

public <T extends OdfElement> T newOdfElement(Class<T> clazz)

toString

public String toString()
Overrides:
toString in class NodeImpl

getXPath

public XPath getXPath()
Create an XPath instance to select one or more nodes from an ODF document. Therefore the namespace context is set to the OdfNamespace

Returns:
an XPath instance with namespace context set to include the standard ODFDOM prefixes.

getNamespaceURI

public String getNamespaceURI(String prefix)

Get Namespace URI bound to a prefix in the current scope (the XML file).

When requesting a Namespace URI by prefix, the following table describes the returned Namespace URI value for all possible prefix values:

getNamespaceURI(prefix) return value for specified prefixes
prefix parameter Namespace URI return value
DEFAULT_NS_PREFIX ("") default Namespace URI in the current scope or XMLConstants.NULL_NS_URI("") when there is no default Namespace URI in the current scope
bound prefix Namespace URI bound to prefix in current scope
unbound prefix XMLConstants.NULL_NS_URI("")
XMLConstants.XML_NS_PREFIX ("xml") XMLConstants.XML_NS_URI ("http://www.w3.org/XML/1998/namespace")
XMLConstants.XMLNS_ATTRIBUTE ("xmlns") XMLConstants.XMLNS_ATTRIBUTE_NS_URI ("http://www.w3.org/2000/xmlns/")
null IllegalArgumentException is thrown

Specified by:
getNamespaceURI in interface NamespaceContext
Parameters:
prefix - prefix to look up
Returns:
Namespace URI bound to prefix in the current scope
Throws:
IllegalArgumentException - When prefix is null

getPrefix

public String getPrefix(String namespaceURI)

Get prefix bound to Namespace URI in the current scope (the XML file).

Multiple prefixes bound to Namespace URI will be normalized to the first prefix defined.

When requesting a prefix by Namespace URI, the following table describes the returned prefix value for all Namespace URI values:

getPrefix(namespaceURI) return value for specified Namespace URIs
Namespace URI parameter prefix value returned
<default Namespace URI> XMLConstants.DEFAULT_NS_PREFIX ("")
bound Namespace URI prefix bound to Namespace URI in the current scope, if multiple prefixes are bound to the Namespace URI in the current scope, a single arbitrary prefix, whose choice is implementation dependent, is returned
unbound Namespace URI null
XMLConstants.XML_NS_URI ("http://www.w3.org/XML/1998/namespace") XMLConstants.XML_NS_PREFIX ("xml")
XMLConstants.XMLNS_ATTRIBUTE_NS_URI ("http://www.w3.org/2000/xmlns/") XMLConstants.XMLNS_ATTRIBUTE ("xmlns")
null IllegalArgumentException is thrown

Specified by:
getPrefix in interface NamespaceContext
Parameters:
namespaceURI - URI of Namespace to lookup
Returns:
prefix bound to Namespace URI in current context
Throws:
IllegalArgumentException - When namespaceURI is null

getPrefixes

public Iterator<String> getPrefixes(String namespaceURI)

Get all prefixes bound to a Namespace URI in the current scope. (the XML file)

NOTE: Multiple prefixes bound to a similar Namespace URI will be normalized to the first prefix defined. Still the namespace attributes exist in the XML as inner value prefixes might be used.

The Iterator is not modifiable. e.g. the remove() method will throw UnsupportedOperationException.

When requesting prefixes by Namespace URI, the following table describes the returned prefixes value for all Namespace URI values:

getPrefixes(namespaceURI) return value for specified Namespace URIs
Namespace URI parameter prefixes value returned
bound Namespace URI, including the <default Namespace URI> Iterator over prefixes bound to Namespace URI in the current scope in an arbitrary, implementation dependent, order
unbound Namespace URI empty Iterator
XMLConstants.XML_NS_URI ("http://www.w3.org/XML/1998/namespace") Iterator with one element set to XMLConstants.XML_NS_PREFIX ("xml")
XMLConstants.XMLNS_ATTRIBUTE_NS_URI ("http://www.w3.org/2000/xmlns/") Iterator with one element set to XMLConstants.XMLNS_ATTRIBUTE ("xmlns")
null IllegalArgumentException is thrown

Specified by:
getPrefixes in interface NamespaceContext
Parameters:
namespaceURI - URI of Namespace to lookup
Returns:
Iterator for all prefixes bound to the Namespace URI in the current scope
Throws:
IllegalArgumentException - When namespaceURI is null

setNamespace

public OdfNamespace setNamespace(String prefix,
                                 String uri)
Adds a new Namespace to the DOM. Making the prefix usable with JDK XPath. All namespace attributes will be written to the root element during later serialization of the DOM by the OdfPackage.

Parameters:
prefix - of the namespace to be set to this DOM
uri - of the namespace to be set to this DOM
Returns:
the namespace that was set. If an URI was registered before to the DOM, the previous prefix will be taken. In case of a given prefix that was already registered, but related to a new URI, the prefix will be adapted. The new prefix receives the suffix '__' plus integer, e.g. "__1" for the first duplicate and "__2" for the second.

setNamespace

public OdfNamespace setNamespace(NamespaceName name)
Adds a new Namespace to the DOM. Making the prefix usable with JDK XPath. All namespace attributes will be written to the root element during later serialization of the DOM by the OdfPackage.

Parameters:
name - the namespace to be set
Returns:
the namespace that was set. If an URI was registered before to the DOM, the previous prefix will be taken. In case of a given prefix that was already registered, but related to a new URI, the prefix will be adapted. The new prefix receives the suffix '__' plus integer, e.g. "__1" for the first duplicate and "__2" for the second.

getInContentMetadataCache

public Map<Node,com.hp.hpl.jena.rdf.model.Model> getInContentMetadataCache()
Get in-content metadata cache model

Returns:
in-content metadata cache model

updateInContentMetadataCache

public void updateInContentMetadataCache(Node node)
Update the in content metadata of the node. It should be called whenever the xhtml:xxx attrbutes values of the node are changed.

Parameters:
the - node, whose in content metadata will be updated

getBookmarkRDFMetadata

public com.hp.hpl.jena.rdf.model.Model getBookmarkRDFMetadata()
Returns:
the RDF metadata of all the bookmarks within the dom

getSink

public JenaSink getSink()
The end users needn't to care of this method, which is used by BookmarkRDFMetadataExtractor

Returns:
the JenaSink


Copyright © 2008-2017 The Apache Software Foundation. All Rights Reserved.