Namespace System
Namespace Xml

/*!
@brief	XMLドキュメントを表す
*/
Class XmlDocument
	Inherits XmlNode

	Sub VerifyLocalName( name As String )
		If Object.ReferenceEquals( name, Nothing ) Then
			' Throw System.ArgumentException()
		ElseIf name.Length = 0 Then
			' Throw System.ArgumentException()
		End If
	End Sub

Public

	/*!
	@brief	コンストラクタ
	*/
	Sub XmlDocument()
		XmlNode( XmlNodeType.Document, "", "#document", "", Nothing )
	End Sub

	/*!
	@brief	コンストラクタ
	*/
	'Sub XmlDocument( xmlImplementation As XmlImplementation )
	'End Sub

	/*!
	@brief	コンストラクタ
	*/
	'Sub XmlDocument( xmlNameTable As XmlNameTable )
	'End Sub

	/*!
	@brief	指定した値を使用して、XmlDeclaration ノードを作成します。
	@param	version XMLのバージョン番号。
			encoding 文字コード。（例："shift-jis", "UTF-8", "EUC-JP"）
			standalone 外部DTDの参照が必要かどうか。"yes" or "no"
	*/
	Function CreateXmlDeclaration( version As String, encoding As String, standalone As String ) As XmlDeclaration
		Return New XmlDeclaration( version ,encoding, standalone, This )
	End Function

	/*!
	@brief	指定した名前を使用して属性を作成します。
	@param	name 属性名
	*/
	Function CreateAttribute( name As String) As XmlAttribute
		VerifyLocalName( name )

		Return New XmlAttribute( "", name, "", This )
	End Function

	/*!
	@brief	指定した名前を使用して要素を作成します。
	@param	name 要素名。
	*/
	Function CreateElement( name As String ) As XmlElement
		VerifyLocalName( name )

		Return New XmlElement( "", name, "", This )
	End Function

	/*!
	@brief	このノードとそのすべての子ノードを表すマークアップを取得します。
	@return	このノードとそのすべての子ノードを格納しているマークアップ。
	*/
	Override Function OuterXml() As String
		Return This.InnerXml
	End Function

End Class


End Namespace
End Namespace
