[Home] [By Thread] [By Date] [Recent Entries]

  • From: Michael Kay <mike@s...>
  • To: Rick Jelliffe <rjelliffe@a...>
  • Date: Wed, 5 Oct 2016 09:14:30 +0100


Mainstream XML technology definitely disfavours generic approaches: to move to generic approaches where the specific semantics is in attributes *and* retaining validation requires moving to RELAX NG or Schematron in which attributes are first-class citizens (rather than dtds or xsd where all patterns/types are keyed by element context only.) 


I've never really understood why we consider

<graduation date="2012-03-31"/>

as less generic than

<event type="graduation" date="2012-03-21"/>

There seems to be some very deep-rooted feeling that element and attribute names are "fixed" while attribute values are "variable". Perhaps our schema technology encourages this thinking, or perhaps it is languages like XPath, but the fact is that we don't really believe and trust in the "X" in "XML".

Even Xpath's syntax disfavours generic approaches (by providing no support), no crIticism implied. I have been working with generic schemas for much of the last decade, and I really think XSL T Xpath would be enhanced by providing some simple macro system to uncomplicate paths: for example  so that instead of writing

    event[property[@name="kind"][@value="birthday"]]

i could declare a virtual child named birthday-event with that xpath, and then use a virtual axis:

  vchild::birthday-event


I've argued in favour of user-defined axes for many years but I've found it hard to get the idea taken seriously. Though I've never taken it quite this far as to allow the "node-test" part of the step to be interpreted in a user-defined way.

Substitution groups can be great for handling this kind of content: where in schema-aware XPath, schema-element(event) selects graduation elements because they are part of the substitution group. I've seen little take-up of that, however.

Michael Kay
Saxonica



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]


Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member