Ethereal-dev: [Ethereal-dev] Questions on XML/DTD for MSCML support

Note: This archive is from the project's previous web site, ethereal.com. This list is no longer active.

From: "Jacques, Olivier (OpenCall Test Infra)" <olivier.jacques@xxxxxx>
Date: Mon, 15 May 2006 18:33:03 +0200
Hello,
 
I am working on implementing MSCML support in Ethereal
(http://ietfreport.isoc.org/idref/draft-vandyke-mscml/ or
http://www.ietf.org/internet-drafts/draft-vandyke-mscml-07.txt). MSCML
is on top of SIP.

I am doing that by adding a DTD to use the XML parser. It works almost
OK, but I have several issues before I release the DTD:

1. The beginning of my dtd looks like:
<? ethereal:protocol 
   proto_name="mscml" 
   media="application/mediaservercontrol+xml" 
   description="Media Server Control Markup Language"
   hierarchy="yes" ?>
 
<!ELEMENT MediaServerControl (request | response | notification) >
<!ATTLIST MediaServerControl version CDATA #REQUIRED >
<!ELEMENT request (configure_conference | configure_leg | play |
playcollect | playrecord | managecontent | faxplay | faxrecord | stop)>
<!ELEMENT configure_conference (subscribe?)>

-> Ethereal registers the protocols as "ediaservercontrol". The "m" is
missing. Also I was expecting that Ethereal would have registered it
with "mscml", which is what is given in "proto_name". Unfortunately, I
wasn't too sure what to change to fix that (and afraid to break other
things :) ).

2. In the attribute list, several forms are not accepted:
2.1
<!ATTLIST configure_conference
	id CDATA #IMPLIED
	reservedtalkers NMTOKEN #IMPLIED
	reserveconfmedia (yes | no | 1 | 0 | true | false) "yes"
>
	-> reserveconfmedia must be replaced by (removing 1 and 0):
	reserveconfmedia (yes | no | true | false) "yes"
2.2 
<!ATTLIST variable
	type (dat | dig | dur | mth | mny | num | sil | str | tme | wkd)
#REQUIRED
	subtype (mdy | dmy | ymd | ndn | t12 | t24 | USD | gen | ndn |
crd | ord) #IMPLIED
	value CDATA #REQUIRED
>
	-> subtype must be replaced by (removing USD):
	subtype (mdy | dmy | ymd | ndn | t12 | t24 | gen | ndn | crd |
ord) #IMPLIED

For 2./ This is not truly required to parse in Ethereal, but could be if
we want to implement validation against the DTD.
 
Thanks,
Olivier.