Re: DTD Question

David Brownell (db@Eng.Sun.COM)
Sat, 17 Oct 1998 10:31:58 -0700


Samuel R. Blackburn wrote:
>
> <NAME>
> <FIRST>Sam</FIRST>
> <LAST>Blackburn</LAST>
> </NAME>
> <ROUTE>
> <FIRST>99.409</FIRST>
> <LAST>2091.7785</LAST>
> </ROUTE>
>
> Is it possible in DTD to say that NAME.FIRST is a string
> and ROUTE.FIRST is a number?

The DTD doesn't represent data typing; that's the job of
some component that interprets information encoded in XML.
Your overloading of a "flat" namespace makes that hard.

You could have chosen other validatable ways to do this:

<NAME>
<NAME.FIRST>Sam</NAME.FIRST>
...</NAME>
<ROUTE>
<ROUTE.FIRST>99.409</ROUTE.FIRST>
...</ROUTE>

Or with namespaces (the "xmlns:" decarations go best in
the DTD, IMHO):

<NAME xmlns:NAME=".../name-rules">
<NAME:FIRST>Sam</NAME:FIRST>
... </NAME>
<ROUTE xmlns:ROUTE=".../route-rules">
<ROUTE:FIRST>99.409</ROUTE:FIRST>
...</ROUTE>

Or even just have the rules that applications must follow
implicitly, based on context (and probably making validation
hard/impossible over time). I'd use an explicit approach,
since context is so easily lost.

- Dave