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 --><!ELEMENTFooMessageHeader(p1,p2)><!ELEMENTp1(#PCDATA)><!ELEMENTp2(#PCDATA)><!ELEMENTFooMessageRepeatingBody(p3,p4)><!ELEMENTp3(#PCDATA)><!ELEMENTp4(#PCDATA)><!ELEMENTFooMessage(foomessageheader,sequence_of)><!ELEMENTfoomessageheader(p1,p2)><!ELEMENTsequence_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 --><!ELEMENTFooMessageHeader(p1,p2)><!ELEMENTp1(#PCDATA)><!ELEMENTp2(#PCDATA)><!ELEMENTFooMessageRepeatingBody(p3,p4)><!ELEMENTp3(#PCDATA)><!ELEMENTp4(#PCDATA)><!ELEMENTFooMessage((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:
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?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I have the following ASN.1 input file:
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:
Not good.
What I really want is:
(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:
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?