summaryrefslogtreecommitdiff
path: root/src/library/scala/xml/Document.scala
blob: ec0b5e2a3cf2b478ce00546c3da69d5e96f18146 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*                     __                                               *\
**     ________ ___   / /  ___     Scala API                            **
**    / __/ __// _ | / /  / _ |    (c) 2003-2006, LAMP/EPFL             **
**  __\ \/ /__/ __ |/ /__/ __ |                                         **
** /____/\___/_/ |_/____/_/ | |                                         **
**                          |/                                          **
\*                                                                      */

// $Id$


package scala.xml;


/** A document information item (according to InfoSet spec). The comments
 *  are copied from the Infoset spec, only augmented with some information
 *  on the Scala types for definitions that might have no value.
 *  also plays the role of an XMLEvent for pull parsing
 */
class Document extends NodeSeq with pull.XMLEvent {

  /** An ordered list of child information items, in document
  *  order. The list contains exactly one element information item. The
  *  list also contains one processing instruction information item for
  *  each processing instruction outside the document element, and one
  *  comment information item for each comment outside the document
  *  element. Processing instructions and comments within the DTD are
  *  excluded. If there is a document type declaration, the list also
  *  contains a document type declaration information item.
  */
  var children: Seq[Node] = _;

  /** The element information item corresponding to the document element. */
  var docElem: Node = _;

  /** The dtd that comes with the document, if any */
  var dtd: scala.xml.dtd.DTD = _;

  /** An unordered set of notation information items, one for each notation
   * declared in the DTD. If any notation is multiply declared, this property
   * has no value.
   */
  def notations: Seq[scala.xml.dtd.NotationDecl] =
    dtd.notations;

  /** An unordered set of unparsed entity information items, one for each
   *  unparsed entity declared in the DTD.
   */
  def unparsedEntities: Seq[scala.xml.dtd.EntityDecl] =
    dtd.unparsedEntities;

  /** The base URI of the document entity. */
  var baseURI: String = _;

  /** The name of the character encoding scheme in which the document entity
   *  is expressed.
   */
  var encoding: Option[String] = _;

  /** An indication of the standalone status of the document, either
   * true or false. This property is derived from the optional standalone
   * document declaration in the XML declaration at the beginning of the
   * document entity, and has no value (None) if there is no standalone
   * document declaration.
   */
  var standAlone: Option[Boolean] = _;

  /** A string representing the XML version of the document. This
   * property is derived from the XML declaration optionally present at
   * the beginning of the document entity, and has no value (None) if there is
   * no XML declaration.
   */
  var version: Option[String] = _;

  /** 9. This property is not strictly speaking part of the infoset of
   * the document. Rather it is an indication of whether the processor
   * has read the complete DTD. Its value is a boolean. If it is false,
   * then certain properties (indicated in their descriptions below) may
   * be unknown. If it is true, those properties are never unknown.
   */
  var allDeclarationsProcessed = false;

  // methods for NodeSeq

  def theSeq: Seq[Node] = this.docElem ;

}