It seems to me that this sort of data typing can already be
accomplished:
<!NOTATION SQL-DATE PUBLIC "...//NOTATION SQL DATE//EN">
<!ELEMENT birth-date - - (#PCDATA)>
<!ATTLIST birth-date
notation NOTATION (SQL-DATE) #FIXED SQL-DATE
>
Using data attributes, and HyTime's Data Attributes For Elements
(DAFE) facility (which acts as if the data content notation for an
element were an architectural form), one could implement a scheme like
the one you (Tim) propose:
<!NOTATION SQL-DATE PUBLIC "...//NOTATION SQL DATE//EN">
<!ATTLIST #NOTATION SQL-DATE
sql-min CDATA #IMPLIED
sql-max CDATA #IMPLIED
>
<!ELEMENT birth-date - - (#PCDATA)>
<!ATTLIST birth-date
sql-type NOTATION (SQL-DATE) #FIXED SQL-DATE
sql-min CDATA #FIXED "1900-01-01" -- some bogus restrictions --
sql-max CDATA #FIXED "1999-12-31"
>
Or better yet:
<!NOTATION SQL-DATATYPE PUBLIC "...//NOTATION SQL DATATYPE//EN">
<!ATTLIST #NOTATION SQL-DATATYPE
sql-type NAME #REQUIRED
sql-size NUMBER 0
sql-min CDATA #IMPLIED
sql-max CDATA #IMPLIED
>
<!ELEMENT birth-date - - (#PCDATA)>
<!ATTLIST birth-date
notation NOTATION (sql-datatype) #FIXED sql-datatype
sql-type NAME #FIXED sql-date
sql-min CDATA #FIXED "1900-01-01" -- some bogus restrictions --
sql-max CDATA #FIXED "1999-12-31"
>
Of course, both of these require data attributes, which XML does not
(yet!) support.
-peter
-- Peter Newcomb TechnoTeacher, Inc. 233 Spruce Avenue P.O. Box 23795 Rochester, NY 14611-4041 USA Rochester, New York 14692-3795 USA +1 716 464 8696 (home) +1 716 464 8696 (direct) +1 716 755 8698 (cell) +1 716 271 0796 (main) +1 716 529 4304 (fax) +1 716 271 0129 (fax) peter@petes-house.rochester.ny.us peter@techno.com http://www.petes-house.rochester.ny.us http://www.techno.com