draft-ietf-xcon-common-data-model-11.txt   draft-ietf-xcon-common-data-model-12.txt 
XCON O. Novo XCON O. Novo
Internet-Draft G. Camarillo Internet-Draft G. Camarillo
Intended status: Standards Track Ericsson Intended status: Standards Track Ericsson
Expires: December 12, 2008 D. Morgan Expires: May 1, 2009 D. Morgan
Fidelity Investments Fidelity Investments
R. Even R. Even
Polycom Polycom
June 10, 2008 J. Urpalainen
Nokia
October 28, 2008
Conference Information Data Model for Centralized Conferencing (XCON) Conference Information Data Model for Centralized Conferencing (XCON)
draft-ietf-xcon-common-data-model-11.txt draft-ietf-xcon-common-data-model-12.txt
Status of this Memo Status of this Memo
By submitting this Internet-Draft, each author represents that any By submitting this Internet-Draft, each author represents that any
applicable patent or other IPR claims of which he or she is aware applicable patent or other IPR claims of which he or she is aware
have been or will be disclosed, and any of which he or she becomes have been or will be disclosed, and any of which he or she becomes
aware will be disclosed, in accordance with Section 6 of BCP 79. aware will be disclosed, in accordance with Section 6 of BCP 79.
Internet-Drafts are working documents of the Internet Engineering Internet-Drafts are working documents of the Internet Engineering
Task Force (IETF), its areas, and its working groups. Note that Task Force (IETF), its areas, and its working groups. Note that
skipping to change at page 1, line 38 skipping to change at page 1, line 40
and may be updated, replaced, or obsoleted by other documents at any and may be updated, replaced, or obsoleted by other documents at any
time. It is inappropriate to use Internet-Drafts as reference time. It is inappropriate to use Internet-Drafts as reference
material or to cite them other than as "work in progress." material or to cite them other than as "work in progress."
The list of current Internet-Drafts can be accessed at The list of current Internet-Drafts can be accessed at
http://www.ietf.org/ietf/1id-abstracts.txt. http://www.ietf.org/ietf/1id-abstracts.txt.
The list of Internet-Draft Shadow Directories can be accessed at The list of Internet-Draft Shadow Directories can be accessed at
http://www.ietf.org/shadow.html. http://www.ietf.org/shadow.html.
This Internet-Draft will expire on December 12, 2008. This Internet-Draft will expire on May 1, 2009.
Abstract Abstract
This document defines an Extensible Markup Language (XML)-based This document defines an Extensible Markup Language (XML)-based
conference information data model for centralized conferencing conference information data model for centralized conferencing
(XCON). A conference information data model is designed to convey (XCON). A conference information data model is designed to convey
information about the conference and about participation in the information about the conference and about participation in the
conference. The conference information data model defined in this conference. The conference information data model defined in this
document constitutes an extension of the data format specified in the document constitutes an extension of the data format specified in the
Session Initiation Protocol (SIP) Event Package for Conference State. Session Initiation Protocol (SIP) Event Package for Conference State.
skipping to change at page 3, line 10 skipping to change at page 3, line 13
4.6.5.4. <roles> . . . . . . . . . . . . . . . . . . . . . 26 4.6.5.4. <roles> . . . . . . . . . . . . . . . . . . . . . 26
4.6.5.5. <languages> . . . . . . . . . . . . . . . . . . . 26 4.6.5.5. <languages> . . . . . . . . . . . . . . . . . . . 26
4.6.5.6. <cascaded-focus> . . . . . . . . . . . . . . . . . 26 4.6.5.6. <cascaded-focus> . . . . . . . . . . . . . . . . . 26
4.6.5.7. <allow-refer-users-dynamically> . . . . . . . . . 26 4.6.5.7. <allow-refer-users-dynamically> . . . . . . . . . 26
4.6.5.8. <allow-invite-users-dynamically> . . . . . . . . . 26 4.6.5.8. <allow-invite-users-dynamically> . . . . . . . . . 26
4.6.5.9. <allow-remove-users-dynamically> . . . . . . . . . 27 4.6.5.9. <allow-remove-users-dynamically> . . . . . . . . . 27
4.6.5.10. <endpoint> . . . . . . . . . . . . . . . . . . . . 27 4.6.5.10. <endpoint> . . . . . . . . . . . . . . . . . . . . 27
4.7. <sidebars-by-ref> . . . . . . . . . . . . . . . . . . . . 28 4.7. <sidebars-by-ref> . . . . . . . . . . . . . . . . . . . . 28
4.8. <sidebars-by-val> . . . . . . . . . . . . . . . . . . . . 28 4.8. <sidebars-by-val> . . . . . . . . . . . . . . . . . . . . 28
5. RELAX NG Schema . . . . . . . . . . . . . . . . . . . . . . . 28 5. RELAX NG Schema . . . . . . . . . . . . . . . . . . . . . . . 28
6. XML Schema Extensibility . . . . . . . . . . . . . . . . . . . 37 6. XML Schema Extensibility . . . . . . . . . . . . . . . . . . . 39
7. XML Example . . . . . . . . . . . . . . . . . . . . . . . . . 38 7. XML Example . . . . . . . . . . . . . . . . . . . . . . . . . 39
8. Security Considerations . . . . . . . . . . . . . . . . . . . 47 8. Security Considerations . . . . . . . . . . . . . . . . . . . 49
8.1. Authentication . . . . . . . . . . . . . . . . . . . . . . 47 8.1. Authentication . . . . . . . . . . . . . . . . . . . . . . 49
8.2. Confidentiality . . . . . . . . . . . . . . . . . . . . . 47 8.2. Confidentiality . . . . . . . . . . . . . . . . . . . . . 49
8.3. Integrity . . . . . . . . . . . . . . . . . . . . . . . . 48 8.3. Integrity . . . . . . . . . . . . . . . . . . . . . . . . 50
9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 48 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 50
9.1. Relax NG Schema Registration . . . . . . . . . . . . . . . 48 9.1. Relax NG Schema Registration . . . . . . . . . . . . . . . 50
9.2. XML Namespace Registration . . . . . . . . . . . . . . . . 48 9.2. XML Namespace Registration . . . . . . . . . . . . . . . . 50
9.3. Conference Object Identifier Registration . . . . . . . . 49 9.3. Conference Object Identifier Registration . . . . . . . . 51
9.4. Conference User Identifier Registration . . . . . . . . . 50 9.4. Conference User Identifier Registration . . . . . . . . . 52
10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 50 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 52
11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 51 11. References . . . . . . . . . . . . . . . . . . . . . . . . . . 53
11.1. Normative References . . . . . . . . . . . . . . . . . . . 51 11.1. Normative References . . . . . . . . . . . . . . . . . . . 53
11.2. Informative References . . . . . . . . . . . . . . . . . . 51 11.2. Informative References . . . . . . . . . . . . . . . . . . 53
Appendix A. Non-Normative RELAX NG Schema in XML Syntax . . . . . 52 Appendix A. Non-Normative RELAX NG Schema in XML Syntax . . . . . 54
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 73 Appendix B. Non-Normative W3C XML Schema . . . . . . . . . . . . 81
Intellectual Property and Copyright Statements . . . . . . . . . . 75 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 90
Intellectual Property and Copyright Statements . . . . . . . . . . 92
1. Introduction 1. Introduction
There is a core data set of conference information that is utilized There is a core data set of conference information that is utilized
in any conference, independent of the specific conference media. in any conference, independent of the specific conference media.
This core data set called the 'conference information data model' is This core data set called the 'conference information data model' is
defined in this document using an Extensible Markup Language (XML)- defined in this document using an Extensible Markup Language (XML)-
based. The conference information data model defined in this based. The conference information data model defined in this
document is logically represented by the conference object. document is logically represented by the conference object.
skipping to change at page 14, line 21 skipping to change at page 14, line 21
<sidebars-by-ref>, and <sidebars-by-val> child elements. All these <sidebars-by-ref>, and <sidebars-by-val> child elements. All these
elements, except <floor-information>, are defined in [RFC4575]. A elements, except <floor-information>, are defined in [RFC4575]. A
conference document MUST at least include the <conference- conference document MUST at least include the <conference-
description> and <users> child elements. description> and <users> child elements.
4.2. <conference-description> 4.2. <conference-description>
The <conference-description> element, which is defined in [RFC4575], The <conference-description> element, which is defined in [RFC4575],
describes the conference as a whole. It should have an extra describes the conference as a whole. It should have an extra
attribute 'lang' to specify the language used in the contents of this attribute 'lang' to specify the language used in the contents of this
element. It is comprised of <language> <display-text>, <subject>, element. It is comprised of <language>, <display-text>, <subject>,
<free-text>, <keywords>, <allow-sidebars>, <conference-time>, <conf- <free-text>, <keywords>, <allow-sidebars>, <conference-time>, <conf-
uris>, <service-uris>, <maximum-user-count>, and <available-media>. uris>, <service-uris>, <maximum-user-count>, and <available-media>.
The following sections describe these elements in more detail. Other The following sections describe these elements in more detail. Other
child elements MAY be defined in the future to extend the child elements MAY be defined in the future to extend the
<conference-description> element. <conference-description> element.
4.2.1. <language> 4.2.1. <language>
The <language> element indicates the predominant language that is The <language> element indicates the predominant language that is
skipping to change at page 15, line 45 skipping to change at page 15, line 45
future policy documents. More values can be specified in the future policy documents. More values can be specified in the
future. The 'required-participant' attribute allows a privileged future. The 'required-participant' attribute allows a privileged
user to define when media mixing starts based on the latter of the user to define when media mixing starts based on the latter of the
mixing start time, and the time the first participant arrives. If mixing start time, and the time the first participant arrives. If
the value is set to "none'", mixing starts according to the mixing the value is set to "none'", mixing starts according to the mixing
start time. start time.
o <mixing-end-offset>: The <mixing-end-offset> child element that o <mixing-end-offset>: The <mixing-end-offset> child element that
specifies the time a conference media mixing stops after the specifies the time a conference media mixing stops after the
conference stops. If the <mixing-end-offset> element is not conference stops. If the <mixing-end-offset> element is not
present, it indicates that the conference occurrence is not present, it indicates that the conference occurrence is not
bounded. The <mixing-end-offset> elements both have the mandatory bounded. The <mixing-end-offset> element has the mandatory
'required-participant' attribute. This attribute contains one of 'required-participant' attribute. This attribute contains one of
the following values: "none", "administrator", "moderator", the following values: "none", "administrator", "moderator",
"observer", "user", and "participant". More values can be "observer", "user", and "participant". More values can be
specified in the future. The 'required-participant' attribute specified in the future. The 'required-participant' attribute
allows a privileged user to define when media mixing ends based on allows a privileged user to define when media mixing ends based on
the earlier of the <mixing-end-offset>, and the time the last the earlier of the <mixing-end-offset>, and the time the last
participant leaves. If the value is set to "none", mixing stops participant leaves. If the value is set to "none", mixing stops
according to the <mixing-end-offset>. If the conference policy according to the <mixing-end-offset>. If the conference policy
was modified so that last privileged user is now a normal was modified so that last privileged user is now a normal
conference participant, and the conference requires a privileged conference participant, and the conference requires a privileged
skipping to change at page 17, line 7 skipping to change at page 17, line 7
4.2.10. <maximum-user-count> 4.2.10. <maximum-user-count>
The <maximum-user-count> contains the overall number of users allowed The <maximum-user-count> contains the overall number of users allowed
to join the conference. Note that this value is set by an to join the conference. Note that this value is set by an
administrator and can reflect any local policies such as network administrator and can reflect any local policies such as network
consumption, CPU processing power, and licensing rules. consumption, CPU processing power, and licensing rules.
4.2.11. <available-media> 4.2.11. <available-media>
The <available-media> has the 'label' attribute that is the media The <available-media> element consists of a sequence of <entry> child
stream identifier assigned by the conferencing server. The attribute elements. Each <entry> element contain the 'label' attribute that is
'label' is described in [RFC4575], section 5.3.4. The <available- the media stream identifier assigned by the conferencing server. The
media> element contains a sequence of <entry> child elements. Each attribute 'label' is described in [RFC4575], section 5.3.4. Each
<entry> element contains the following child elements: <entry> element contains the following child elements:
o The <type> element is described in section 5.3.4 of [RFC4575]. o The <type> element is described in section 5.3.4 of [RFC4575].
o The <display-text> element is described in section 5.3.4 of o The <display-text> element is described in section 5.3.4 of
[RFC4575]. [RFC4575].
o The <status> element is described in section 5.3.4 of [RFC4575]. o The <status> element is described in section 5.3.4 of [RFC4575].
o The child element <mixing-mode> describes a default policy by o The child element <mixing-mode> describes a default policy by
which the mixer will build the outgoing stream from the incoming which the mixer will build the outgoing stream from the incoming
streams. Note that this policy is different than the policy streams. Note that this policy is different than the policy
describing the floors for each media. The <mixing-mode> child describing the floors for each media. The <mixing-mode> child
skipping to change at page 28, line 49 skipping to change at page 28, line 49
notifications mechanism. notifications mechanism.
5. RELAX NG Schema 5. RELAX NG Schema
In accordance with the Centralized Conferencing Framework document In accordance with the Centralized Conferencing Framework document
[RFC5239], the Conference Object is a logical representation of a [RFC5239], the Conference Object is a logical representation of a
conference instance. The conference information schema contains core conference instance. The conference information schema contains core
information that is utilized in any conference. It also contains the information that is utilized in any conference. It also contains the
variable information part of the Conference Object. variable information part of the Conference Object.
This specification defines some document fragments in RELAX NG format The normative schema is backwards compatible with the [RFC5239], in
[RELAX]. other words, valid [RFC5239] instance documents are also valid
according to this RELAX NG schema [RELAX]. In addition to
approximately similar RELAX NG [RELAX] definitions of the [RFC5239],
this schema contains extension elements in the
"urn:ietf:params:xml:ns:xcon-conference-info" namespace.
namespace a = "http://relaxng.org/ns/compatibility/annotations/1.0" default namespace = "urn:ietf:params:xml:ns:conference-info"
default namespace ns1 = "urn:ietf:params:xml:ns:xcon-conference-info" namespace xcon = "urn:ietf:params:xml:ns:xcon-conference-info"
namespace ns2 = "urn:ietf:params:xml:ns:conference-info"
namespace local = ""
start = element conference-info { conference-type } start = element conference-info { conference-type }
# CONFERENCE TYPE # CONFERENCE TYPE
conference-type = conference-type =
attribute entity { text }, attribute entity { text }
anyAttribute, & anyAttribute
conference-description-type, & conference-description-type?
element language { xsd:language }?, & element host-info { host-type }?
element host-info { conference-info-urn* }?, & element conference-state { conference-state-type }?
element conference-state { conference-state-type }?, & element users { users-type }?
element floor-information { floor-information-type }?, & element sidebars-by-ref { uris-type }?
element users { users-type }, & element sidebars-by-val { sidebars-by-val-type }?
element sidebars-by-ref { sidebars-by-ref-type }?, & element xcon:floor-information { floor-information-type }?
element sidebars-by-val { sidebars-by-val-type }?, & anyElement*
anyElement*
# CONFERENCE DESCRIPTION TYPE # CONFERENCE DESCRIPTION TYPE
conference-description-type = conference-description-type =
element conference-description { element conference-description {
attribute lang { xsd:language }?, attribute xml:lang { xsd:language }?
anyAttribute, & anyAttribute
element display-text { text }?, & element display-text { text }?
element subject { text }?, & element subject { text }?
element free-text { text }?, & element free-text { text }?
element keywords { & element keywords {
list { xsd:string* } list { xsd:string* }
}?, }?
element allow-sidebars { xsd:boolean }?, & element conf-uris { uris-type }?
element conference-time { conferencetime-type }?, & element service-uris { uris-type }?
element conf-uris { & element maximum-user-count { xsd:int }?
(element conference-password { text }*, & element available-media { conference-media-type }?
conference-info-urn)* & element xcon:language { xsd:language }?
}?, & element xcon:allow-sidebars { xsd:boolean }?
element service-uris { conference-info-urn* }?, & element xcon:conference-time { conferencetime-type }?
element maximum-user-count { xsd:int }?, & anyElement*
element available-media { conference-media-type }?,
anyElement*
} }
# HOST TYPE
host-type =
element display-text { text }?
& element web-page { xsd:anyURI }?
& element uris { uris-type }?
& anyElement*
& anyAttribute
# CONFERENCE STATE TYPE
conference-state-type =
anyAttribute
& element user-count { xsd:unsignedInt }?
& element active { xsd:boolean }?
& element locked { xsd:boolean }?
& element xcon:allow-conference-event-subscription { xsd:boolean }?
& anyElement*
# CONFERENCE MEDIA TYPE
conference-media-type =
anyAttribute
& element entry { conference-medium-type }*
& anyElement*
# CONFERENCE MEDIUM TYPE
conference-medium-type =
attribute label { text }
& anyAttribute
& element display-text { text }?
& element type { text }?
& element status { media-status-type }?
& element xcon:mixing-mode { mixing-mode-type }?
& element xcon:codecs { codecs-type }?
& element xcon:controls { control-type }?
& anyElement*
# URIs TYPE
uris-type =
anyAttribute
& element entry { uri-type }*
& anyElement*
# URI TYPE
uri-type =
element uri { xsd:anyURI }
& element display-text { text }?
& element purpose { text }?
& element modified { execution-type }?
& element xcon:conference-password { text }?
& anyElement*
& anyAttribute
# USERS TYPE
users-type =
anyAttribute
& element user { user-type }*
& element xcon:join-handling { join-handling-type }?
& element xcon:user-admission-policy { user-admission-policy-type }?
& element xcon:allowed-users-list { allowed-users-list-type }?
& element xcon:deny-users-list { deny-user-list-type }?
& anyElement*
# USER TYPE
user-type =
attribute entity { xsd:anyURI }
& anyAttribute
& element display-text { text }?
& element associated-aors { uris-type }?
& element roles {
element entry { single-role-type }+
}?
& element languages {
list { xsd:language }
}?
& element cascaded-focus { xsd:anyURI }?
& element endpoint { endpoint-type }*
& element xcon:provide-anonymity { provide-anonymity-type }?
& element xcon:allow-refer-users-dynamically { xsd:boolean }?
& element xcon:allow-invite-users-dynamically { xsd:boolean }?
& element xcon:allow-remove-users-dynamically { xsd:boolean }?
& anyElement*
# ENDPOINT TYPE
endpoint-type =
attribute entity { text }
& anyAttribute
& element display-text { text }?
& element referred { execution-type }?
& element status { endpoint-status-type }?
& element joining-method { joining-type }?
& element joining-info { execution-type }?
& element disconnection-method { disconnection-type }?
& element disconnection-info { execution-type }?
& element media { media-type }*
& element call-info { call-type }?
& element xcon:floor {
attribute id { text },
anyAttribute,
xsd:boolean
}*
& anyElement*
# ENDPOINT STATUS TYPE
endpoint-status-type =
"pending"
| "dialing-out"
| "dialing-in"
| "alerting"
| "on-hold"
| "connected"
| "muted-via-focus"
| "disconnecting"
| "disconnected"
| free-text-extension
# JOINING TYPE
joining-type =
"dialed-in" | "dialed-out" | "focus-owner" | free-text-extension
# DISCONNECTION TYPE
disconnection-type =
"departed" | "booted" | "failed" | "busy" | free-text-extension
# EXECUTION TYPE
execution-type =
element when { xsd:dateTime }?
& element reason { text }?
& element by { xsd:anyURI }?
& anyAttribute
# CALL TYPE
call-type =
element sip { sip-dialog-id-type }
& anyElement*
& anyAttribute
# SIP DIALOG ID TYPE
sip-dialog-id-type =
element display-text { text }?
& element call-id { text }
& element from-tag { text }
& element to-tag { text }
& anyElement*
& anyAttribute
# MEDIA TYPE
media-type =
attribute id { xsd:int }
& anyAttribute
& element display-text { text }?
& element type { text }?
& element label { text }?
& element src-id { text }?
& element status { media-status-type }?
& element xcon:to-mixer { mixer-type }?
& element xcon:from-mixer { mixer-type }?
& anyElement*
# MEDIA STATUS TYPE
media-status-type =
"recvonly"
| "sendonly"
| "sendrecv"
| "inactive"
| free-text-extension
# SIDEBARS-BY-VAL TYPE
sidebars-by-val-type =
anyAttribute
& element entry { conference-type }*
& anyElement*
# CONFERENCE TIME # CONFERENCE TIME
conferencetime-type = conferencetime-type =
anyAttribute, anyAttribute
element entry { & element xcon:entry {
element base { text }?, element xcon:base { text },
element mixing-start-offset { element xcon:mixing-start-offset {
xsd:dateTime { pattern = ".+T.+Z.*" }, time-type,
attribute required-participant { single-role-type }, attribute required-participant { single-role-type },
anyAttribute anyAttribute
}?, }?,
element mixing-end-offset { element xcon:mixing-end-offset {
xsd:dateTime { pattern = ".+T.+Z.*" }, time-type,
attribute required-participant { single-role-type }, attribute required-participant { single-role-type },
anyAttribute anyAttribute
}?, }?,
element can-join-after-offset { element xcon:can-join-after-offset { time-type }?,
xsd:dateTime { pattern = ".+T.+Z.*" } element xcon:must-join-before-offset { time-type }?,
}?, element xcon:request-user { time-type }?,
element must-join-before-offset { element xcon:notify-end-of-conference { xsd:int }?,
xsd:dateTime { pattern = ".+T.+Z.*" } element xcon:allowed-extend-mixing-end-offset { xsd:boolean }?,
}?,
element notify-end-of-conference { xsd:int }?,
element allowed-extend-mixing-end-offset { xsd:boolean }?,
anyElement*
}*,
anyElement*
# CONFERENCE MEDIA TYPE
conference-media-type =
anyAttribute,
element entry { conference-medium-type }*,
anyElement*
# CONFERENCE MEDIUM TYPE
conference-medium-type =
attribute label { text },
anyAttribute,
element display-text { text }?,
element type { text }?,
element status { media-status-type }?,
element mixing-mode { mix-mode-type }?,
element codecs { codecs-type }?,
element controls { control-type }?,
anyElement* anyElement*
}*
# MIX MODE TYPE # TIME TYPE
mix-mode-type = time-type = xsd:dateTime { pattern = ".+T.+Z.*" }
# SINGLE ROLE TYPE
single-role-type =
xsd:string "none"
| xsd:string "administrator"
| xsd:string "moderator"
| xsd:string "user"
| xsd:string "observer"
| xsd:string "participant"
| free-text-extension
# MIXING MODE TYPE
mixing-mode-type =
xsd:string "moderator-controlled" xsd:string "moderator-controlled"
| xsd:string "FCFS" | xsd:string "FCFS"
| xsd:string "automatic" | xsd:string "automatic"
| text | free-text-extension
# CODECS TYPE # CODECS TYPE
codecs-type = codecs-type =
attribute decision { decision-type }, attribute decision { decision-type }
anyAttribute, & anyAttribute
element codec { codec-type }*, & element xcon:codec { codec-type }*
anyElement* & anyElement*
# CODEC TYPE # CODEC TYPE
codec-type = codec-type =
attribute name { text }, attribute name { text }
attribute policy { policy-type }, & attribute policy { policy-type }
anyAttribute, & anyAttribute
element subtype { text }?, & element xcon:subtype { text }?
conference-info-urn* & anyElement*
# DECISION TYPE # DECISION TYPE
decision-type = decision-type =
xsd:string "automatic" | xsd:string "moderator-controlled" | text xsd:string "automatic"
| xsd:string "moderator-controlled"
| free-text-extension
# POLICY TYPE # POLICY TYPE
policy-type =
policy-type = xsd:string "allowed" | xsd:string "disallowed" | text xsd:string "allowed" | xsd:string "disallowed" | free-text-extension
# CONTROL TYPE # CONTROL TYPE
control-type = control-type =
anyAttribute, anyAttribute
(element mute { xsd:boolean }, & element xcon:mute { xsd:boolean }?
element pause-video { xsd:boolean }, & element xcon:pause-video { xsd:boolean }?
element gain { & element xcon:gain { gain-type }?
xsd:int { minInclusive = "-127" maxInclusive = "127" } & element xcon:video-layout { video-layout-type }?
}, & anyElement*
element video-layout { # GAIN TYPE
gain-type = xsd:int { minInclusive = "-127" maxInclusive = "127" }
# VIDEO LAYOUT TYPE
video-layout-type =
xsd:string "single-view" xsd:string "single-view"
| xsd:string "dual-view" | xsd:string "dual-view"
| xsd:string "dual-view-crop" | xsd:string "dual-view-crop"
| xsd:string "dual-view-2x1" | xsd:string "dual-view-2x1"
| xsd:string "dual-view-2x1-crop" | xsd:string "dual-view-2x1-crop"
| xsd:string "quad-view" | xsd:string "quad-view"
| xsd:string "multiple-3x3" | xsd:string "multiple-3x3"
| xsd:string "multiple-4x4" | xsd:string "multiple-4x4"
| xsd:string "multiple-5x1" | xsd:string "multiple-5x1"
| xsd:string "automatic" | xsd:string "automatic"
| text | free-text-extension
},
anyElement*)*
# CONFERENCE STATE TYPE
conference-state-type =
anyAttribute,
element allow-conference-event-subscription { xsd:boolean }?,
element user-count { xsd:unsignedInt }?,
element active { xsd:boolean }?,
element locked { xsd:boolean }?,
anyElement*
# FLOOR INFORMATION TYPE # FLOOR INFORMATION TYPE
floor-information-type = floor-information-type =
anyAttribute, anyAttribute
(element conference-ID { xsd:unsignedLong }, & element xcon:conference-ID { xsd:unsignedLong }?
element allow-floor-events { xsd:boolean }, & element xcon:allow-floor-events { xsd:boolean }?
element floor-request-handling { floor-request-type }, & element xcon:floor-request-handling { floor-request-type }?
element conference-floor-policy { conference-floor-policy }, & element xcon:conference-floor-policy { conference-floor-policy }?
anyElement*)* & anyElement*
# FLOOR REQUEST TYPE # FLOOR REQUEST TYPE
floor-request-type =
floor-request-type = xsd:string "block" | xsd:string "confirm" | text xsd:string "block" | xsd:string "confirm" | free-text-extension
# CONFERENCE FLOOR POLICY # CONFERENCE FLOOR POLICY
conference-floor-policy = conference-floor-policy =
anyAttribute, anyAttribute
element floor { & element xcon:floor {
attribute id { text }, attribute id { text }
anyAttribute, & anyAttribute
element media-label { xsd:nonNegativeInteger }+, & element xcon:media-label { xsd:nonNegativeInteger }+
(element algorithm { & element xcon:algorithm { algorithm-type }?
& element xcon:max-floor-users { xsd:nonNegativeInteger }?
& element xcon:moderator-id { xsd:nonNegativeInteger }?
& anyElement*
}+
# ALGORITHM POLICY
algorithm-type =
xsd:string "moderator-controlled" xsd:string "moderator-controlled"
| xsd:string "FCFS" | xsd:string "FCFS"
| xsd:string "random" | xsd:string "random"
| text | free-text-extension
},
element max-floor-users { xsd:nonNegativeInteger },
element moderator-id { text }*,
anyElement*)*
}+
# USERS TYPE
users-type =
anyAttribute,
element join-handling { join-handling-type }?,
element user-admission-policy { user-admission-policy-type }?,
element allowed-users-list { UserList }?,
element deny-users-list { deny-user-list }?,
element user { user-type }*,
anyElement*
# USERS ADMISSION POLICY # USERS ADMISSION POLICY
user-admission-policy-type = user-admission-policy-type =
xsd:string "closedAuthenticated" xsd:string "closedAuthenticated"
| xsd:string "openAuthenticated" | xsd:string "openAuthenticated"
| xsd:string "anonymous" | xsd:string "anonymous"
| text | free-text-extension
# JOIN HANDLING TYPE # JOIN HANDLING TYPE
join-handling-type = join-handling-type =
xsd:string "block" xsd:string "block"
| xsd:string "confirm" | xsd:string "confirm"
| xsd:string "allow" | xsd:string "allow"
| xsd:string "authenticate" | xsd:string "authenticate"
| xsd:string "directed-operator" | xsd:string "directed-operator"
| text | free-text-extension
# DENYUSERLIST # DENYUSERLIST
deny-user-list-type =
deny-user-list = anyAttribute
anyAttribute, & element xcon:target {
element target {
attribute uri { xsd:anyURI }, attribute uri { xsd:anyURI },
anyAttribute anyAttribute
}*, }*
anyElement* & anyElement*
# ALLOWED USERS LIST TYPE
# USERLIST allowed-users-list-type =
anyAttribute
UserList = & element xcon:target { target-type }*
anyAttribute, & element xcon:persistent-list { persistent-list-type }?
element target { target-type }*, & anyElement*
anyElement*, # PERSISTENT LIST TYPE
element persistent-list { persistent-list-type =
element user { element xcon:user {
attribute name { text }, attribute name { text }
attribute nickname { text }, & attribute nickname { text }
attribute id { text }, & attribute id { text }
anyAttribute, & anyAttribute
element e-mail { text }* & element xcon:e-mail { text }*
}*, & anyElement*
anyElement }*
}? & anyElement*
# TARGET TYPE # TARGET TYPE
target-type = target-type =
attribute uri { xsd:anyURI }, attribute uri { xsd:anyURI },
attribute method { method-type }, attribute method { method-type },
anyAttribute anyAttribute
# METHOD TYPE # METHOD TYPE
method-type = method-type =
xsd:string "dial-in" xsd:string "dial-in"
| xsd:string "dial-out" | xsd:string "dial-out"
| xsd:string "refer" | xsd:string "refer"
| text | free-text-extension
# ANONYMITY TYPE
# USER TYPE provide-anonymity-type =
"private" | "semi-private" | "hidden" | free-text-extension
user-type =
attribute entity { xsd:anyURI },
anyAttribute,
element display-text { text }?,
element associated-aors { conference-info-urn* }?,
element provide-anonymity {
"private" | "semi-private" | "hidden" | text
}?,
element roles { single-role-type }?,
element languages {
list { xsd:language }
}?,
element cascaded-focus { xsd:anyURI }?,
element allow-refer-users-dynamically { xsd:boolean }?,
element allow-invite-users-dynamically { xsd:boolean }?,
element allow-remove-users-dynamically { xsd:boolean }?,
element endpoint { endpoint-type }*,
anyElement*
# ENDPOINT TYPE
endpoint-type =
attribute entity { text },
anyAttribute,
element display-text { text }?,
element referred { conference-info-urn* }?,
element status { endpoint-status-type }?,
element joining-method { joining-type }?,
element joining-info { conference-info-urn* }?,
element disconnection-method { disconnection-type }?,
element disconnection-info { conference-info-urn* }?,
element media { media-type }*,
element floor {
attribute id { text },
anyAttribute,
xsd:boolean
}*,
element call-info { conference-info-urn* }?,
anyElement*
# MEDIA TYPE
media-type =
attribute id { xsd:int },
anyAttribute,
element display-text { text }?,
element type { text }?,
element label { text }?,
element src-id { text }?,
element status { media-status-type }?,
element to-mixer { mixer-type }?,
element from-mixer { mixer-type }?,
anyElement*
# MIXER TYPE # MIXER TYPE
mixer-type = mixer-type =
anyAttribute, attribute name { mixer-name-type }
element controls { control-type }?, & anyAttribute
anyElement* & element xcon:controls { control-type }*
& anyElement*
# SIDEBARS-BY-REF TYPE # MIXER NAME TYPE
mixer-name-type =
sidebars-by-ref-type = "VideoIn" | "VideoOut" | "AudioOut" | "AudioIn" | free-text-extension
anyAttribute,
element entry { conference-info-urn* }*,
anyElement*
# SIDEBARS-BY-VAL TYPE
sidebars-by-val-type =
anyAttribute,
element entry { conference-type }*,
anyElement*
# SINGLE ROLE TYPE # FREE TEXT EXTENSION
# (re-define this as <notAllowed>,
# if extensions beyond this spec are not used)
single-role-type = free-text-extension = text
xsd:string "administrator"
| xsd:string "moderator"
| xsd:string "user"
| xsd:string "participant"
| xsd:string "observer"
| xsd:string "none"
| text
# ********************************* # *********************************
# EXTENSIBILITY OF THE SCHEMA # EXTENSIBILITY OF THE SCHEMA
# ********************************* # *********************************
# EXTENSIBILITY ELEMENTS # EXTENSIBILITY ELEMENTS
# (re-define this as <empty/>,
# if extensions beyond this spec are not used)
anyElement = anyElement =
element * - (conference-description
| host-info
| conference-state
| users
| sidebars-by-ref
| sidebars-by-val
| display-text
| subject
| free-text
| keywords
| conf-uris
| service-uris
| maximum-user-count
| available-media
| web-page
| uris
| uri
| user-count
| active
| locked
| entry
| type
| status
| purpose
| modified
| user
| associated-aors
| roles
| languages
| cascaded-focus
| endpoint
| referred
| joining-method
| joining-info
| disconnection-method
| disconnection-info
| media
| call-info
| when
| reason
| by
| sip
| call-id
| from-tag
| to-tag
| label
| src-id
| xcon:conference-password
| xcon:mixing-mode
| xcon:codecs
| xcon:controls
| xcon:language
| xcon:allow-sidebars
| xcon:allow-conference-event-subscription
| xcon:to-mixer
| xcon:provide-anonymity
| xcon:allow-refer-users-dynamically
| xcon:allow-invite-users-dynamically
| xcon:allow-remove-users-dynamically
| xcon:from-mixer
| xcon:join-handling
| xcon:user-admission-policy
| xcon:allowed-users-list
| xcon:deny-users-list
| xcon:floor-information
| xcon:conference-time
| xcon:provide-anonymity
| xcon:floor
| xcon:entry
| xcon:mixing-start-offset
| xcon:mixing-end-offset
| xcon:can-join-after-offset
| xcon:must-join-before-offset
| xcon:request-user
| xcon:notify-end-of-conference
| xcon:allowed-extend-mixing-end-offset
| xcon:codec
| xcon:subtype
| xcon:mute
| xcon:pause-video
| xcon:gain
| xcon:video-layout
| xcon:conference-ID
| xcon:allow-floor-events
| xcon:floor-request-handling
| xcon:conference-floor-policy
| xcon:media-label
| xcon:algorithm
| xcon:max-floor-users
| xcon:moderator-id
| xcon:target
| xcon:persistent-list
| xcon:e-mail
| xcon:user) { anyExtension }
anyExtension =
(attribute * { text }
| any)*
any =
element * { element * {
(attribute * { text } (attribute * { text }
| text | text
| anyElement)* | any)*
} }
# EXTENSIBILITY ATTRIBUTES # EXTENSIBILITY ATTRIBUTES
# (re-define this as <empty/>,
# if extensions beyond this spec are not used)
anyAttribute = anyAttribute =
attribute * - (entity attribute * - (xml:lang
| lang | entity
| required-participant | required-participant
| label | label
| decision | decision
| name | name
| policy | policy
| uri | uri
| method | method
| id | id
| local:* | nickname) { text }*
| ns2:*) { text }*
# *************************************************************
# TYPES DEFINED IN THE EVENT PACKAGE FOR CONFERENCE STATE
# - RFC4575 -
# *************************************************************
# WILDCARD FOR EVENT-PACKAGE NAMESPACE
conference-info-urn =
element * - (ns1:* | local:*) {
mixed {
(attribute * { text }
| conference-info-urn)*
}
}
# DEFINITION OF ENDPOINT STATUS TYPE
media-status-type =
"recvonly" | "sendonly" | "sendrecv" | "inactive" | text
# ENDPOINT STATUS TYPE
endpoint-status-type =
"pending"
| "dialing-out"
| "dialing-in"
| "alerting"
| "on-hold"
| "connected"
| "muted-via-focus"
| "disconnecting"
| "disconnected"
| text
# JOINING TYPE
joining-type = "dialed-in" | "dialed-out" | "focus-owner" | text
# DISCONNECTION TYPE
disconnection-type = "departed" | "booted" | "failed" | "busy" | text
6. XML Schema Extensibility 6. XML Schema Extensibility
The Conference Information Data Model defined in this document is The Conference Information Data Model defined in this document is
meant to be extensible toward specific application domains. Such meant to be extensible toward specific application domains. Such
extensions are accomplished by defining elements, child elements and extensions are accomplished by defining elements, child elements and
attributes that are specific to the desired application domain. The attributes that are specific to the desired application domain. The
IETF MAY extend the data model schema with extension elements from IETF MAY extend the data model schema with unqualified attributes or
the same namespace in future. Other instances are free to define extension elements from the "urn:ietf:params:xml:ns:" "sub-namespace"
extension elements under any namespace other than in the future. Other instances are free to define extension elements
urn:ietf:params:xml:ns:xcon-conference-info. or attributes under other namespaces.
Elements or attributes from unknown namespaces MUST be ignored. Elements or attributes from unknown namespaces MUST be ignored.
7. XML Example 7. XML Example
The following is an example of a conference information document. The following is an example of a conference information document.
The conference starts on October 17, 2007, at 10:30 AM in New York The conference starts on October 17, 2007, at 10:30 AM in New York
City and finishes the same day at 12:30 PM every week. In this City and finishes the same day at 12:30 PM every week. In this
example, there are currently 3 participants in a conference, one example, there are currently 3 participants in a conference, one
administrator, one moderator, and one participant. Sidebars are administrator, one moderator, and one participant. Sidebars are
allowed in this conference and ,consequently, there is one sidebar in allowed in this conference and ,consequently, there is one sidebar in
the conference. In addition, Alice and Carol are using a floor in the conference. In addition, Alice and Carol are using a floor in
the main conference to manage the audio and video resources. At the the main conference to manage the audio and video resources. At the
moment, Alice is assigned to use the floor. moment, Alice is assigned to use the floor.
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<conference-info xmlns="urn:ietf:params:xml:ns:xcon-conference-info" <conference-info
xmlns="urn:ietf:params:xml:ns:conference-info"
xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
entity="conference123@example.com"> entity="conference123@example.com">
<!-- <!--
CONFERENCE DESCRIPTION CONFERENCE DESCRIPTION
--> -->
<conference-description xml:lang="en-us">
<conference-description lang="en-us">
<language>En-us</language>
<display-text>Discussion of Formula-1 racing</display-text> <display-text>Discussion of Formula-1 racing</display-text>
<subject>Sports:Formula-1</subject> <subject>Sports:Formula-1</subject>
<free-text>This is a conference example</free-text> <free-text>This is a conference example</free-text>
<keywords>Formula-1, cars</keywords> <keywords>Formula-1 cars</keywords>
<allow-sidebars>true</allow-sidebars>
<!--
CONFERENCE TIME
-->
<conference-time>
<entry>
<base>BEGIN:VCALENDAR
PRODID:-//LlamaSpinner Inc.//NONSGML CamelCall//EN
VERSION:2.0
BEGIN:VEVENT
DTSTAMP:20071003T140728Z
UID:20071003T140728Z-345FDA-carol@example.com
ORGANIZER:MAILTO:carol@example.com
DTSTART:20071017T143000Z
RRULE:FREQ=WEEKLY
DTEND:20071217T163000Z
END:VEVENT
END:VCALENDAR</base>
<mixing-start-offset required-participant="moderator"
> 2007-10-17T14:29:00Z</mixing-start-offset>
<mixing-end-offset required-participant="participant"
> 2007-10-17T16:31:00Z</mixing-end-offset>
<must-join-before-offset
> 2007-10-17T15:30:00Z</must-join-before-offset>
</entry>
</conference-time>
<!-- <!--
CONFERENCE UNIQUE IDENTIFIERS CONFERENCE UNIQUE IDENTIFIERS
--> -->
<conf-uris> <conf-uris>
<entry> <entry>
<uri>tel:+3585671234</uri> <uri>tel:+3585671234</uri>
<display-text>Conference Bridge</display-text> <display-text>Conference Bridge</display-text>
<purpose>participation</purpose> <purpose>participation</purpose>
<conference-password>5678</conference-password> <xcon:conference-password
>5678</xcon:conference-password>
</entry> </entry>
<entry> <entry>
<uri>http://www.example.com/live.ram</uri> <uri>http://www.example.com/live.ram</uri>
<purpose>streaming</purpose> <purpose>streaming</purpose>
</entry> </entry>
</conf-uris> </conf-uris>
<!-- <!--
SERVICE URIS SERVICE URIS
--> -->
<service-uris> <service-uris>
<entry> <entry>
<uri>http://www.example.com/formula1/</uri> <uri>mailto:bob@example.com</uri>
<purpose>web-page</purpose> <display-text>email</display-text>
</entry> </entry>
</service-uris> </service-uris>
<!-- <!--
MAXIMUM USER COUNT MAXIMUM USER COUNT
--> -->
<maximum-user-count>50</maximum-user-count> <maximum-user-count>50</maximum-user-count>
<!-- <!--
AVAILABLE MEDIA AVAILABLE MEDIA
--> -->
<available-media> <available-media>
<entry label="10234"> <entry label="10234">
<display-text>main audio</display-text> <display-text>main audio</display-text>
<type>audio</type> <type>audio</type>
<status>sendrecv</status> <status>sendrecv</status>
<mixing-mode>automatic</mixing-mode> <xcon:mixing-mode>automatic</xcon:mixing-mode>
<codecs decision="automatic"> <xcon:codecs decision="automatic">
<codec name="122" policy="allowed"/> <xcon:codec name="122" policy="allowed">
<xcon:subtype>PCMU</xcon:subtype>
<subtype>PCMU</subtype> </xcon:codec>
</codecs> </xcon:codecs>
<controls> <xcon:controls>
<mute>true</mute> <xcon:mute>true</xcon:mute>
<gain>50</gain> <xcon:gain>50</xcon:gain>
</controls> </xcon:controls>
</entry> </entry>
<entry label="10235"> <entry label="10235">
<display-text>main video</display-text> <display-text>main video</display-text>
<type>video</type> <type>video</type>
<status>sendrecv</status> <status>sendrecv</status>
<mixing-mode>automatic</mixing-mode> <xcon:mixing-mode>automatic</xcon:mixing-mode>
<codecs decision="automatic"> <xcon:codecs decision="automatic">
<codec name="123" policy="allowed"/> <xcon:codec name="123" policy="allowed">
<xcon:subtype>H.263</xcon:subtype>
<subtype>H.263</subtype> </xcon:codec>
</codecs> </xcon:codecs>
<controls> <xcon:controls>
<video-layout>single-view</video-layout> <xcon:video-layout
</controls> >single-view</xcon:video-layout>
</xcon:controls>
</entry> </entry>
</available-media> </available-media>
<xcon:language>En-us</xcon:language>
<xcon:allow-sidebars>true</xcon:allow-sidebars>
<!--
CONFERENCE TIME
-->
<xcon:conference-time>
<xcon:entry>
<xcon:base>BEGIN:VCALENDAR
PRODID:-//LlamaSpinner Inc.//NONSGML CamelCall//EN
VERSION:2.0
BEGIN:VEVENT
DTSTAMP:20071003T140728Z
UID:20071003T140728Z-345FDA-carol@example.com
ORGANIZER:MAILTO:carol@example.com
DTSTART:20071017T143000Z
RRULE:FREQ=WEEKLY
DTEND:20071217T163000Z
END:VEVENT
END:VCALENDAR</xcon:base>
<xcon:mixing-start-offset
required-participant="moderator"
>2007-10-17T14:29:00Z</xcon:mixing-start-offset>
<xcon:mixing-end-offset
required-participant="participant"
>2007-10-17T16:31:00Z</xcon:mixing-end-offset>
<xcon:must-join-before-offset
>2007-10-17T15:30:00Z
</xcon:must-join-before-offset>
</xcon:entry>
</xcon:conference-time>
</conference-description> </conference-description>
<!-- <!--
HOST INFO HOST INFO
--> -->
<host-info> <host-info>
<display-text>Formula1</display-text> <display-text>Formula1</display-text>
<web-page>http://www.example.com/formula1/</web-page> <web-page>http://www.example.com/formula1/</web-page>
<uris> <uris>
<entry> <entry>
<uri>sip:alice@example.com</uri> <uri>sip:alice@example.com</uri>
</entry> </entry>
<entry> <entry>
<uri>sip:carol@example.com</uri> <uri>sip:carol@example.com</uri>
</entry> </entry>
</uris> </uris>
</host-info> </host-info>
<!-- <!--
CONFERENCE STATE CONFERENCE STATE
--> -->
<conference-state> <conference-state>
<allow-conference-event-subscription
>true</allow-conference-event-subscription>
<user-count>3</user-count> <user-count>3</user-count>
<active>true</active> <active>true</active>
<locked>false</locked> <locked>false</locked>
<xcon:allow-conference-event-subscription
>true</xcon:allow-conference-event-subscription>
</conference-state> </conference-state>
<!-- <!--
FLOOR INFORMATION
-->
<floor-information>
<conference-ID>567</conference-ID>
<allow-floor-events>true</allow-floor-events>
<floor-request-handling>confirm</floor-request-handling>
<conference-floor-policy>
<floor id="345">
<media-label>10234</media-label>
<media-label>10235</media-label>
<algorithm>moderator-controlled</algorithm>
<max-floor-users>1</max-floor-users>
<moderator-id>234</moderator-id>
</floor>
</conference-floor-policy>
</floor-information>
<!--
USERS USERS
--> -->
<users> <users>
<join-handling>allow</join-handling>
<user-admission-policy
>openAuthenticated</user-admission-policy>
<!--
ALLOWED USERS LIST
-->
<allowed-users-list>
<target uri="sip:bob@example.com" method="dial-out"/>
<target uri="sip:alice@example.com" method="dial-out"/>
<target uri="sip:carol@example.com" method="dial-out"/>
<target uri="sip:john@example.com" method="refer"/>
</allowed-users-list>
<!--
DENY USERS LIST
-->
<deny-users-list>
<target uri="sip:charlie@example.com"/>
</deny-users-list>
<!-- <!--
USER BOB USER BOB
--> -->
<user entity="bob534"> <user entity="bob534">
<display-text>Bob Hoskins</display-text> <display-text>Bob Hoskins</display-text>
<associated-aors> <associated-aors>
<entry> <entry>
<uri>mailto:bob@example.com</uri> <uri>mailto:bob@example.com</uri>
<display-text>email</display-text> <display-text>email</display-text>
</entry> </entry>
</associated-aors> </associated-aors>
<provide-anonymity>semi-private</provide-anonymity>
<roles> <roles>
<entry>participant</entry> <entry>participant</entry>
</roles> </roles>
<languages>en-us</languages> <languages>en-us</languages>
<allow-refer-users-dynamically
>false</allow-refer-users-dynamically>
<allow-invite-users-dynamically
>false</allow-invite-users-dynamically>
<allow-remove-users-dynamically
>false</allow-remove-users-dynamically>
<!-- <!--
ENDPOINTS ENDPOINTS
--> -->
<endpoint entity="sip:bob@example.com"> <endpoint entity="sip:bob@example.com">
<display-text>Bob's Laptop</display-text> <display-text>Bob's Laptop</display-text>
<referred> <referred>
<when>2007-10-17T14:00:00Z</when> <when>2007-10-17T14:00:00Z</when>
<reason>expert required</reason> <reason>expert required</reason>
<by>sip:alice@example.com</by> <by>sip:alice@example.com</by>
</referred> </referred>
skipping to change at page 42, line 38 skipping to change at page 43, line 38
<reason>expert required</reason> <reason>expert required</reason>
<by>sip:alice@example.com</by> <by>sip:alice@example.com</by>
</referred> </referred>
<status>connected</status> <status>connected</status>
<joining-method>dialed-out</joining-method> <joining-method>dialed-out</joining-method>
<joining-info> <joining-info>
<when>2007-10-17T14:00:00Z</when> <when>2007-10-17T14:00:00Z</when>
<reason>invitation</reason> <reason>invitation</reason>
<by>sip:alice@example.com</by> <by>sip:alice@example.com</by>
</joining-info> </joining-info>
<!-- <!--
MEDIA MEDIA
--> -->
<media id="1"> <media id="1">
<type>video</type> <type>video</type>
<label>10235</label> <label>10235</label>
<src-id>432424</src-id> <src-id>432424</src-id>
<status>sendrecv</status> <status>sendrecv</status>
<to-mixer name="VideoIn"> <xcon:to-mixer name="VideoIn">
<controls> <xcon:controls>
<video-layout <xcon:video-layout
>single-view</video-layout> >single-view</xcon:video-layout>
</controls> </xcon:controls>
</to-mixer> </xcon:to-mixer>
</media> </media>
<!-- <!--
CALL INFO CALL INFO
--> -->
<call-info> <call-info>
<sip> <sip>
<display-text>full info</display-text> <display-text>full info</display-text>
<call-id>hsjh8980vhsb78</call-id> <call-id>hsjh8980vhsb78</call-id>
<from-tag>vav738dvbs</from-tag> <from-tag>vav738dvbs</from-tag>
<to-tag>8954jgjg8432</to-tag> <to-tag>8954jgjg8432</to-tag>
</sip> </sip>
</call-info> </call-info>
</endpoint> </endpoint>
<xcon:provide-anonymity
>semi-private</xcon:provide-anonymity>
<xcon:allow-refer-users-dynamically
>false</xcon:allow-refer-users-dynamically>
<xcon:allow-invite-users-dynamically
>false</xcon:allow-invite-users-dynamically>
<xcon:allow-remove-users-dynamically
>false</xcon:allow-remove-users-dynamically>
</user> </user>
<!-- <!--
USER ALICE USER ALICE
--> -->
<user entity="alice334"> <user entity="alice334">
<display-text>Alice Kay</display-text> <display-text>Alice Kay</display-text>
<associated-aors> <associated-aors>
<entry> <entry>
<uri>mailto:alice@example.com</uri> <uri>mailto:alice@example.com</uri>
<display-text>email</display-text> <display-text>email</display-text>
</entry> </entry>
</associated-aors> </associated-aors>
<provide-anonymity>private</provide-anonymity>
<roles> <roles>
<entry>moderator</entry> <entry>moderator</entry>
</roles> </roles>
<languages>en-us</languages> <languages>en-us</languages>
<allow-refer-users-dynamically
>true</allow-refer-users-dynamically>
<allow-invite-users-dynamically
>true</allow-invite-users-dynamically>
<allow-remove-users-dynamically
>true</allow-remove-users-dynamically>
<!-- <!--
ENDPOINTS ENDPOINTS
--> -->
<endpoint entity="sip:alice@example.com"> <endpoint entity="sip:alice@example.com">
<display-text>Alice's Desktop</display-text> <display-text>Alice's Desktop</display-text>
<status>connected</status> <status>connected</status>
<joining-method>dialed-in</joining-method> <joining-method>dialed-in</joining-method>
<joining-info> <joining-info>
<when>2007-10-17T13:35:08Z</when> <when>2007-10-17T13:35:08Z</when>
<reason>invitation</reason> <reason>invitation</reason>
<by>sip:conference@example.com</by> <by>sip:conference@example.com</by>
</joining-info> </joining-info>
<!-- <!--
MEDIA MEDIA
--> -->
<media id="1"> <media id="1">
<type>video</type> <type>video</type>
<label>10235</label> <label>10235</label>
<src-id>432424</src-id> <src-id>432424</src-id>
<status>sendrecv</status> <status>sendrecv</status>
<to-mixer name="VideoIn"> <xcon:to-mixer name="VideoIn">
<controls> <xcon:controls>
<video-layout <xcon:video-layout
>single-view</video-layout> >single-view</xcon:video-layout>
</controls> </xcon:controls>
</to-mixer> </xcon:to-mixer>
</media> </media>
<media id="2"> <media id="2">
<type>audio</type> <type>audio</type>
<label>10234</label> <label>10234</label>
<src-id>532535</src-id> <src-id>532535</src-id>
<status>sendrecv</status> <status>sendrecv</status>
<to-mixer name="VideoIn"> <xcon:to-mixer name="VideoIn">
<controls> <xcon:controls>
<gain>50</gain> <xcon:gain>50</xcon:gain>
</controls> </xcon:controls>
</to-mixer> </xcon:to-mixer>
<from-mixer name="VideoOut"> <xcon:from-mixer name="VideoOut">
<controls> <xcon:controls>
<gain>50</gain> <xcon:gain>50</xcon:gain>
</controls> </xcon:controls>
</from-mixer> </xcon:from-mixer>
</media> </media>
<floor id="345">true</floor>
<!-- <!--
CALL INFO CALL INFO
--> -->
<call-info> <call-info>
<sip> <sip>
<display-text>full info</display-text> <display-text>full info</display-text>
<call-id>truy45469123478</call-id> <call-id>truy45469123478</call-id>
<from-tag>asd456cbgt</from-tag> <from-tag>asd456cbgt</from-tag>
<to-tag>3456jgjg1234</to-tag> <to-tag>3456jgjg1234</to-tag>
</sip> </sip>
</call-info> </call-info>
<xcon:floor id="345">true</xcon:floor>
</endpoint> </endpoint>
<xcon:provide-anonymity>private</xcon:provide-anonymity>
<xcon:allow-refer-users-dynamically
>true</xcon:allow-refer-users-dynamically>
<xcon:allow-invite-users-dynamically
>true</xcon:allow-invite-users-dynamically>
<xcon:allow-remove-users-dynamically
>true</xcon:allow-remove-users-dynamically>
</user> </user>
<!-- <!--
USER CAROL USER CAROL
--> -->
<user entity="carol233"> <user entity="carol233">
<display-text>Carol More</display-text> <display-text>Carol More</display-text>
<associated-aors> <associated-aors>
<entry> <entry>
<uri>mailto:carol@example.com</uri> <uri>mailto:carol@example.com</uri>
<display-text>email</display-text> <display-text>email</display-text>
</entry> </entry>
</associated-aors> </associated-aors>
<provide-anonymity>private</provide-anonymity>
<roles> <roles>
<entry>administrator</entry> <entry>administrator</entry>
</roles> </roles>
<languages>en-us</languages> <languages>en-us</languages>
<allow-refer-users-dynamically
>true</allow-refer-users-dynamically>
<allow-invite-users-dynamically
>true</allow-invite-users-dynamically>
<allow-remove-users-dynamically
>true</allow-remove-users-dynamically>
<!-- <!--
ENDPOINTS ENDPOINTS
--> -->
<endpoint entity="sip:carol@example.com"> <endpoint entity="sip:carol@example.com">
<display-text>Carol's Computer</display-text> <display-text>Carol's Computer</display-text>
<status>connected</status> <status>connected</status>
<joining-method>dialed-in</joining-method> <joining-method>dialed-in</joining-method>
<joining-info> <joining-info>
<when>2007-10-17T13:30:05Z</when> <when>2007-10-17T13:30:05Z</when>
<reason>invitation</reason> <reason>invitation</reason>
<by>sip:conference@example.com</by> <by>sip:conference@example.com</by>
</joining-info> </joining-info>
<!-- <!--
MEDIA MEDIA
--> -->
<media id="1"> <media id="1">
<type>video</type> <type>video</type>
<label>10235</label> <label>10235</label>
<src-id>432424</src-id> <src-id>432424</src-id>
<status>sendrecv</status> <status>sendrecv</status>
<to-mixer name="VideoIn"> <xcon:to-mixer name="VideoIn">
<controls> <xcon:controls>
<video-layout <xcon:video-layout
>single-view</video-layout> >single-view</xcon:video-layout>
</controls> </xcon:controls>
</to-mixer> </xcon:to-mixer>
</media> </media>
<media id="2"> <media id="2">
<type>audio</type> <type>audio</type>
<label>10234</label> <label>10234</label>
<src-id>532535</src-id> <src-id>532535</src-id>
<status>sendrecv</status> <status>sendrecv</status>
<to-mixer name="VideoIn"> <xcon:to-mixer name="VideoIn">
<controls> <xcon:controls>
<gain>50</gain> <xcon:gain>50</xcon:gain>
</controls> </xcon:controls>
</to-mixer> </xcon:to-mixer>
<from-mixer name="VideoOut"> <xcon:from-mixer name="VideoOut">
<controls> <xcon:controls>
<gain>50</gain> <xcon:gain>50</xcon:gain>
</controls> </xcon:controls>
</from-mixer> </xcon:from-mixer>
</media> </media>
<floor id="345">false</floor>
<!-- <!--
CALL INFO CALL INFO
--> -->
<call-info> <call-info>
<sip> <sip>
<display-text>full info</display-text> <display-text>full info</display-text>
<call-id>wevb12562321894</call-id> <call-id>wevb12562321894</call-id>
<from-tag>asw456wedf</from-tag> <from-tag>asw456wedf</from-tag>
<to-tag>2365dfrt3497</to-tag> <to-tag>2365dfrt3497</to-tag>
</sip> </sip>
</call-info> </call-info>
<xcon:floor id="345">false</xcon:floor>
</endpoint> </endpoint>
<xcon:provide-anonymity>private</xcon:provide-anonymity>
<xcon:allow-refer-users-dynamically
>true</xcon:allow-refer-users-dynamically>
<xcon:allow-invite-users-dynamically
>true</xcon:allow-invite-users-dynamically>
<xcon:allow-remove-users-dynamically
>true</xcon:allow-remove-users-dynamically>
</user> </user>
<xcon:join-handling>allow</xcon:join-handling>
<xcon:user-admission-policy
>openAuthenticated</xcon:user-admission-policy>
<!--
ALLOWED USERS LIST
-->
<xcon:allowed-users-list>
<xcon:target uri="sip:bob@example.com"
method="dial-out"/>
<xcon:target uri="sip:alice@example.com"
method="dial-out"/>
<xcon:target uri="sip:carol@example.com"
method="dial-out"/>
<xcon:target uri="sip:john@example.com"
method="refer"/>
</xcon:allowed-users-list>
<!--
DENY USERS LIST
-->
<xcon:deny-users-list>
<xcon:target uri="sip:charlie@example.com"/>
</xcon:deny-users-list>
</users> </users>
<!-- <!--
SIDEBARS BY REFERENCE SIDEBARS BY REFERENCE
--> -->
<sidebars-by-ref> <sidebars-by-ref>
<entry> <entry>
<uri>conf223</uri> <uri>conf223</uri>
<display-text>private with Bob</display-text> <display-text>private with Bob</display-text>
</entry> </entry>
</sidebars-by-ref> </sidebars-by-ref>
skipping to change at page 47, line 12 skipping to change at page 48, line 41
SIDEBARS BY VALUE SIDEBARS BY VALUE
--> -->
<sidebars-by-val> <sidebars-by-val>
<entry entity="conf223"> <entry entity="conf223">
<users> <users>
<user entity="bob534"/> <user entity="bob534"/>
<user entity="carol233"/> <user entity="carol233"/>
</users> </users>
</entry> </entry>
</sidebars-by-val> </sidebars-by-val>
<!--
FLOOR INFORMATION
-->
<xcon:floor-information>
<xcon:conference-ID>567</xcon:conference-ID>
<xcon:allow-floor-events>true</xcon:allow-floor-events>
<xcon:floor-request-handling
>confirm</xcon:floor-request-handling>
<xcon:conference-floor-policy>
<xcon:floor id="345">
<xcon:media-label>10234</xcon:media-label>
<xcon:media-label>10235</xcon:media-label>
<xcon:algorithm
>moderator-controlled</xcon:algorithm>
<xcon:max-floor-users>1</xcon:max-floor-users>
<xcon:moderator-id>234</xcon:moderator-id>
</xcon:floor>
</xcon:conference-floor-policy>
</xcon:floor-information>
</conference-info> </conference-info>
Note that due to RFC formatting conventions, this documents splits Note that due to RFC formatting conventions, this documents splits
lines whose content would exceed 72 characters. Two backslash lines whose content would exceed 72 characters. Two backslash
characters mark where line folding has taken place. These characters mark where line folding has taken place. These
backslashes would not appear in the actual XML data model. backslashes would not appear in the actual XML data model.
8. Security Considerations 8. Security Considerations
There are numerous security considerations for this document. This There are numerous security considerations for this document. This
skipping to change at page 50, line 41 skipping to change at page 52, line 41
Comments: Comments:
Identifies the User in the conference Identifies the User in the conference
10. Acknowledgements 10. Acknowledgements
This document is really a distillation of many ideas discussed over a This document is really a distillation of many ideas discussed over a
long period of time. These ideas were contributed by many different long period of time. These ideas were contributed by many different
drafts in the XCON working group and the SIPPING working group. We drafts in the XCON working group and the SIPPING working group. We
would like to thank Orit Levin, Adam Roach, Mary Barnes, Chris would like to thank Orit Levin, Adam Roach, Mary Barnes, Chris
Boulton, Umesh Chandra, Hisham Khartabil, Petri Koskelainen, Aki Boulton, Umesh Chandra, Hisham Khartabil, Petri Koskelainen, Aki
Niemi, Jari Urpilainen, Rohan Mahy, Jonathan Lennox, and Henning Niemi, Rohan Mahy, Jonathan Lennox, and Henning Schulzrinne for their
Schulzrinne for their comments. Also, we would like to thank Mary comments. Also, we would like to thank Mary Barnes, and Chris
Barnes, and Chris Boulton for letting us use the conference and user Boulton for letting us use the conference and user identifier
identifier information of their xcon drafts. Last but not least, we information of their xcon drafts. Last but not least, we would like
would like to express our gratitude to all those reviewers for their to express our gratitude to all those reviewers for their invaluable
invaluable contribution: Simon Pietro Romano, Lorenzo Miniero, Tobia contribution: Simon Pietro Romano, Lorenzo Miniero, Tobia Castaldi,
Castaldi, Miguel Garcia, Mary Barnes, Srivatsa Srinivasan, Avshalom Miguel Garcia, Mary Barnes, Srivatsa Srinivasan, Avshalom Houri,
Houri, Pierre Tane, and Ben Campbell. Pierre Tane, and Ben Campbell.
11. References 11. References
11.1. Normative References 11.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, March 1997. Requirement Levels", BCP 14, RFC 2119, March 1997.
[RFC2445] Dawson, F. and Stenerson, D., "Internet Calendaring and [RFC2445] Dawson, F. and Stenerson, D., "Internet Calendaring and
Scheduling Core Object Specification (iCalendar)", Scheduling Core Object Specification (iCalendar)",
skipping to change at page 52, line 16 skipping to change at page 54, line 16
Session Initiation Protocol (SIP)", RFC 4353, Session Initiation Protocol (SIP)", RFC 4353,
February 2006. February 2006.
[RFC4855] Casner, S., "Media Type Registration of RTP Payload [RFC4855] Casner, S., "Media Type Registration of RTP Payload
Formats", RFC 4855, February 2007. Formats", RFC 4855, February 2007.
[RFC5018] Camarillo, G., "Connection Establishment in the Binary [RFC5018] Camarillo, G., "Connection Establishment in the Binary
Floor Control Protocol (BFCP)", RFC 5018, September 2007. Floor Control Protocol (BFCP)", RFC 5018, September 2007.
[W3C.REC-xml-20001006] [W3C.REC-xml-20001006]
Paoli, J., Bray, T., Maler, E., and C. Sperberg-McQueen, Bray, T., Paoli, J., Sperberg-McQueen, C., and E. Maler,
"Extensible Markup Language (XML) 1.0 (Second Edition)", "Extensible Markup Language (XML) 1.0 (Second Edition)",
World Wide Web Consortium FirstEdition REC-xml-20001006, World Wide Web Consortium FirstEdition REC-xml-20001006,
October 2000, October 2000,
<http://www.w3.org/TR/2000/REC-xml-20001006>. <http://www.w3.org/TR/2000/REC-xml-20001006>.
Appendix A. Non-Normative RELAX NG Schema in XML Syntax Appendix A. Non-Normative RELAX NG Schema in XML Syntax
<grammar ns="urn:ietf:params:xml:ns:xcon-conference-info" <?xml version="1.0" encoding="UTF-8" ?>
<grammar
ns="urn:ietf:params:xml:ns:conference-info"
xmlns="http://relaxng.org/ns/structure/1.0" xmlns="http://relaxng.org/ns/structure/1.0"
xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:xcon="urn:ietf:params:xml:ns:xcon-conference-info"
datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<start> <start>
<element name="conference-info"> <element name="conference-info">
<ref name="conference-type"/> <ref name="conference-type"/>
</element> </element>
</start> </start>
<!-- <!--
CONFERENCE TYPE CONFERENCE TYPE
--> -->
<define name="conference-type"> <define name="conference-type">
<interleave>
<attribute name="entity"> <attribute name="entity">
<text/> <text/>
</attribute> </attribute>
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
<ref name="conference-description-type"/>
<optional> <optional>
<element name="language"> <ref name="conference-description-type"/>
<data type="language"/>
</element>
</optional> </optional>
<optional> <optional>
<element name="host-info"> <element name="host-info">
<zeroOrMore> <ref name="host-type"/>
<ref name="conference-info-urn"/>
</zeroOrMore>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="conference-state"> <element name="conference-state">
<ref name="conference-state-type"/> <ref name="conference-state-type"/>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="floor-information">
<ref name="floor-information-type"/>
</element>
</optional>
<element name="users"> <element name="users">
<ref name="users-type"/> <ref name="users-type"/>
</element> </element>
</optional>
<optional> <optional>
<element name="sidebars-by-ref"> <element name="sidebars-by-ref">
<ref name="sidebars-by-ref-type"/> <ref name="uris-type"/>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="sidebars-by-val"> <element name="sidebars-by-val">
<ref name="sidebars-by-val-type"/> <ref name="sidebars-by-val-type"/>
</element> </element>
</optional> </optional>
<optional>
<element name="xcon:floor-information">
<ref name="floor-information-type"/>
</element>
</optional>
<zeroOrMore> <zeroOrMore>
<ref name="anyElement"/> <ref name="anyElement"/>
</zeroOrMore> </zeroOrMore>
</interleave>
</define> </define>
<!-- <!--
CONFERENCE DESCRIPTION TYPE CONFERENCE DESCRIPTION TYPE
--> -->
<define name="conference-description-type"> <define name="conference-description-type">
<element name="conference-description"> <element name="conference-description">
<interleave>
<optional> <optional>
<attribute name="lang"> <attribute name="xml:lang">
<data type="language"/> <data type="language"/>
</attribute> </attribute>
</optional> </optional>
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
<optional> <optional>
<element name="display-text"> <element name="display-text">
<text/> <text/>
</element> </element>
</optional> </optional>
<optional> <optional>
skipping to change at page 54, line 21 skipping to change at page 56, line 23
<optional> <optional>
<element name="keywords"> <element name="keywords">
<list> <list>
<zeroOrMore> <zeroOrMore>
<data type="string"/> <data type="string"/>
</zeroOrMore> </zeroOrMore>
</list> </list>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="allow-sidebars"> <element name="conf-uris">
<ref name="uris-type"/>
</element>
</optional>
<optional>
<element name="service-uris">
<ref name="uris-type"/>
</element>
</optional>
<optional>
<element name="maximum-user-count">
<data type="int"/>
</element>
</optional>
<optional>
<element name="available-media">
<ref name="conference-media-type"/>
</element>
</optional>
<optional>
<element name="xcon:language">
<data type="language"/>
</element>
</optional>
<optional>
<element name="xcon:allow-sidebars">
<data type="boolean"/> <data type="boolean"/>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="conference-time"> <element name="xcon:conference-time">
<ref name="conferencetime-type"/> <ref name="conferencetime-type"/>
</element> </element>
</optional> </optional>
<optional>
<element name="conf-uris">
<zeroOrMore> <zeroOrMore>
<zeroOrMore> <ref name="anyElement"/>
<element name="conference-password"> </zeroOrMore>
</interleave>
</element>
</define>
<!--
HOST TYPE
-->
<define name="host-type">
<interleave>
<optional>
<element name="display-text">
<text/> <text/>
</element> </element>
</zeroOrMore> </optional>
<ref name="conference-info-urn"/> <optional>
</zeroOrMore> <element name="web-page">
<data type="anyURI"/>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="service-uris"> <element name="uris">
<ref name="uris-type"/>
</element>
</optional>
<zeroOrMore> <zeroOrMore>
<ref name="conference-info-urn"/> <ref name="anyElement"/>
</zeroOrMore> </zeroOrMore>
<ref name="anyAttribute"/>
</interleave>
</define>
<!--
CONFERENCE STATE TYPE
-->
<define name="conference-state-type">
<interleave>
<ref name="anyAttribute"/>
<optional>
<element name="user-count">
<data type="unsignedInt"/>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="maximum-user-count"> <element name="active">
<data type="int"/> <data type="boolean"/>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="available-media"> <element name="locked">
<ref name="conference-media-type"/> <data type="boolean"/>
</element> </element>
</optional> </optional>
<optional>
<element name="xcon:allow-conference-event-subscription">
<data type="boolean"/>
</element>
</optional>
<zeroOrMore>
<ref name="anyElement"/>
</zeroOrMore>
</interleave>
</define>
<!--
CONFERENCE MEDIA TYPE
-->
<define name="conference-media-type">
<interleave>
<ref name="anyAttribute"/>
<zeroOrMore>
<element name="entry">
<ref name="conference-medium-type"/>
</element>
</zeroOrMore>
<zeroOrMore> <zeroOrMore>
<ref name="anyElement"/> <ref name="anyElement"/>
</zeroOrMore> </zeroOrMore>
</interleave>
</define>
<!--
CONFERENCE MEDIUM TYPE
-->
<define name="conference-medium-type">
<interleave>
<attribute name="label">
<text/>
</attribute>
<ref name="anyAttribute"/>
<optional>
<element name="display-text">
<text/>
</element>
</optional>
<optional>
<element name="type">
<text/>
</element>
</optional>
<optional>
<element name="status">
<ref name="media-status-type"/>
</element>
</optional>
<optional>
<element name="xcon:mixing-mode">
<ref name="mixing-mode-type"/>
</element>
</optional>
<optional>
<element name="xcon:codecs">
<ref name="codecs-type"/>
</element> </element>
</optional>
<optional>
<element name="xcon:controls">
<ref name="control-type"/>
</element>
</optional>
<zeroOrMore>
<ref name="anyElement"/>
</zeroOrMore>
</interleave>
</define> </define>
<!-- <!--
CONFERENCE TIME URIs TYPE
--> -->
<define name="conferencetime-type"> <define name="uris-type">
<interleave>
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
<zeroOrMore> <zeroOrMore>
<element name="entry"> <element name="entry">
<ref name="uri-type"/>
</element>
</zeroOrMore>
<zeroOrMore>
<ref name="anyElement"/>
</zeroOrMore>
</interleave>
</define>
<!--
URI TYPE
-->
<define name="uri-type">
<interleave>
<element name="uri">
<data type="anyURI"/>
</element>
<optional> <optional>
<element name="base"> <element name="display-text">
<text/> <text/>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="mixing-start-offset"> <element name="purpose">
<data type="dateTime"> <text/>
<param name="pattern">.+T.+Z.*</param> </element>
</data> </optional>
<attribute name="required-participant"> <optional>
<ref name="single-role-type"/> <element name="modified">
</attribute> <ref name="execution-type"/>
</element>
</optional>
<optional>
<element name="xcon:conference-password">
<text/>
</element>
</optional>
<zeroOrMore>
<ref name="anyElement"/>
</zeroOrMore>
<ref name="anyAttribute"/>
</interleave>
</define>
<!--
USERS TYPE
-->
<define name="users-type">
<interleave>
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
<zeroOrMore>
<element name="user">
<ref name="user-type"/>
</element>
</zeroOrMore>
<optional>
<element name="xcon:join-handling">
<ref name="join-handling-type"/>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="mixing-end-offset"> <element name="xcon:user-admission-policy">
<data type="dateTime"> <ref name="user-admission-policy-type"/>
<param name="pattern">.+T.+Z.*</param> </element>
</data> </optional>
<attribute name="required-participant"> <optional>
<ref name="single-role-type"/> <element name="xcon:allowed-users-list">
<ref name="allowed-users-list-type"/>
</element>
</optional>
<optional>
<element name="xcon:deny-users-list">
<ref name="deny-user-list-type"/>
</element>
</optional>
<zeroOrMore>
<ref name="anyElement"/>
</zeroOrMore>
</interleave>
</define>
<!--
USER TYPE
-->
<define name="user-type">
<interleave>
<attribute name="entity">
<data type="anyURI"/>
</attribute> </attribute>
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
<optional>
<element name="display-text">
<text/>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="can-join-after-offset"> <element name="associated-aors">
<data type="dateTime"> <ref name="uris-type"/>
<param name="pattern">.+T.+Z.*</param>
</data>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="must-join-before-offset"> <element name="roles">
<data type="dateTime"> <oneOrMore>
<param name="pattern">.+T.+Z.*</param> <element name="entry">
</data> <ref name="single-role-type"/>
</element>
</oneOrMore>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="notify-end-of-conference"> <element name="languages">
<data type="int"/> <list>
<data type="language"/>
</list>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="allowed-extend-mixing-end-offset"> <element name="cascaded-focus">
<data type="anyURI"/>
</element>
</optional>
<zeroOrMore>
<element name="endpoint">
<ref name="endpoint-type"/>
</element>
</zeroOrMore>
<optional>
<element name="xcon:provide-anonymity">
<ref name="provide-anonymity-type"/>
</element>
</optional>
<optional>
<element name="xcon:allow-refer-users-dynamically">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="xcon:allow-invite-users-dynamically">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="xcon:allow-remove-users-dynamically">
<data type="boolean"/> <data type="boolean"/>
</element> </element>
</optional> </optional>
<zeroOrMore> <zeroOrMore>
<ref name="anyElement"/> <ref name="anyElement"/>
</zeroOrMore> </zeroOrMore>
</interleave>
</define>
<!--
ENDPOINT TYPE
-->
<define name="endpoint-type">
<interleave>
<attribute name="entity">
<text/>
</attribute>
<ref name="anyAttribute"/>
<optional>
<element name="display-text">
<text/>
</element>
</optional>
<optional>
<element name="referred">
<ref name="execution-type"/>
</element>
</optional>
<optional>
<element name="status">
<ref name="endpoint-status-type"/>
</element>
</optional>
<optional>
<element name="joining-method">
<ref name="joining-type"/>
</element>
</optional>
<optional>
<element name="joining-info">
<ref name="execution-type"/>
</element>
</optional>
<optional>
<element name="disconnection-method">
<ref name="disconnection-type"/>
</element>
</optional>
<optional>
<element name="disconnection-info">
<ref name="execution-type"/>
</element>
</optional>
<zeroOrMore>
<element name="media">
<ref name="media-type"/>
</element>
</zeroOrMore>
<optional>
<element name="call-info">
<ref name="call-type"/>
</element>
</optional>
<zeroOrMore>
<element name="xcon:floor">
<attribute name="id">
<text/>
</attribute>
<ref name="anyAttribute"/>
<data type="boolean"/>
</element> </element>
</zeroOrMore> </zeroOrMore>
<zeroOrMore> <zeroOrMore>
<ref name="anyElement"/> <ref name="anyElement"/>
</zeroOrMore> </zeroOrMore>
</interleave>
</define> </define>
<!-- <!--
CONFERENCE MEDIA TYPE ENDPOINT STATUS TYPE
--> -->
<define name="conference-media-type"> <define name="endpoint-status-type">
<choice>
<value>pending</value>
<value>dialing-out</value>
<value>dialing-in</value>
<value>alerting</value>
<value>on-hold</value>
<value>connected</value>
<value>muted-via-focus</value>
<value>disconnecting</value>
<value>disconnected</value>
<ref name="free-text-extension"/>
</choice>
</define>
<!--
JOINING TYPE
-->
<define name="joining-type">
<choice>
<value>dialed-in</value>
<value>dialed-out</value>
<value>focus-owner</value>
<ref name="free-text-extension"/>
</choice>
</define>
<!--
DISCONNECTION TYPE
-->
<define name="disconnection-type">
<choice>
<value>departed</value>
<value>booted</value>
<value>failed</value>
<value>busy</value>
<ref name="free-text-extension"/>
</choice>
</define>
<!--
EXECUTION TYPE
-->
<define name="execution-type">
<interleave>
<optional>
<element name="when">
<data type="dateTime"/>
</element>
</optional>
<optional>
<element name="reason">
<text/>
</element>
</optional>
<optional>
<element name="by">
<data type="anyURI"/>
</element>
</optional>
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
<zeroOrMore> </interleave>
<element name="entry"> </define>
<ref name="conference-medium-type"/> <!--
CALL TYPE
-->
<define name="call-type">
<interleave>
<element name="sip">
<ref name="sip-dialog-id-type"/>
</element> </element>
</zeroOrMore>
<zeroOrMore> <zeroOrMore>
<ref name="anyElement"/> <ref name="anyElement"/>
</zeroOrMore> </zeroOrMore>
<ref name="anyAttribute"/>
</interleave>
</define> </define>
<!-- <!--
CONFERENCE MEDIUM TYPE SIP DIALOG ID TYPE
--> -->
<define name="conference-medium-type"> <define name="sip-dialog-id-type">
<attribute name="label"> <interleave>
<optional>
<element name="display-text">
<text/> <text/>
</element>
</optional>
<element name="call-id">
<text/>
</element>
<element name="from-tag">
<text/>
</element>
<element name="to-tag">
<text/>
</element>
<zeroOrMore>
<ref name="anyElement"/>
</zeroOrMore>
<ref name="anyAttribute"/>
</interleave>
</define>
<!--
MEDIA TYPE
-->
<define name="media-type">
<interleave>
<attribute name="id">
<data type="int"/>
</attribute> </attribute>
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
<optional> <optional>
<element name="display-text"> <element name="display-text">
<text/> <text/>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="type"> <element name="type">
<text/> <text/>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="label">
<text/>
</element>
</optional>
<optional>
<element name="src-id">
<text/>
</element>
</optional>
<optional>
<element name="status"> <element name="status">
<ref name="media-status-type"/> <ref name="media-status-type"/>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="mixing-mode"> <element name="xcon:to-mixer">
<ref name="mix-mode-type"/> <ref name="mixer-type"/>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="codecs"> <element name="xcon:from-mixer">
<ref name="codecs-type"/> <ref name="mixer-type"/>
</element> </element>
</optional> </optional>
<zeroOrMore>
<ref name="anyElement"/>
</zeroOrMore>
</interleave>
</define>
<!--
MEDIA STATUS TYPE
-->
<define name="media-status-type">
<choice>
<value>recvonly</value>
<value>sendonly</value>
<value>sendrecv</value>
<value>inactive</value>
<ref name="free-text-extension"/>
</choice>
</define>
<!--
SIDEBARS-BY-VAL TYPE
-->
<define name="sidebars-by-val-type">
<interleave>
<ref name="anyAttribute"/>
<zeroOrMore>
<element name="entry">
<ref name="conference-type"/>
</element>
</zeroOrMore>
<zeroOrMore>
<ref name="anyElement"/>
</zeroOrMore>
</interleave>
</define>
<!--
CONFERENCE TIME
-->
<define name="conferencetime-type">
<interleave>
<ref name="anyAttribute"/>
<zeroOrMore>
<element name="xcon:entry">
<element name="xcon:base">
<text/>
</element>
<optional> <optional>
<element name="controls"> <element name="xcon:mixing-start-offset">
<ref name="control-type"/> <ref name="time-type"/>
<attribute name="required-participant">
<ref name="single-role-type"/>
</attribute>
<ref name="anyAttribute"/>
</element>
</optional>
<optional>
<element name="xcon:mixing-end-offset">
<ref name="time-type"/>
<attribute name="required-participant">
<ref name="single-role-type"/>
</attribute>
<ref name="anyAttribute"/>
</element>
</optional>
<optional>
<element name="xcon:can-join-after-offset">
<ref name="time-type"/>
</element>
</optional>
<optional>
<element name="xcon:must-join-before-offset">
<ref name="time-type"/>
</element>
</optional>
<optional>
<element name="xcon:request-user">
<ref name="time-type"/>
</element>
</optional>
<optional>
<element name="xcon:notify-end-of-conference">
<data type="int"/>
</element>
</optional>
<optional>
<element name="xcon:allowed-extend-mixing-end-offset">
<data type="boolean"/>
</element> </element>
</optional> </optional>
<zeroOrMore> <zeroOrMore>
<ref name="anyElement"/> <ref name="anyElement"/>
</zeroOrMore> </zeroOrMore>
</element>
</zeroOrMore>
</interleave>
</define> </define>
<!-- <!--
MIX MODE TYPE TIME TYPE
--> -->
<define name="mix-mode-type"> <define name="time-type">
<data type="dateTime">
<param name="pattern">.+T.+Z.*</param>
</data>
</define>
<!--
SINGLE ROLE TYPE
-->
<define name="single-role-type">
<choice>
<value type="string">none</value>
<value type="string">administrator</value>
<value type="string">moderator</value>
<value type="string">user</value>
<value type="string">observer</value>
<value type="string">participant</value>
<ref name="free-text-extension"/>
</choice>
</define>
<!--
MIXING MODE TYPE
-->
<define name="mixing-mode-type">
<choice> <choice>
<value type="string">moderator-controlled</value> <value type="string">moderator-controlled</value>
<value type="string">FCFS</value> <value type="string">FCFS</value>
<value type="string">automatic</value> <value type="string">automatic</value>
<text/> <ref name="free-text-extension"/>
</choice> </choice>
</define> </define>
<!-- <!--
CODECS TYPE CODECS TYPE
--> -->
<define name="codecs-type"> <define name="codecs-type">
<interleave>
<attribute name="decision"> <attribute name="decision">
<ref name="decision-type"/> <ref name="decision-type"/>
</attribute> </attribute>
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
<zeroOrMore> <zeroOrMore>
<element name="codec"> <element name="xcon:codec">
<ref name="codec-type"/> <ref name="codec-type"/>
</element> </element>
</zeroOrMore> </zeroOrMore>
<zeroOrMore> <zeroOrMore>
<ref name="anyElement"/> <ref name="anyElement"/>
</zeroOrMore> </zeroOrMore>
</interleave>
</define> </define>
<!-- <!--
CODEC TYPE CODEC TYPE
--> -->
<define name="codec-type"> <define name="codec-type">
<interleave>
<attribute name="name"> <attribute name="name">
<text/> <text/>
</attribute> </attribute>
<attribute name="policy"> <attribute name="policy">
<ref name="policy-type"/> <ref name="policy-type"/>
</attribute> </attribute>
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
<optional> <optional>
<element name="subtype"> <element name="xcon:subtype">
<text/> <text/>
</element> </element>
</optional> </optional>
<zeroOrMore> <zeroOrMore>
<ref name="conference-info-urn"/> <ref name="anyElement"/>
</zeroOrMore> </zeroOrMore>
</interleave>
</define> </define>
<!-- <!--
DECISION TYPE DECISION TYPE
--> -->
<define name="decision-type"> <define name="decision-type">
<choice> <choice>
<value type="string">automatic</value> <value type="string">automatic</value>
<value type="string">moderator-controlled</value> <value type="string">moderator-controlled</value>
<text/> <ref name="free-text-extension"/>
</choice> </choice>
</define> </define>
<!-- <!--
POLICY TYPE POLICY TYPE
--> -->
<define name="policy-type"> <define name="policy-type">
<choice> <choice>
<value type="string">allowed</value> <value type="string">allowed</value>
<value type="string">disallowed</value> <value type="string">disallowed</value>
<text/> <ref name="free-text-extension"/>
</choice> </choice>
</define> </define>
<!-- <!--
CONTROL TYPE CONTROL TYPE
--> -->
<define name="control-type"> <define name="control-type">
<interleave>
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
<zeroOrMore> <optional>
<element name="mute"> <element name="xcon:mute">
<data type="boolean"/> <data type="boolean"/>
</element> </element>
<element name="pause-video"> </optional>
<optional>
<element name="xcon:pause-video">
<data type="boolean"/> <data type="boolean"/>
</element> </element>
<element name="gain"> </optional>
<optional>
<element name="xcon:gain">
<ref name="gain-type"/>
</element>
</optional>
<optional>
<element name="xcon:video-layout">
<ref name="video-layout-type"/>
</element>
</optional>
<zeroOrMore>
<ref name="anyElement"/>
</zeroOrMore>
</interleave>
</define>
<!--
GAIN TYPE
-->
<define name="gain-type">
<data type="int"> <data type="int">
<param name="minInclusive">-127</param> <param name="minInclusive">-127</param>
<param name="maxInclusive">127</param> <param name="maxInclusive">127</param>
</data> </data>
</element> </define>
<element name="video-layout"> <!--
VIDEO LAYOUT TYPE
-->
<define name="video-layout-type">
<choice> <choice>
<value type="string">single-view</value> <value type="string">single-view</value>
<value type="string">dual-view</value> <value type="string">dual-view</value>
<value type="string">dual-view-crop</value> <value type="string">dual-view-crop</value>
<value type="string">dual-view-2x1</value> <value type="string">dual-view-2x1</value>
<value type="string">dual-view-2x1-crop</value> <value type="string">dual-view-2x1-crop</value>
<value type="string">quad-view</value> <value type="string">quad-view</value>
<value type="string">multiple-3x3</value> <value type="string">multiple-3x3</value>
<value type="string">multiple-4x4</value> <value type="string">multiple-4x4</value>
<value type="string">multiple-5x1</value> <value type="string">multiple-5x1</value>
<value type="string">automatic</value> <value type="string">automatic</value>
<text/> <ref name="free-text-extension"/>
</choice> </choice>
</element>
<zeroOrMore>
<ref name="anyElement"/>
</zeroOrMore>
</zeroOrMore>
</define> </define>
<!-- <!--
CONFERENCE STATE TYPE FLOOR INFORMATION TYPE
--> -->
<define name="conference-state-type"> <define name="floor-information-type">
<interleave>
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
<optional> <optional>
<element name="allow-conference-event-subscription"> <element name="xcon:conference-ID">
<data type="boolean"/> <data type="unsignedLong"/>
</element>
</optional>
<optional>
<element name="user-count">
<data type="unsignedInt"/>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="active"> <element name="xcon:allow-floor-events">
<data type="boolean"/> <data type="boolean"/>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="locked"> <element name="xcon:floor-request-handling">
<data type="boolean"/>
</element>
</optional>
<zeroOrMore>
<ref name="anyElement"/>
</zeroOrMore>
</define>
<!--
FLOOR INFORMATION TYPE
-->
<define name="floor-information-type">
<ref name="anyAttribute"/>
<zeroOrMore>
<element name="conference-ID">
<data type="unsignedLong"/>
</element>
<element name="allow-floor-events">
<data type="boolean"/>
</element>
<element name="floor-request-handling">
<ref name="floor-request-type"/> <ref name="floor-request-type"/>
</element> </element>
<element name="conference-floor-policy"> </optional>
<optional>
<element name="xcon:conference-floor-policy">
<ref name="conference-floor-policy"/> <ref name="conference-floor-policy"/>
</element> </element>
</optional>
<zeroOrMore> <zeroOrMore>
<ref name="anyElement"/> <ref name="anyElement"/>
</zeroOrMore> </zeroOrMore>
</zeroOrMore> </interleave>
</define> </define>
<!-- <!--
FLOOR REQUEST TYPE FLOOR REQUEST TYPE
--> -->
<define name="floor-request-type"> <define name="floor-request-type">
<choice> <choice>
<value type="string">block</value> <value type="string">block</value>
<value type="string">confirm</value> <value type="string">confirm</value>
<text/> <ref name="free-text-extension"/>
</choice> </choice>
</define> </define>
<!-- <!--
CONFERENCE FLOOR POLICY CONFERENCE FLOOR POLICY
--> -->
<define name="conference-floor-policy"> <define name="conference-floor-policy">
<interleave>
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
<oneOrMore> <oneOrMore>
<element name="floor"> <element name="xcon:floor">
<interleave>
<attribute name="id"> <attribute name="id">
<text/> <text/>
</attribute> </attribute>
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
<oneOrMore> <oneOrMore>
<element name="media-label"> <element name="xcon:media-label">
<data type="nonNegativeInteger"/>
</element>
</oneOrMore>
<zeroOrMore>
<element name="algorithm">
<choice>
<value type="string">moderator-controlled</value>
<value type="string">FCFS</value>
<value type="string">random</value>
<text/>
</choice>
</element>
<element name="max-floor-users">
<data type="nonNegativeInteger"/> <data type="nonNegativeInteger"/>
</element> </element>
<zeroOrMore>
<element name="moderator-id">
<text/>
</element>
</zeroOrMore>
<zeroOrMore>
<ref name="anyElement"/>
</zeroOrMore>
</zeroOrMore>
</element>
</oneOrMore> </oneOrMore>
</define>
<!--
USERS TYPE
-->
<define name="users-type">
<ref name="anyAttribute"/>
<optional>
<element name="join-handling">
<ref name="join-handling-type"/>
</element>
</optional>
<optional> <optional>
<element name="user-admission-policy"> <element name="xcon:algorithm">
<ref name="user-admission-policy-type"/> <ref name="algorithm-type"/>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="allowed-users-list"> <element name="xcon:max-floor-users">
<ref name="UserList"/> <data type="nonNegativeInteger"/>
</element> </element>
</optional> </optional>
<optional> <optional>
<element name="deny-users-list"> <element name="xcon:moderator-id">
<ref name="deny-user-list"/> <data type="nonNegativeInteger"/>
</element> </element>
</optional> </optional>
<zeroOrMore> <zeroOrMore>
<element name="user">
<ref name="user-type"/>
</element>
</zeroOrMore>
<zeroOrMore>
<ref name="anyElement"/> <ref name="anyElement"/>
</zeroOrMore> </zeroOrMore>
</interleave>
</element>
</oneOrMore>
</interleave>
</define>
<!--
ALGORITHM POLICY
-->
<define name="algorithm-type">
<choice>
<value type="string">moderator-controlled</value>
<value type="string">FCFS</value>
<value type="string">random</value>
<ref name="free-text-extension"/>
</choice>
</define> </define>
<!-- <!--
USERS ADMISSION POLICY USERS ADMISSION POLICY
--> -->
<define name="user-admission-policy-type"> <define name="user-admission-policy-type">
<choice> <choice>
<value type="string">closedAuthenticated</value> <value type="string">closedAuthenticated</value>
<value type="string">openAuthenticated</value> <value type="string">openAuthenticated</value>
<value type="string">anonymous</value> <value type="string">anonymous</value>
<text/> <ref name="free-text-extension"/>
</choice> </choice>
</define> </define>
<!-- <!--
JOIN HANDLING TYPE JOIN HANDLING TYPE
--> -->
<define name="join-handling-type"> <define name="join-handling-type">
<choice> <choice>
<value type="string">block</value> <value type="string">block</value>
<value type="string">confirm</value> <value type="string">confirm</value>
<value type="string">allow</value> <value type="string">allow</value>
<value type="string">authenticate</value> <value type="string">authenticate</value>
<value type="string">directed-operator</value> <value type="string">directed-operator</value>
<text/> <ref name="free-text-extension"/>
</choice> </choice>
</define> </define>
<!-- <!--
DENYUSERLIST DENYUSERLIST
--> -->
<define name="deny-user-list"> <define name="deny-user-list-type">
<interleave>
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
<zeroOrMore> <zeroOrMore>
<element name="target"> <element name="xcon:target">
<attribute name="uri"> <attribute name="uri">
<data type="anyURI"/> <data type="anyURI"/>
</attribute> </attribute>
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
</element> </element>
</zeroOrMore> </zeroOrMore>
<zeroOrMore> <zeroOrMore>
<ref name="anyElement"/> <ref name="anyElement"/>
</zeroOrMore> </zeroOrMore>
</interleave>
</define> </define>
<!-- <!--
USERLIST ALLOWED USERS LIST TYPE
--> -->
<define name="UserList"> <define name="allowed-users-list-type">
<interleave>
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
<zeroOrMore> <zeroOrMore>
<element name="target"> <element name="xcon:target">
<ref name="target-type"/> <ref name="target-type"/>
</element> </element>
</zeroOrMore> </zeroOrMore>
<optional>
<element name="xcon:persistent-list">
<ref name="persistent-list-type"/>
</element>
</optional>
<zeroOrMore> <zeroOrMore>
<ref name="anyElement"/> <ref name="anyElement"/>
</zeroOrMore> </zeroOrMore>
<optional> </interleave>
<element name="persistent-list"> </define>
<!--
PERSISTENT LIST TYPE
-->
<define name="persistent-list-type">
<interleave>
<zeroOrMore> <zeroOrMore>
<element name="user"> <element name="xcon:user">
<interleave>
<attribute name="name"> <attribute name="name">
<text/> <text/>
</attribute> </attribute>
<attribute name="nickname"> <attribute name="nickname">
<text/> <text/>
</attribute> </attribute>
<attribute name="id"> <attribute name="id">
<text/> <text/>
</attribute> </attribute>
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
<zeroOrMore> <zeroOrMore>
<element name="e-mail"> <element name="xcon:e-mail">
<text/> <text/>
</element> </element>
</zeroOrMore> </zeroOrMore>
<zeroOrMore>
<ref name="anyElement"/>
</zeroOrMore>
</interleave>
</element> </element>
</zeroOrMore> </zeroOrMore>
<zeroOrMore>
<ref name="anyElement"/> <ref name="anyElement"/>
</element> </zeroOrMore>
</optional> </interleave>
</define> </define>
<!-- <!--
TARGET TYPE TARGET TYPE
--> -->
<define name="target-type"> <define name="target-type">
<attribute name="uri"> <attribute name="uri">
<data type="anyURI"/> <data type="anyURI"/>
</attribute> </attribute>
<attribute name="method"> <attribute name="method">
<ref name="method-type"/> <ref name="method-type"/>
skipping to change at page 65, line 6 skipping to change at page 76, line 48
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
</define> </define>
<!-- <!--
METHOD TYPE METHOD TYPE
--> -->
<define name="method-type"> <define name="method-type">
<choice> <choice>
<value type="string">dial-in</value> <value type="string">dial-in</value>
<value type="string">dial-out</value> <value type="string">dial-out</value>
<value type="string">refer</value> <value type="string">refer</value>
<text/> <ref name="free-text-extension"/>
</choice> </choice>
</define> </define>
<!-- <!--
USER TYPE ANONYMITY TYPE
--> -->
<define name="user-type"> <define name="provide-anonymity-type">
<attribute name="entity">
<data type="anyURI"/>
</attribute>
<ref name="anyAttribute"/>
<optional>
<element name="display-text">
<text/>
</element>
</optional>
<optional>
<element name="associated-aors">
<zeroOrMore>
<ref name="conference-info-urn"/>
</zeroOrMore>
</element>
</optional>
<optional>
<element name="provide-anonymity">
<choice> <choice>
<value>private</value> <value>private</value>
<value>semi-private</value> <value>semi-private</value>
<value>hidden</value> <value>hidden</value>
<text/> <ref name="free-text-extension"/>
</choice> </choice>
</element>
</optional>
<optional>
<element name="roles">
<ref name="single-role-type"/>
</element>
</optional>
<optional>
<element name="languages">
<list>
<data type="language"/>
</list>
</element>
</optional>
<optional>
<element name="cascaded-focus">
<data type="anyURI"/>
</element>
</optional>
<optional>
<element name="allow-refer-users-dynamically">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="allow-invite-users-dynamically">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="allow-remove-users-dynamically">
<data type="boolean"/>
</element>
</optional>
<zeroOrMore>
<element name="endpoint">
<ref name="endpoint-type"/>
</element>
</zeroOrMore>
<zeroOrMore>
<ref name="anyElement"/>
</zeroOrMore>
</define>
<!--
ENDPOINT TYPE
-->
<define name="endpoint-type">
<attribute name="entity">
<text/>
</attribute>
<ref name="anyAttribute"/>
<optional>
<element name="display-text">
<text/>
</element>
</optional>
<optional>
<element name="referred">
<zeroOrMore>
<ref name="conference-info-urn"/>
</zeroOrMore>
</element>
</optional>
<optional>
<element name="status">
<ref name="endpoint-status-type"/>
</element>
</optional>
<optional>
<element name="joining-method">
<ref name="joining-type"/>
</element>
</optional>
<optional>
<element name="joining-info">
<zeroOrMore>
<ref name="conference-info-urn"/>
</zeroOrMore>
</element>
</optional>
<optional>
<element name="disconnection-method">
<ref name="disconnection-type"/>
</element>
</optional>
<optional>
<element name="disconnection-info">
<zeroOrMore>
<ref name="conference-info-urn"/>
</zeroOrMore>
</element>
</optional>
<zeroOrMore>
<element name="media">
<ref name="media-type"/>
</element>
</zeroOrMore>
<zeroOrMore>
<element name="floor">
<attribute name="id">
<text/>
</attribute>
<ref name="anyAttribute"/>
<data type="boolean"/>
</element>
</zeroOrMore>
<optional>
<element name="call-info">
<zeroOrMore>
<ref name="conference-info-urn"/>
</zeroOrMore>
</element>
</optional>
<zeroOrMore>
<ref name="anyElement"/>
</zeroOrMore>
</define>
<!--
MEDIA TYPE
-->
<define name="media-type">
<attribute name="id">
<data type="int"/>
</attribute>
<ref name="anyAttribute"/>
<optional>
<element name="display-text">
<text/>
</element>
</optional>
<optional>
<element name="type">
<text/>
</element>
</optional>
<optional>
<element name="label">
<text/>
</element>
</optional>
<optional>
<element name="src-id">
<text/>
</element>
</optional>
<optional>
<element name="status">
<ref name="media-status-type"/>
</element>
</optional>
<optional>
<element name="to-mixer">
<ref name="mixer-type"/>
</element>
</optional>
<optional>
<element name="from-mixer">
<ref name="mixer-type"/>
</element>
</optional>
<zeroOrMore>
<ref name="anyElement"/>
</zeroOrMore>
</define> </define>
<!-- <!--
MIXER TYPE MIXER TYPE
--> -->
<define name="mixer-type"> <define name="mixer-type">
<interleave>
<attribute name="name">
<ref name="mixer-name-type"/>
</attribute>
<ref name="anyAttribute"/> <ref name="anyAttribute"/>
<optional>
<element name="controls">
<ref name="control-type"/>
</element>
</optional>
<zeroOrMore>
<ref name="anyElement"/>
</zeroOrMore>
</define>
<!--
SIDEBARS-BY-REF TYPE
-->
<define name="sidebars-by-ref-type">
<ref name="anyAttribute"/>
<zeroOrMore>
<element name="entry">
<zeroOrMore> <zeroOrMore>
<ref name="conference-info-urn"/> <element name="xcon:controls">
</zeroOrMore> <ref name="control-type"/>
</element> </element>
</zeroOrMore> </zeroOrMore>
<zeroOrMore> <zeroOrMore>
<ref name="anyElement"/> <ref name="anyElement"/>
</zeroOrMore> </zeroOrMore>
</interleave>
</define> </define>
<!-- <!--
SIDEBARS-BY-VAL TYPE MIXER NAME TYPE
--> -->
<define name="sidebars-by-val-type"> <define name="mixer-name-type">
<ref name="anyAttribute"/> <choice>
<zeroOrMore> <value>VideoIn</value>
<element name="entry"> <value>VideoOut</value>
<ref name="conference-type"/> <value>AudioOut</value>
</element> <value>AudioIn</value>
</zeroOrMore> <ref name="free-text-extension"/>
<zeroOrMore> </choice>
<ref name="anyElement"/>
</zeroOrMore>
</define> </define>
<!-- <!--
SINGLE ROLE TYPE FREE TEXT EXTENSION
(re-define this as <notAllowed>,
if extensions beyond this spec are not used)
--> -->
<define name="single-role-type"> <define name="free-text-extension">
<choice>
<value type="string">administrator</value>
<value type="string">moderator</value>
<value type="string">user</value>
<value type="string">participant</value>
<value type="string">observer</value>
<value type="string">none</value>
<text/> <text/>
</choice>
</define> </define>
<!-- <!--
********************************* *********************************
EXTENSIBILITY OF THE SCHEMA EXTENSIBILITY OF THE SCHEMA
********************************* *********************************
--> -->
<!-- <!--
EXTENSIBILITY ELEMENTS EXTENSIBILITY ELEMENTS
(re-define this as <empty/>,
if extensions beyond this spec are not used)
--> -->
<define name="anyElement"> <define name="anyElement">
<element> <element>
<anyName>
<except>
<name>conference-description</name>
<name>host-info</name>
<name>conference-state</name>
<name>users</name>
<name>sidebars-by-ref</name>
<name>sidebars-by-val</name>
<name>display-text</name>
<name>subject</name>
<name>free-text</name>
<name>keywords</name>
<name>conf-uris</name>
<name>service-uris</name>
<name>maximum-user-count</name>
<name>available-media</name>
<name>web-page</name>
<name>uris</name>
<name>uri</name>
<name>user-count</name>
<name>active</name>
<name>locked</name>
<name>entry</name>
<name>type</name>
<name>status</name>
<name>purpose</name>
<name>modified</name>
<name>user</name>
<name>associated-aors</name>
<name>roles</name>
<name>languages</name>
<name>cascaded-focus</name>
<name>endpoint</name>
<name>referred</name>
<name>joining-method</name>
<name>joining-info</name>
<name>disconnection-method</name>
<name>disconnection-info</name>
<name>media</name>
<name>call-info</name>
<name>when</name>
<name>reason</name>
<name>by</name>
<name>sip</name>
<name>call-id</name>
<name>from-tag</name>
<name>to-tag</name>
<name>label</name>
<name>src-id</name>
<name>xcon:conference-password</name>
<name>xcon:mixing-mode</name>
<name>xcon:codecs</name>
<name>xcon:controls</name>
<name>xcon:language</name>
<name>xcon:allow-sidebars</name>
<name>xcon:allow-conference-event-subscription</name>
<name>xcon:to-mixer</name>
<name>xcon:provide-anonymity</name>
<name>xcon:allow-refer-users-dynamically</name>
<name>xcon:allow-invite-users-dynamically</name>
<name>xcon:allow-remove-users-dynamically</name>
<name>xcon:from-mixer</name>
<name>xcon:join-handling</name>
<name>xcon:user-admission-policy</name>
<name>xcon:allowed-users-list</name>
<name>xcon:deny-users-list</name>
<name>xcon:floor-information</name>
<name>xcon:conference-time</name>
<name>xcon:provide-anonymity</name>
<name>xcon:floor</name>
<name>xcon:entry</name>
<name>xcon:mixing-start-offset</name>
<name>xcon:mixing-end-offset</name>
<name>xcon:can-join-after-offset</name>
<name>xcon:must-join-before-offset</name>
<name>xcon:request-user</name>
<name>xcon:notify-end-of-conference</name>
<name>xcon:allowed-extend-mixing-end-offset</name>
<name>xcon:codec</name>
<name>xcon:subtype</name>
<name>xcon:mute</name>
<name>xcon:pause-video</name>
<name>xcon:gain</name>
<name>xcon:video-layout</name>
<name>xcon:conference-ID</name>
<name>xcon:allow-floor-events</name>
<name>xcon:floor-request-handling</name>
<name>xcon:conference-floor-policy</name>
<name>xcon:media-label</name>
<name>xcon:algorithm</name>
<name>xcon:max-floor-users</name>
<name>xcon:moderator-id</name>
<name>xcon:target</name>
<name>xcon:persistent-list</name>
<name>xcon:e-mail</name>
<name>xcon:user</name>
</except>
</anyName>
<ref name="anyExtension"/>
</element>
</define>
<define name="anyExtension">
<zeroOrMore>
<choice>
<attribute>
<anyName/>
</attribute>
<ref name="any"/>
</choice>
</zeroOrMore>
</define>
<define name="any">
<element>
<anyName/> <anyName/>
<zeroOrMore> <zeroOrMore>
<choice> <choice>
<attribute> <attribute>
<anyName/> <anyName/>
</attribute> </attribute>
<text/> <text/>
<ref name="anyElement"/> <ref name="any"/>
</choice> </choice>
</zeroOrMore> </zeroOrMore>
</element> </element>
</define> </define>
<!-- <!--
EXTENSIBILITY ATTRIBUTES EXTENSIBILITY ATTRIBUTES
(re-define this as <empty/>,
if extensions beyond this spec are not used)
--> -->
<define name="anyAttribute"> <define name="anyAttribute">
<zeroOrMore> <zeroOrMore>
<attribute> <attribute>
<anyName> <anyName>
<except> <except>
<name ns="http://www.w3.org/XML/1998/namespace">lang
</name>
<name ns="">entity</name> <name ns="">entity</name>
<name ns="">lang</name>
<name ns="">required-participant</name> <name ns="">required-participant</name>
<name ns="">label</name> <name ns="">label</name>
<name ns="">decision</name> <name ns="">decision</name>
<name ns="">name</name> <name ns="">name</name>
<name ns="">policy</name> <name ns="">policy</name>
<name ns="">uri</name> <name ns="">uri</name>
<name ns="">method</name> <name ns="">method</name>
<name ns="">id</name> <name ns="">id</name>
<nsName ns=""/> <name ns="">nickname</name>
<nsName ns="urn:ietf:params:xml:ns:xcon-conference-info"/>
</except> </except>
</anyName> </anyName>
<text/>
</attribute> </attribute>
</zeroOrMore> </zeroOrMore>
</define> </define>
<!-- </grammar>
*************************************************************
TYPES DEFINED IN THE EVENT PACKAGE FOR CONFERENCE STATE
- RFC4575 -
*************************************************************
-->
<!--
WILDCARD FOR EVENT-PACKAGE NAMESPACE
-->
<define name="conference-info-urn">
<element>
<anyName>
<except>
<nsName ns="urn:ietf:params:xml:ns:conference-info"/>
<nsName ns=""/>
</except>
</anyName>
<mixed>
<zeroOrMore>
<choice>
<attribute>
<anyName/>
</attribute>
<ref name="conference-info-urn"/>
</choice>
</zeroOrMore>
</mixed>
</element>
</define>
<!-- Appendix B. Non-Normative W3C XML Schema
DEFINITION OF ENDPOINT STATUS TYPE
-->
<define name="media-status-type">
<choice>
<value>recvonly</value>
<value>sendonly</value>
<value>sendrecv</value> The non-normative W3C XML schema defines extension elements in the
<value>inactive</value> "urn:ietf:params:xml:ns:xcon-conference-info" namespace. Note that
<text/> <xs:any> extensions in this schema are stricter than in the normative
</choice> RELAX NG schema [RELAX], and the normative RELAX NG schema [RELAX]
</define> allows unordered child elements unlike this schema (and the [RFC4575]
<!-- schema). Also note that this schema allows also otherwise valid
ENDPOINT STATUS TYPE extension elements to appear in the non-allowed positions. Likewise
--> the cardinalities of these extension elements can not be constrained
<define name="endpoint-status-type"> with this schema.
<choice>
<value>pending</value>
<value>dialing-out</value>
<value>dialing-in</value>
<value>alerting</value>
<value>on-hold</value>
<value>connected</value>
<value>muted-via-focus</value>
<value>disconnecting</value>
<value>disconnected</value>
<text/>
</choice>
</define>
<!--
JOINING TYPE
-->
<define name="joining-type">
<choice>
<value>dialed-in</value>
<value>dialed-out</value>
<value>focus-owner</value>
<text/>
</choice>
</define>
<!--
DISCONNECTION TYPE
-->
<define name="disconnection-type">
<choice>
<value>departed</value>
<value>booted</value>
<value>failed</value>
<value>busy</value>
<text/>
</choice>
</define>
</grammar> <?xml version="1.0" encoding="UTF-8"?>
<xs:schema
xmlns="urn:ietf:params:xml:ns:xcon-conference-info"
xmlns:info="urn:ietf:params:xml:ns:conference-info"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
attributeFormDefault="unqualified" elementFormDefault="qualified"
targetNamespace="urn:ietf:params:xml:ns:xcon-conference-info">
<xs:import namespace="urn:ietf:params:xml:ns:conference-info"
schemaLocation="rfc4575.xsd"/>
<xs:import namespace="http://www.w3.org/XML/1998/namespace"
schemaLocation="http://www.w3.org/2001/03/xml.xsd"/>
<xs:element name="conference-password" type="xs:string"/>
<xs:element name="mixing-mode" type="mixing-mode-type"/>
<xs:element name="codecs" type="codecs-type"/>
<xs:element name="controls" type="controls-type"/>
<xs:element name="language" type="xs:language"/>
<xs:element name="allow-sidebars" type="xs:boolean"/>
<xs:element name="conference-time" type="conference-time-type"/>
<xs:element name="allow-conference-event-subscription"
type="xs:boolean"/>
<xs:element name="to-mixer" type="mixer-type"/>
<xs:element name="provide-anonymity"
type="provide-anonymity-type"/>
<xs:element name="allow-refer-users-dynamically"
type="xs:boolean"/>
<xs:element name="allow-invite-users-dynamically"
type="xs:boolean"/>
<xs:element name="allow-remove-users-dynamically"
type="xs:boolean"/>
<xs:element name="from-mixer" type="mixer-type"/>
<xs:element name="join-handling" type="join-handling-type"/>
<xs:element name="user-admission-policy"
type="user-admission-policy-type"/>
<xs:element name="allowed-users-list"
type="allowed-users-list-type"/>
<xs:element name="deny-users-list" type="deny-users-list-type"/>
<xs:element name="floor-information" type="floor-information-type"/>
<!-- CONFERENCE TIME -->
<xs:complexType name="conference-time-type">
<xs:sequence>
<xs:element name="entry"
minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="base"
type="xs:string" minOccurs="1"/>
<xs:element name="mixing-start-offset" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="time-type">
<xs:attribute name="required-participant"
type="role-type" use="required"/>
<xs:anyAttribute namespace="##any"
processContents="lax"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="mixing-end-offset" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="time-type">
<xs:attribute name="required-participant"
type="role-type" use="required"/>
<xs:anyAttribute namespace="##any"
processContents="lax"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="can-join-after-offset" type="time-type"
minOccurs="0"/>
<xs:element name="must-join-before-offset" type="time-type"
minOccurs="0"/>
<xs:element name="request-user" type="time-type" minOccurs="0" />
<xs:element name="notify-end-of-conference"
type="xs:integer" minOccurs="0"/>
<xs:element name="allowed-extend-mixing-end-offset"
type="xs:boolean" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
<!-- TIME TYPE -->
<xs:simpleType name="time-type">
<xs:restriction base="xs:dateTime">
<xs:pattern value=".+T.+Z.*"/>
</xs:restriction>
</xs:simpleType>
<!-- ROLE-TYPE -->
<xs:simpleType name="role-type">
<xs:restriction base="xs:string">
<xs:pattern value="none"/>
<xs:pattern value="administrator"/>
<xs:pattern value="moderator"/>
<xs:pattern value="user"/>
<xs:pattern value="observer"/>
<xs:pattern value="participant"/>
<xs:pattern value=".+"/>
</xs:restriction>
</xs:simpleType>
<!-- MIXING MODE TYPE -->
<xs:simpleType name="mixing-mode-type">
<xs:restriction base="xs:string">
<xs:pattern value="moderator-controlled"/>
<xs:pattern value="FCFS"/>
<xs:pattern value="automatic"/>
<xs:pattern value=".+"/>
</xs:restriction>
</xs:simpleType>
<!-- CODECS TYPE -->
<xs:complexType name="codecs-type">
<xs:sequence>
<xs:element name="codec" type="codec-type"/>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="decision"
type="decision-type" use="required"/>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
<!-- CODEC TYPE -->
<xs:complexType name="codec-type">
<xs:sequence>
<xs:element name="subtype" type="xs:string" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name"
type="xs:string" use="required"/>
<xs:attribute name="policy"
type="policy-type" use="required"/>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
<!-- DECISION TYPE -->
<xs:simpleType name="decision-type">
<xs:restriction base="xs:string">
<xs:pattern value="automatic"/>
<xs:pattern value="moderator-controlled"/>
<xs:pattern value=".+"/>
</xs:restriction>
</xs:simpleType>
<!-- POLICY TYPE -->
<xs:simpleType name="policy-type">
<xs:restriction base="xs:string">
<xs:pattern value="allowed"/>
<xs:pattern value="disallowed"/>
<xs:pattern value=".+"/>
</xs:restriction>
</xs:simpleType>
<!-- CONTROL TYPE -->
<xs:complexType name="controls-type">
<xs:sequence>
<xs:element name="mute"
type="xs:boolean" minOccurs="0"/>
<xs:element name="pause-video"
type="xs:boolean" minOccurs="0"/>
<xs:element name="gain"
type="gain-type" minOccurs="0"/>
<xs:element name="video-layout"
type="video-layout-type" default="single-view" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
<!-- GAIN TYPE -->
<xs:simpleType name="gain-type">
<xs:restriction base="xs:integer">
<xs:minInclusive value="-127"/>
<xs:maxInclusive value="127"/>
</xs:restriction>
</xs:simpleType>
<!-- VIDEO LAYOUT TYPE -->
<xs:simpleType name="video-layout-type">
<xs:restriction base="xs:string">
<xs:pattern value="single-view"/>
<xs:pattern value="dual-view"/>
<xs:pattern value="dual-view-crop"/>
<xs:pattern value="dual-view-2x1"/>
<xs:pattern value="dual-view-2x1-crop"/>
<xs:pattern value="quad-view"/>
<xs:pattern value="multiple-3x3"/>
<xs:pattern value="multiple-4x4"/>
<xs:pattern value="multiple-5x1"/>
<xs:pattern value="automatic"/>
<xs:pattern value=".+"/>
</xs:restriction>
</xs:simpleType>
<!-- FLOOR INFORMATION TYPE -->
<xs:complexType name="floor-information-type">
<xs:sequence>
<xs:element name="conference-ID"
type="xs:unsignedLong" minOccurs="0"/>
<xs:element name="allow-floor-events"
type="xs:boolean" default="false" minOccurs="0"/>
<xs:element name="floor-request-handling"
type="floor-request-handling-type" minOccurs="0"/>
<xs:element name="conference-floor-policy"
type="conference-floor-policy" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
<!-- FLOOR REQUEST TYPE -->
<xs:simpleType name="floor-request-handling-type">
<xs:restriction base="xs:string">
<xs:pattern value="block"/>
<xs:pattern value="confirm"/>
<xs:pattern value=".+"/>
</xs:restriction>
</xs:simpleType>
<!-- CONFERENCE FLOOR POLICY -->
<xs:complexType name="conference-floor-policy">
<xs:sequence>
<xs:element name="floor" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="media-label"
type="xs:string" minOccurs="1" maxOccurs="unbounded"/>
<xs:element name="algorithm"
type="algorithm-type" minOccurs="0"/>
<xs:element name="max-floor-users"
type="xs:nonNegativeInteger" minOccurs="0"/>
<xs:element name="moderator-id"
type="xs:nonNegativeInteger" minOccurs="0"/>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="id" type="xs:string" use="required"/>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
<!-- ALGORITHM TYPE -->
<xs:simpleType name="algorithm-type">
<xs:restriction base="xs:string">
<xs:pattern value="moderator-controlled"/>
<xs:pattern value="FCFS"/>
<xs:pattern value="random"/>
<xs:pattern value=".+"/>
</xs:restriction>
</xs:simpleType>
<!-- USER ADMISSION POLICY TYPE -->
<xs:simpleType name="user-admission-policy-type">
<xs:restriction base="xs:string">
<xs:pattern value="closedAuthenticated"/>
<xs:pattern value="openAuthenticated"/>
<xs:pattern value="anonymous"/>
<xs:pattern value=".+"/>
</xs:restriction>
</xs:simpleType>
<!-- JOIN HANDLING TYPE -->
<xs:simpleType name="join-handling-type">
<xs:restriction base="xs:string">
<xs:pattern value="block"/>
<xs:pattern value="confirm"/>
<xs:pattern value="allow"/>
<xs:pattern value="authenticate"/>
<xs:pattern value="directed-operator"/>
<xs:pattern value=".+"/>
</xs:restriction>
</xs:simpleType>
<!-- DENY USER LIST TYPE -->
<xs:complexType name="deny-users-list-type">
<xs:sequence>
<xs:element name="target" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:attribute name="uri" use="required" type="xs:anyURI"/>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
</xs:element>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
<!-- ALLOWED USERS LIST TYPE -->
<xs:complexType name="allowed-users-list-type">
<xs:sequence>
<xs:element name="target" type="target-type"
minOccurs="0" maxOccurs="unbounded">
</xs:element>
<xs:element name="persistent-list"
type="persistent-list-type"
minOccurs="0"/>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
<!-- PERSISTENT LIST TYPE -->
<xs:complexType name="persistent-list-type">
<xs:sequence>
<xs:element name="user" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="email" type="xs:string"
minOccurs="0" maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name"
use="required" type="xs:anyURI"/>
<xs:attribute name="nickname"
use="required" type="xs:string"/>
<xs:attribute name="id"
use="required" type="xs:string"/>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
</xs:element>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
<!-- TARGET TYPE -->
<xs:complexType name="target-type">
<xs:attribute name="uri" use="required"
type="xs:anyURI"/>
<xs:attribute name="method" use="required"
type="method-type"/>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
<!-- METHOD TYPE -->
<xs:simpleType name="method-type">
<xs:restriction base="xs:string">
<xs:pattern value="dial-in"/>
<xs:pattern value="dial-out"/>
<xs:pattern value="refer"/>
<xs:pattern value=".+"/>
</xs:restriction>
</xs:simpleType>
<!-- ANONYMITY TYPE -->
<xs:simpleType name="provide-anonymity-type">
<xs:restriction base="xs:string">
<xs:pattern value="private"/>
<xs:pattern value="semi-private"/>
<xs:pattern value="hidden"/>
<xs:pattern value=".+"/>
</xs:restriction>
</xs:simpleType>
<!-- MIXER TYPE -->
<xs:complexType name="mixer-type">
<xs:sequence>
<xs:element name="controls" type="controls-type"
minOccurs="0" maxOccurs="unbounded"/>
<xs:any namespace="##other" processContents="lax"
minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute name="name" type="mixer-name-type"
use="required"/>
<xs:anyAttribute namespace="##any" processContents="lax"/>
</xs:complexType>
<!-- MIXER NAME TYPE -->
<xs:simpleType name="mixer-name-type">
<xs:restriction base="xs:string">
<xs:pattern value="VideoIn"/>
<xs:pattern value="VideoOut"/>
<xs:pattern value="AudioOut"/>
<xs:pattern value="AudioIn"/>
<xs:pattern value=".+"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
Authors' Addresses Authors' Addresses
Oscar Novo Oscar Novo
Ericsson Ericsson
Hirsalantie 11 Hirsalantie 11
Jorvas 02420 Jorvas 02420
Finland Finland
Email: Oscar.Novo@ericsson.com Email: Oscar.Novo@ericsson.com
skipping to change at page 74, line 4 skipping to change at page 91, line 19
Email: Gonzalo.Camarillo@ericsson.com Email: Gonzalo.Camarillo@ericsson.com
David P. Morgan David P. Morgan
Fidelity Investments Fidelity Investments
82 Devonshire St, MZ V3C 82 Devonshire St, MZ V3C
Boston, MA 02109-3614 Boston, MA 02109-3614
USA USA
Email: Dave.Morgan@fmr.com Email: Dave.Morgan@fmr.com
Roni Even Roni Even
Polycom Polycom
94 Derech Em Hamoshavot 94 Derech Em Hamoshavot
Petach Tikva 49130 Petach Tikva 49130
Israel Israel
Email: roni.even@polycom.co.il Email: roni.even@polycom.co.il
Jari Urpalainen
Nokia
Itamerenkatu 11-13
Helsinki 00180
Finland
Phone: +358 7180 37686
Email: jari.urpalainen@nokia.com
Full Copyright Statement Full Copyright Statement
Copyright (C) The IETF Trust (2008). Copyright (C) The IETF Trust (2008).
This document is subject to the rights, licenses and restrictions This document is subject to the rights, licenses and restrictions
contained in BCP 78, and except as set forth therein, the authors contained in BCP 78, and except as set forth therein, the authors
retain all their rights. retain all their rights.
This document and the information contained herein are provided on an This document and the information contained herein are provided on an
"AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS
 End of changes. 241 change blocks. 
1027 lines changed or deleted 1885 lines changed or added

This html diff was produced by rfcdiff 1.35. The latest version is available from http://tools.ietf.org/tools/rfcdiff/