/**
	 * Setup the internal DOMDocument for usage.
	 *
	 * This MUST be called before any operations are applied to this object!
	 *
	 * @return bool
	 */
	public function load() {
		// I need a filename.
		// Actually I don't........ creating a DOM on-the-fly is a possible use of this class too...... 0.o
		//if(!$this->_filename) return false;

		// I need a root node name.
		if (!$this->_rootname) return false;

		// w00t, new support for a schema declaration!
		if($this->_schema){
			$implementation = new DOMImplementation();
			$dtd = $implementation->createDocumentType($this->_rootname, 'SYSTEM', $this->_schema);
			$this->_DOM = $implementation->createDocument('', '', $dtd);
		}
		else{
			$this->_DOM = new DOMDocument();
		}

		$this->_DOM->encoding = 'UTF-8';

		// we want a nice output
		$this->_DOM->formatOutput = true;

		if ($this->_file) {
			$contents = $this->_file->getContentsObject();
			if (is_a($contents, '\Core\Filestore\Contents\ContentGZ')) {
				$dat = $contents->uncompress();
			}
			else {
				$dat = $contents->getContents();
			}

			// If an empty string is submitted...
			if(!$dat){
				return false;
			}

			$this->_DOM->loadXML($dat);
		}
		elseif ($this->_filename) {
			if (!$this->_DOM->load($this->_filename)) return false;
		}
		else {
			return false;
		}

		return true;
	}