Record Generation from DTD

I was wondering if anybody could help me understand something. I have a DTD that when I used to create a record within Developer 4.6 created the record structure as I had expected but it also generate two other record structures and the schema.

Now what I am trying to understand is what caused the other two record structures. The records are labeled record_(RecordName) where RecordName is the name of an element that exists within the DTD.

The reason I ask is that I would like to have other records generated as those two when I import a DTD, so I can later use them for record references.

The webMethods Integration Server tries to make your Record more intelligent by modularizing it. This describes the behavior you see above.

This behavior also allows a developer to have a master DTD for a database schema, XML specification, or anything else instead of lots of smaller DTDs.

The master DTD is also better style, but who am I to offer style advice!

Thats certainly interesting, but still doesnt explain what within the DTD causes these “modules” to be created. I will have to investigate further

The “modules” are really sub-nodes that could be root nodes in a different context.

Consider this excerpt of a DTD:


In this example, the node ContactInfo has three sub-nodes – Name, Address and Phone.

Now, consider the following definitions for the sub-nodes:


If a developer imported the master DTD into Developer, both Name and Address would be created as separate Records and the master Record would contain references to them.

Phone would appear as an element only because it is defined as such in the master DTD.

The parsing algorhythm automatically creates a sub-record for any container sub-node that appears 2 or more times.

The above example does not generate seperate records for Name or Address. However, say for example that there were 2 references to the Address structure (what XSD calls a complex data type). So the DTD would have these changes:

Then you would get a separate address record.

You can also force sub-records by selecting them instead the actual root node when prompted for the root.