CybOXProject / schemas

CybOX Schemas and Schema Development
42 stars 17 forks source link

Deprecate use of QNames in ID Fields #354

Open bworrell opened 9 years ago

bworrell commented 9 years ago

We should use a different data type for @id fields.

http://www.w3.org/2001/tag/doc/qnameids.html

ikiril01 commented 9 years ago

Updated title slightly for clarity.

ikiril01 commented 9 years ago

Context: as stated in the above URL, using QNames for IDs can be problematic for XML processors, and is therefore not recommended by the W3C:

"Using QNames in untyped (#PCDATA or xs:string) attribute values or element content places an additional burden on the processor that was not anticipated by [XML Namespaces].

If QNames are only used in element and attribute names, the processor can fully resolve all of the prefixes as it parses. This gives it the freedom to discard the prefix-to-URI mappings when they go out of scope. A serializer, presented with an object model that conforms to [XML Namespaces] can manufacture new prefixes on the fly. (In practice, users expect most prefixes to be preserved through transformations, so things aren't quite this simple for most developers, but this is still theoretically the case.)

As soon as QNames may appear in element or attribute values, the processor must retain all of the prefix-to-URI mappings (and any API must expose these mappings). This is necessary because some subsequent micro-parser, in the course of examining some content, may encounter a token that it recognizes as a QName and need to find its {URI, local-name}."

LOE: Low