Class: VCDOM::MiniDOM::DOMImplementation

Inherits:
Object
  • Object
show all
Defined in:
lib/vcdom/minidom/dom_implementation.rb

Constant Summary collapse

@@instance =
nil

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeDOMImplementation

# getFeature introduced in DOM Level 3

#   
#   This method returns a specialized object which implements the specialized 
#   APIs of the specified feature and version, as specified in DOM Features. 
#   The specialized object may also be obtained by using binding-specific 
#   casting methods but is not necessarily expected to, as discussed in Mixed 
#   DOM Implementations. 
#   This method also allow the implementation to provide specialized objects 
#   which do not support the DOMImplementation interface.
#   
#   Parameters
#     feature of type DOMString
#       The name of the feature requested. 
#       Note that any plus sign "+" prepended to the name of the feature will 
#       be ignored since it is not significant in the context of this method.
#     version of type DOMString
#       This is the version number of the feature to test.
#   Return Value
#     DOMObject
#       Returns an object which implements the specialized APIs of the specified 
#       feature and version, if any, or null if there is no object which implements 
#       interfaces associated with that feature. 
#       If the DOMObject returned by this method implements the DOMImplementation 
#       interface, it must delegate to the primary core DOMImplementation and not 
#       return results inconsistent with the primary core DOMImplementation such 
#       as hasFeature, getFeature, etc.
#   No Exceptions

# hasFeature
#   
#   Test if the DOM implementation implements a specific feature and version, 
#   as specified in DOM Features.
#   
#   Parameters
#     feature of type DOMString
#       The name of the feature to test.
#     version of type DOMString
#       This is the version number of the feature to test.
#   Return Value
#     boolean
#       true if the feature is implemented in the specified version, false otherwise.
#   No Exceptions


195
196
197
198
199
200
201
202
# File 'lib/vcdom/minidom/dom_implementation.rb', line 195

def initialize()
  if ! @@instance.nil? then
    raise "既にインスタンス化されています"
  end
  @@instance = self
  @mini_parser     = MiniParser.new()
  @mini_serializer = MiniSerializer.new()
end

Class Method Details

.get_instanceObject



204
205
206
207
208
209
210
# File 'lib/vcdom/minidom/dom_implementation.rb', line 204

def self.get_instance()
  if @@instance.nil? then
    return self.new()
  else
    return @@instance
  end
end

Instance Method Details

#create_document(namespace_uri, qualified_name, doctype = nil) ⇒ Object

createDocument introduced in DOM Level 2

Creates a DOM Document object of the specified type with its document element.
Note that based on the DocumentType given to create the document, 
the implementation may instantiate specialized Document objects that support 
additional features than the "Core", such as "HTML" [DOM Level 2 HTML]. 
On the other hand, setting the DocumentType after the document was 
created makes this very unlikely to happen. 
Alternatively, specialized Document creation methods, such as createHTMLDocument
[DOM Level 2 HTML], can be used to obtain specific types of Document objects.

Parameters
  namespaceURI of type DOMString
    The namespace URI of the document element to create or null.
  qualifiedName of type DOMString
    The qualified name of the document element to be created or null.
  doctype of type DocumentType
    The type of document to be created or null.
    When doctype is not null, its Node.ownerDocument attribute is set to 
    the document being created.
Return Value
  Document
    A new Document object with its document element. 
    If the NamespaceURI, qualifiedName, and doctype are null, the returned 
    Document is empty with no document element.
Exceptions
  DOMException
    INVALID_CHARACTER_ERR: Raised if the specified qualified name is not an 
              XML name according to [XML 1.0].
    NAMESPACE_ERR: Raised if the qualifiedName is malformed, if the 
              qualifiedName has a prefix and the namespaceURI is null, 
              or if the qualifiedName is null and the namespaceURI is 
              different from null, or if the qualifiedName has a prefix 
              that is "xml" and the namespaceURI is different from 
              "http://www.w3.org/XML/1998/namespace" [XML Namespaces], 
              or if the DOM implementation does not support the "XML" feature 
              but a non-null namespace URI was provided, since namespaces were 
              defined by XML.
    WRONG_DOCUMENT_ERR: Raised if doctype has already been used with a different 
              document or was created from a different implementation.
    NOT_SUPPORTED_ERR: May be raised if the implementation does not support 
              the feature "XML" and the language exposed through the Document 
              does not support XML Namespaces (such as [HTML 4.01]).


97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
# File 'lib/vcdom/minidom/dom_implementation.rb', line 97

def create_document( namespace_uri, qualified_name, doctype = nil )
  # 第 3 引数が nil でなければエラー
  if ! doctype.nil? then
    raise TypeError.new( 'This DOM implementation does not support a Doctype, so the third argument must be null.' )
  end
  doc = Document.new()
  if qualified_name.nil? and ! namespace_uri.nil? then
    # the qualified name is null, but namespace URI is different from null
    raise DOMException.new( DOMException::NAMESPACE_ERR, 
            'The qualified name is null, but namespace URI is different from null.' )
  end
  if ! qualified_name.nil? then
    doc.append_child( doc.create_element_ns( namespace_uri, qualified_name ) )
  end
  #doc._set_document_type( doctype )
  #doc._set_document_element( doc.create_element_ns( namespace_uri, qualified_name ) )
  # doctype の ownerDocument を設定
  #aDoctype._setOwnerDocument( doc ) if ( aDoctype != nil )
  return doc
end

#mini_parserObject



45
46
47
# File 'lib/vcdom/minidom/dom_implementation.rb', line 45

def mini_parser
  return @mini_parser
end

#mini_serializerObject



48
49
50
# File 'lib/vcdom/minidom/dom_implementation.rb', line 48

def mini_serializer
  return @mini_serializer
end