sfuser3 - 2014-08-29

I have the following ASN.1 input file:

        MyFoo DEFINITIONS AUTOMATIC TAGS ::=
        BEGIN

        FooMessageHeader ::= SEQUENCE {
            p1  INTEGER,
            p2  INTEGER 
        }

        FooMessageRepeatingBody ::= SEQUENCE {
            p3  INTEGER,
            p4  INTEGER 
        }

        FooMessage ::= SEQUENCE {
            FooMessageHeader,                   -- no identifier (X.208)
            SEQUENCE OF FooMessageRepeatingBody -- no identifier (X.208)
        }

        END

When I compile the above specification with the asn1c compiler, it correctly tells me that I'm using an obsolete X.208 syntax. Moreover, the compiler "fixes" my syntax by creating "temporary" identifiers: 'foomessageheader' and 'sequence_of'.

The DTD output for the above specification is:

    <!-- XML DTD generated by asn1c-0.9.24 -->

    <!-- ASN.1 module
    MyFoo found in foo.asn1 -->

    <!ELEMENT FooMessageHeader (p1, p2)>
        <!ELEMENT p1 (#PCDATA)>
        <!ELEMENT p2 (#PCDATA)>
    <!ELEMENT FooMessageRepeatingBody (p3, p4)>
        <!ELEMENT p3 (#PCDATA)>
        <!ELEMENT p4 (#PCDATA)>
    <!ELEMENT FooMessage (foomessageheader, sequence_of)>
        <!ELEMENT foomessageheader (p1, p2)>
        <!ELEMENT sequence_of (FooMessageRepeatingBody*)>

Not good.

What I really want is:

    <!-- XML DTD generated by asn1c-0.9.24 -->

    <!-- ASN.1 module
    MyFoo found in foo.asn1 -->

    <!ELEMENT FooMessageHeader (p1, p2)>
        <!ELEMENT p1 (#PCDATA)>
        <!ELEMENT p2 (#PCDATA)>
    <!ELEMENT FooMessageRepeatingBody (p3, p4)>
        <!ELEMENT p3 (#PCDATA)>
        <!ELEMENT p4 (#PCDATA)>
    <!ELEMENT FooMessage ((FooMessageHeader), (FooMessageRepeatingBody*))>
        <!ELEMENT (FooMessageHeader)>
        <!ELEMENT (FooMessageRepeatingBody*)>

(I'm guessing at the DTD syntax, above, but I think you get the idea.)

In other words, I want the DTD to accept the following XML as valid:

    <FooMessage>
        <FooMessageHeader>
            <p1>1</p1>
            <p2>2</p2>
        </FooMessageHeader>
        <FooMessageRepeatingBody>
            <p3>3</p3>
            <p4>4</p4>
        </FooMessageRepeatingBody>
        <FooMessageRepeatingBody>
            <p3>5</p3>
            <p4>6</p4>
        </FooMessageRepeatingBody>
    </FooMessage>

Take careful note of the capitalization, above. i.e. In the cases that I deliberately drop the identifier name, I expressly wish to employ the Type name (as element name) in the XML; I do not want the identifier.

Is there some way to achieve my goal?