One of my favorite idioms, which I would like more people to adopt,
is that attributes and elements have equivalence, to the extent that
makes sense. In other words, if you only have one of a sub
element/attribute, and it is just a string, then you can express it
as an attribute. Or put it as an element if you like. I built
parsing this into my very concise and mostly complete
SAX/DOM-like/mini-XPath Ssx parser: get("age/type") will find
'<age type="years">', although you can still do
get("age@type"). And DTDs are evil. ;-) https://code.google.com/p/super-simple-xml/ http://sdw.st/ssx.html#tag:Ssx Wrote this over a year ago. The library has been fairly well tested for the core application use needed, however the test code included is woefully incomplete. sdw On 3/2/12 6:26 AM, Len Bullard wrote: 537254D815AAA64492F9FA9A38ECB40D564871@mail4.huntsville.ses-i.com" type="cite">Let's just use LISP. Then we can reclaim our Dark Overlord Priesthood Robes and demand unusually high salaries for being slightly better-trained than data entry clerks because clerks can't cooder in their cars. Xerox tried this long ago, Roger. It failed pretty badly. The problem with attributes is not syntax or lack of utility. It is that they become a metadata junkyard where information is stuffed that is rarely used and almost always ignored in templates. They are often under-documented particularly where they are used by only a few corner-case applications. Here is an example. Guess how many of these are being used often, how many are generated, duplicate items found elsewhere or are a result of using one DTD to govern non-local processes (same entity being processed by multiple systems serially): wpno ID #REQUIRED crewmember CDATA #IMPLIED tocentry (2 | 3 | 4 | 5 ) '2' date-time-stamp (date | time | date-time ) #IMPLIED frame (yes | no ) 'yes' army (yes | no ) 'no' airforce (yes | no ) 'no' navy (yes | no ) 'no' marines (yes | no ) 'no' fgc CDATA #IMPLIED lsa-id CDATA #IMPLIED wpseq CDATA #IMPLIED insertwp CDATA #IMPLIED deletewp (yes | no ) 'no' delchlvl CDATA #IMPLIED comment CDATA #IMPLIED changeref IDREFS #IMPLIED idref IDREFS #IMPLIED assocfig IDREFS #IMPLIED skilltrk CDATA #IMPLIED security (uc | fouo | c | s | ts ) #IMPLIED There is a well-understood impedance mismatch between XML and Objects-What-We-Love and between SQL tables yet humans seem to be able to handle them well and understand what they are. They are in this sense, a design problem for people who don't understand the subject-matter or process space with enough clarity to apply them well. len _______________________________________________________________________ XML-DEV is a publicly archived, unmoderated list hosted by OASIS to support XML implementation and development. To minimize spam in the archives, you must subscribe before posting. [Un]Subscribe/change address: http://www.oasis-open.org/mlmanage/ Or unsubscribe: xml-dev-unsubscribe@lists.xml.org subscribe: xml-dev-subscribe@lists.xml.org List archive: http://lists.xml.org/archives/xml-dev/ List Guidelines: http://www.oasis-open.org/maillists/guidelines.php --
Stephen D. Williams sdw@lig.net stephendwilliams@gmail.com LinkedIn: http://sdw.st/in V:650-450-UNIX (8649) V:866.SDW.UNIX V:703.371.9362 F:703.995.0407 AIM:sdw Skype:StephenDWilliams Yahoo:sdwlignet Resume: http://sdw.st/gres Personal: http://sdw.st facebook.com/sdwlig twitter.com/scienteer |