- From: Dan Vint <dvint@dvint.com>
- Date: Sun, 27 Feb 2005 09:32:38 -0800
- To: xmlschema-dev@w3.org
Thanks, this is the type of input I was looking for. Locking into XML
schema is not necessarily a problem for us (currently anyway). I'll take a
look at the document you site.
..dan
At 06:46 AM 2/27/2005, you wrote:
>>My organization is going to start looking at the use of key/keyref. I
>>haven't seen many questions or recommendations about the use of this
>>feature. Is anyone really using this functionality? What sort of problems
>>(if any) are you finding? Is this functionality well supported by the
>>tools and vendors - or is this another one of these features they are not
>>implementing?
>
>Hi Danny,
>
>I have personally been against using this feature as it strongly ties you
>to one schema implementation-- namely XML Schema. While XML Schema is not
>a bad thing, that type of lock-in has always scared me. If you are going
>to use it there are several things you need to be aware of:
>
>(1) Scope. Like Michael Kay said scope is very important. If you are not
>defining the keys and keyrefs in the same complexType then you need to
>make sure that the keyref is on an ancestor of the key. Otherwise you run
>into interop problems with different implementations.
>
>(2) Namespaces. In order to correctly refer to a key in an XML Schema with
>a targetNamespace and have it work the same across multiple
>implementations, you *must* have the reference to the keyname be both
>prefixed and qualified. Having your targetNamespace and default namespace
>declaration be the same is not enough. I seem to recall needing to have
>the XPath steps to the key prefixed and qualified as well.
>
>(3) Sometimes you have a container that contains multiple keyrefs grouped
>together. If you plan on doing this then the container element should be
>at the "First common ancestor" (or lowest common denominator) of the
>various keys.
>
>(4) xs:unique. Within the spec it is defined that where you have an
>xs:unique and an xs:key you can simply utilize the xs:unique /as/ an
>xs:key. The support for this feature is spotty-- don't use it. Anytime you
>need to have a key, use xs:key. Anytime you need to have uniqueness
>constraint use xs:unique. Anytime you need both, use both.
>
>Some of the benefits of key/keyref include the ability to have multiple
>keys per element, the ability to use different types for your keys (not be
>contrained to NMTOKEN as in ID/IDREF), add extensive documentation in the
>link within the schema about its role/purpose.
>
>I know that the Commercial Mortgage Industry Standards Maintenance
>Orginization (CMISMO) just released an industry specific best practices
>guide that contained two sections of key/keyref. There is some good info
>in there [1]
>
>
>[1]
>http://www.mismo.org/mismo/commercial/MISMO%20CWG%20Best%20Practices%20Guide%20v1_0.pdf
>
>All the best,
>Jeff Rafter
---------------------------------------------------------------------------
Danny Vint
Specializing in Panoramic Images of California and the West
http://www.dvint.com
voice: 510-522-4703
Received on Sunday, 27 February 2005 17:28:43 UTC