000522-2

You want to send a person's name, separated into subfields for Surname, Given name, Middle Initial and Generation qualifier (like "Jr"). Show how this is specified using both ASN.1 and XML/DTD. Also show an example of how the name "John F. Kennedy Jr" is sent, and compare how many bytes are sent using the ASN.1/BER and the XML encoding.

Answer

ASN.1:

Name ::= SEQUENCE {
Surname [0] VisibleString OPTIONAL,
Givenname [1] VisibleString OPTIONAL,
Initials [2] VisibleString OPTIONAL,

Generation [3] VisibleString OPTIONAL }

DTD:

<!ELEMENT NAME (SURNAME, GIVENNAME, INTIALS, GENERATION)>
<!ELEMENT SURNAME (#PCDATA)>
<!ELEMENT GIVENNAME (#PCDATA)>
<!ELEMENT INITIALS (#PCDATA)>
<!ELEMENT GENERATION (#PCDATA)>

BER data (34 octets):

10 21
00 1A 16 07 K e n n e d y
01 1A 16 04 J o h n
02 1A 16 02 F .
03 1A 16 03 J r .

XML data (172 octets):

<?xml version="1.0"?>
<!DOCTYPE NAME SYSTEM "name.dtd">
<NAME>
<SURNAME>Kennedy</SURNAME>
<GIVENNAME>John</GIVENNAME>
<INTIALS>F.</INITIALS>
<GENERATION>Jr.</GENERATION>
</PERSON>

List of exam questions