Eiffel Media API
Overview Cluster Class Classes Index      Previous Next      Top Features

xml.event

Class XM_DTD_ELEMENT_CONTENT


Direct ancestors

KL_SHARED_PLATFORM, UC_UNICODE_FACTORY, XM_UNICODE_STRUCTURE_FACTORY, KL_IMPORTED_STRING_ROUTINES

Creation

Features

Invariants

indexing

description

Content model for element declaration in DTD

library

Gobo Eiffel XML Library

copyright

Copyright (c) 2002, Eric Bezault and others

license

Eiffel Forum License v2 (see forum.txt)

date

$Date: 2005/07/13 19:45:02 $

revision

$Revision: 1.16 $

class

XM_DTD_ELEMENT_CONTENT

create

make_name (a_name: like name)

-- Create a new name node.

require
a_name_not_void: a_name /= Void
ensure
is_name: is_name
name_set: name = a_name
make_list

-- Create a new list node.

ensure
not_name: not is_name
make_choice

-- Create a new choice list.

ensure
list: not is_name
set: is_choice
make_sequence

-- Create a new sequence list.

ensure
list: not is_name
set: is_sequence
make_mixed

-- Create a new mixed content.

ensure
list: not is_name
set: is_content_mixed
make_any

-- Create a new any content model.

ensure
list: not is_name
set: is_content_any
make_empty

-- Create a new empty content model.

ensure
list: not is_name
set: is_content_empty

feature -- Repetition

is_one: BOOLEAN

-- One occurrence exactly.

is_one_or_more: BOOLEAN

-- One or more occurrences.

is_zero_or_more: BOOLEAN

-- Zero or more occurrences.

is_zero_or_one: BOOLEAN

-- Zero or one occurrences.

set_one

-- One occurrence.

ensure
set: is_one
set_one_or_more

-- One or more occurrences.

ensure
set_zero_or_more

-- Zero or more occurrences.

ensure
set_zero_or_one

-- Zero or one occurrences.

ensure

feature -- Content (compound)

is_choice: BOOLEAN

-- Choice.

is_sequence: BOOLEAN

-- Sequence.

set_choice

-- Choice.

ensure
set: is_choice
set_sequence

-- Sequence.

ensure

feature -- Content (final)

is_content_any: BOOLEAN

-- ANY content.

ensure
empty: Result implies (not is_name and items.count = 0)
chardata: Result implies is_character_data_allowed
is_content_empty: BOOLEAN

-- EMPTY content.

ensure
empty: Result implies (not is_name and items.count = 0)
set_content_any

-- ANY content.

require
list: not is_name
ensure
set_content_empty

-- EMPTY content.

require
list: not is_name
ensure

feature -- Content (mixed)

is_character_data_allowed: BOOLEAN

-- Is PCDATA allowed within this content?

is_content_mixed: BOOLEAN

-- Is this mixed content?

ensure
empty: Result implies (not is_name)
set_content_mixed

-- Set mixed #PCDATA content.

require
list: not is_name
ensure

feature -- Data

items: DS_LIST [XM_DTD_ELEMENT_CONTENT]

-- List of subitems
--require not is_name
--ensure Result /= Void

name: STRING

-- Name, IF leaf item
--require is_name
--ensure Result /= Void

feature -- Output

out: STRING

-- Output as in DTD.

-- (From ANY)

feature -- Sequence/leaf

is_name: BOOLEAN

-- Is this node a name leaf (list node otherwise)?

ensure
leaf: Result implies name /= Void
node: not Result implies items /= Void

feature -- Repetition (derived)

maximum_occurrences: INTEGER

-- Maximum occurrences

ensure
positive: Result >= 0
ordered: Result >= minimum_occurrences
one: is_one implies (Result = 1)
zero_or_one: is_zero_or_one implies (Result = 1)
one_or_more: is_one_or_more implies (Result > 1)
zero_or_more: is_zero_or_more implies (Result > 1)
minimum_occurrences: INTEGER

-- Minimum occurrences

ensure
postive: Result >= 0
ordered: Result <= maximum_occurrences
one: is_one implies (Result = 1)
zero_or_one: is_zero_or_one implies (Result = 0)
one_or_more: is_one_or_more implies (Result = 1)
zero_or_more: is_zero_or_more implies (Result = 0)

invariant

name: is_name = (name /= Void)
chardata: is_character_data_allowed = (is_content_mixed or is_content_any)
type_enumeration: (

|,?0

).has (type)
repetition_enumeration: (

+?*

).has (repetition)
leaf_or_items: is_name = (items = Void)

-- From ANY
reflexive_equality: standard_is_equal (Current)
reflexive_conformance: conforms_to (Current)

end