Re: The <any/> element: bane of security or savior of versioni
On 20/10/2007, Thomas Lord <lord@e...> wrote: ... > To make Y the next version of X, we should be obligated to > define two transforms: one that converts X to Y, the other > for Y to X. Interesting that you are relying here on transformations. I may have misinformed about the example of how UBL is tackling 'minor versioning': rather than use the 'any' they may be relying on transformations but I have kept up with this too well lately. Either way, they have considered including transformations in the process of validating - either for minor versions (not sure) or for 'customized' versions. My own thinking is (quite simple I'm afraid) if you need to do a transformation at all, either for processing or validating 'version Y' rather than/as well as 'version X', then why not just strip out anything in the 'any' extension point(s) (schema for A could designate where such extension points can be at the top level - schema Y could add more but below that top level) first. Then it will let you do both validation and processing as if you were just dealing with 'version X'. Two transformations at most would separate 'version X' and 'version Y extension'. Imagination is left to decide what to do with the extensions. For example: CDATA them and put them in a convenient string element in 'version X' (perhaps one designated for the purpose with foresight in the 'version X' schema) or if that doesn't work well maybe comment the extension out so it doesn't interfere with validation as for version X or processing, or if convenient put it in a separate instance but with a way to where it came from of course. None of this requires a major version change (which I'd regard as one which loses schema compatibility with the previous version). > > So, the solution is that programs shouldn't simply check > inputs against a schema, if they want an extensible input > language. Rather, programs should first transform inputs > to a familiar type, then check those, and optionally transform > outputs to some externally requested type. So yes I agree that you can avoid problems with versioning if you are willing to rely on transformations but 1. I don't think that means you have to drop the possibility of such versions being 'backwards or forward compatible' with previous versions 2. I think it means use of 'any' extension points is even safer because the transformation(s) can separate it in some convenient way (just like the way email clients separate attachments perhaps but perhaps some more standardization of metadata might help make things as easy as SMTP). > > With that basic rule, one can begin to define very clean > ways to handle "unrecognized -- from some future version" > fields. Also, the XML structure of a language is made > orthogonal to the versioning of the language: different > versions can have completely different strict schema. > > -t > http://www.dasht-exp-1a.com > > -- Stephen Green Partner SystML, http://www.systml.co.uk Tel: +44 (0) 117 9541606 http://www.biblegateway.com/passage/?search=matthew+22:37 .. and voice
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index]
PURCHASE STYLUS STUDIO ONLINE TODAY!
Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!
Download The World's Best XML IDE!
Accelerate XML development with our award-winning XML IDE - Download a free trial today!
Subscribe in XML format