[Serialization] Some ideas for XML

I've been using serialization to XML for a while now. Its worked very well for what I originally needed. However, a number of requests have come my way for enhancements to our system based on the concept that the file is XML, but they aren't really possible under the existing framework. The first item involves style sheets (and potentially other similar tags). Currently there is no way to insert <?xml-stylesheet type="text/xsl" href="file.xslt" ?> into the file from code. And if I do it manually, serializer won't be able to load the file. Is there any interest out there in this kind of functionality (adding tags like this from code, and ignoring such tags on load)? If so, could someone point me to where to look in the code to put together a prototype? The second thing is a concept that conflicts with the existing versioning scheme. I'm asked regularly why the deserializer cares if there are tags in the file that it doesn't know about (most people assume these will be ignored). The reason they want this is they want a newer version of the code to add a few tags to the file, but the older version continue to read the file while skipping those new items. For example, the original version of a class would be: <shirt class_id="5" tracking_level="0" version="0"> <color>red</color> <size>large</size> </shirt> and the second version would be <shirt class_id="5" tracking_level="0" version="1"> <color>red</color> <size>large</size> <material>cotton</material> </shirt> Their thinking is that if the old code loads the file, it should just ignore the <material> tag and load happily. However, in order of the new code to read the old file, the version has to be revved to 1 so that it knows to add a <material> value on load. In doing that version rev, even if it could ignore the <material> tag, the old code would see that version 1 and assume it didn't know how to load it. Can anyone think of a way around this short of changing the version scheme, which doesn't seem like an option. Thanks, Jared McIntyre

Jared McIntyre wrote:
The first item involves style sheets (and potentially other similar tags). Currently there is no way to insert <?xml-stylesheet type="text/xsl" href="file.xslt" ?> into the file from code. And if I do it manually, serializer won't be able to load the file.
Hmm - I'm not sure about that. If I remember correctly, unrecognized attributes are ignored.
Is there any interest out there in this kind of functionality (adding tags like this from code, and ignoring such tags on load)? If so, could someone point me to where to look in the code to put together a prototype?
Look at basic_xml_[i/o]archive and xml_[i/o] archive. You can either derive from these or make your own versions.
Their thinking is that if the old code loads the file, it should just ignore the <material> tag and load happily. However, in order of the new code to read the old file, the version has to be revved to 1 so that it knows to add a <material> value on load. In doing that version rev, even if it could ignore the <material> tag, the old code would see that version 1 and assume it didn't know how to load it. Can anyone think of a way around this short of changing the version scheme, which doesn't seem like an option.
It seems to me that the same effect could be obtained more simple by just having your archive class skip over tagged items that don't match the next one to be serialized. Robert Ramey
participants (2)
-
Jared McIntyre
-
Robert Ramey