- From: <bugzilla@wiggum.w3.org>
- Date: Wed, 21 Mar 2007 17:06:20 +0000
- To: www-xml-schema-comments@w3.org
- CC:
http://www.w3.org/Bugs/Public/show_bug.cgi?id=3817 ------- Comment #6 from cmsmcq@w3.org 2007-03-21 17:06 ------- Perhaps we are imagining different uses for the terms defined here. I expect them to be used in describing processors, and the requirement to be allowing the behaviors described in the initial description, in comment #3, and in comment #5 to be described in English prose using the terms defined in the spec. So to use the existing terminology to say that schema location hints in the instance are not followed, it would suffice to say something like Schema location hints in the document instance are not followed. or The --nohints option means that the processor should not follow schemaLocation hints in the document instance, even if no components for the namespace in question are available. If you want something more elaborate, I can offer the following sample documentation for an imaginary processor named Figment which can be invoked with run-time options directing the various behaviors described. ... Figment schema construction options ... Figment assembles a schema by looking for schema components in different places. In general, for each namespace used in the input document as the namespace of any element or attribute, Figment looks for schema components. The user may control where Figment looks for components by means of the --where and --how options: --where=LOCATION LOCATION may be any of: cache: look in Figment's local schema cache cli: look for a location passed on the command line, using the --load option ask: ask the user by means of a prompt on stderr ns: dereference the namespace name hints: look in the locations indicated in xsi:schemaLocation attributes in the input The --where option can be given more than once on the command line. If no --where options are specified, the default behavior of Figment is equivalent to --where=cache --where=hints --where=ns. If any --where options are specified, Figment will look only in the indicated locations. --how=METHOD METHOD may be: literal: Figment will attempt to dereference the URI given as a location. If that produces a schema document, Figment will read the schema document and load the components it defines. catalog: means that Figment will look up the URI in the Oasis XML catalog at /usr/local/Figment/catalog and attempt to dereference the location given by the catalog, if any. rddl: means that if dereferencing a URI produces a RDDL document, Figment will look for the well-known purpose Figment-validation, and follow the link given. The --how option can be given more than once. The order of options determines the order in which the methods are tried. If --eager=yes is specified, then all methods will be tried for each namespace; if --eager=no is specified, then later methods will be tried only if earlier methods don't succeed in finding a schema document. The default is --how=catalog --how=literal --how=rddl The --how option does not affect searching in the Figment cache. The --eager option controls what Figment does when it succeeds in finding a schema document which defines components for the namespace in question. --eager=yes means Figment will read and process the schema document it has found, and then continue looking for more components in the namespace, using other methods or in other locations, until there are no more places to look. --eager=no means Figment will read and process the schema document it has found, and stop looking for components for the namespace. The --onfailure option controls what Figment does when searching for components for a given location fails to produce any schema documents for the namespace being sought. --onfailure=continue means that Figment will try the next location on the list. --onfailure=halt means that Figment will stop looking for components for this namespace and move on to the next namespace --onfailure=error means that Figment will stop looking for components, issue an error message, and move on to the next namespace --onfailure=fatal means that Figment will stop looking for components, issue an error message, and exit. No validation will be performed. These options can be used to produce a variety of behaviors. The following examples are drawn from discussions of schema construction in public records of the XML Schema Working Group. 1) Unconditionally follow xsi:schemaLocation Applies to a processor that dereferences every supplied xsi:schemaLocation, and which reflects a (fatal) processor-specific error if any one or more such references fail to resolve to schema documents for the appropriate namespace. --where=hints --how=literal --onfailure=fatal 2) Conditionally follow xsi:schemaLocation Same as above, but no error is reflected if any one or more such references fail to resolve, resolve to something other than a schema document, or to a schema document for the wrong namespace. If any of those conditions occur, then that schemaLocation is treated as if it were not supplied. --where=hints --how=literal --onfailure=continue 3) Unconditionally ignore xsi:schemaLocation Applies to a processor which in all cases ignores xsi:schemaLocation attributes in instance documents. This one can be achieved using any set of options that does not include --where=hints. For example: --where=cache --where=cache --where=namespace --how=catalog --how=literal --eager=yes --onfailure=continue ... End of Figment schema construction options ... I think example 3) illustrates that what is requested in comment #3 and comment #5 is possible. Or am I missing something?
Received on Wednesday, 21 March 2007 17:07:49 UTC