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.