I wouldn't want to start a religious war, but - IMHO - it would be
better to stick to a single naming convention, either Decl or
Declaration and use it consistently everywhere. Otherwise we'll always
be wondering if we're typing things correctly...
To solve Interface/Implementation ambiguities you could use an
additional Intf/Impl suffix (as it already happens in several places).
- Fabio
On Friday, May 3, 2002, at 12:24 PM, [EMAIL PROTECTED] wrote:
> Right after I posted the previous message, I realized that there are so
> many name conflicts between the interface names and the class names
> already
> in impl.xs package.
>
> To avoid writing the full package name (org.apache.xerces.impl.xs.psvi)
> all
> over the files, I've changed some of the interface names from XXXDecl to
> XXXDeclaration.
>
> The updated files are attached. I'm also cc'ing the user list, in case
> people there are interested.
>
> Thanks,
> Sandy Gao
> Software Developer, IBM Canada
> (1-905) 413-3255
> [EMAIL PROTECTED]
>
> (See attached file: psvi.zip)
>
>
>
> Sandy
> Gao/Toronto/IB To: xerces-j-
> [EMAIL PROTECTED]
> M@IBMCA cc:
> Subject: [Xerces2] Please
> review: schema component API
> 05/03/2002
> 12:16 PM
> Please respond
> to
> xerces-j-dev
>
>
>
>
>
> Hi all,
>
> The attached is the schema component API proposed by Elena Litani, and
> reviewed by some of the Xerces developers. Because it's experimental,
> the
> interfaces are currently in the package impl.xs.psvi.
>
> Comments are welcome. In particular, we'd appreciate your input on the
> following questions.
>
> 1. Annotation
>
> An "annotation" contains:
> {application information}: A sequence of element information items.
> {user information}: A sequence of element information items.
> {attributes}: A sequence of attribute information items.
>
> How can we expose *information items*, in what form?
>
> 1) DOM nodes: this is easy to implement (because we already parse schema
> documents to DOM trees), and it benefits DOM users, but SAX users won't
> be
> able to use it, and we don't want a schema API to have explicit
> dependency
> on DOM.
> 2) String representation: this doesn't depend on a certain API, but it's
> inefficient (we need to serialize DOM nodes to strings), and we also
> need
> to provide namespace declarations, and xml:base, xml:lang attributes
> that
> are defined on ancestor elements.
> 3) Other suggestions?
>
> 2. getName()/getNamespace()
>
> Currently these two methods are on XSObject, and inherited by each
> component interface. But some components don't have name/namespace
> properties (particle, model group, wildcard, etc.). So should such
> methods
> be on the base interface, or should individual interfaces (where
> name/namespace make sense) define them?
>
> We think it depends on what's the typical use of the components:
> 1) "check names; if names satisfy certain condition, cast, further
> operation". If this is the typical use, then the methods should be on
> XSObject.
> 2) "cast; get names; get other properties". In this case, casting
> happens
> anyway, and the methods for names should be on individual interfaces.
>
> What do you think?
>
> 3. Actual values
>
> How to expose actual values? Do we want to define interfaces to
> represent
> the actual values (date/time types especially)? After we have such
> interfaces, we can return "Object" from related methods.
>
> Currently the methods return a String: the lexical representation of the
> value. Again we have a question: should it be any lexical
> representation,
> or normalized, or canonical representation? The canonical one would make
> more sense, but:
> 1) ".0" is appended to integer values (for example, the canonical
> representation for integer "1" is "1.0");
> 2) canonical representation of "base64Binary" is not finalized yet (as
> far
> as I know);
> 3) do we have support for URI canonicalization?
>
> A related issue to "actual values" is how to expose "equality" and
> "ordered" fundamental facets. "Equality" is a fundamental facets that
> every
> value space (hence, every simple type) has, so it makes sense to have a
> method on XSSimpleType to check whether two *actual* values are equal.
> It
> also makes sense to compare the order of two *actual* values if the
> type is
> ordered (partially or totally). But both depend on how *actual* values
> are
> represented. We may want to add these two methods when we have
> interfaces
> for actual values.
>
> 4. Get global type definitions
>
> One XSModel, you can find these two methods:
>
> public XSNamedMap getComponents(short objectType);
> public XSTypeDefinition getTypeDefinition(String name,
> String namespace);
>
> The first method *getComponents* takes a parameter indicating the kind
> of
> components, and returns all components of that kind. For type
> definitions,
> we currently have 2 constants: SIMPLE_TYPE and COMPLEX_TYPE, so the user
> can either (using *getComponents*) get all simple type definitions, or
> get
> all complex type definitions.
>
> The second method "getTypeDefinition" returns a type definition that
> matches the given name/namespace. So this method doesn't care about
> whether
> it's simple or complex type.
>
> This seems to be a bit inconsistent. Two approaches can be adopted to
> solve
> it:
> 1) Remove *getTypeDefinition* and introduce two methods:
> getSimpleTypeDefinition and getComplexTypeDefinition.
> 2) Remove constants SIMPLE_TYPE and COMPLEX_TYPE, then introduce a new
> one
> TYPE_DEFINITION.
>
> Of course, if approach 2 is taken, a method will be introduced to
> TypeDefinition interface to tell whether the type is simple or complex.
>
>> From the schema spec, simple and complex types share the same symbol
>> space,
> and "schema" only has one property {type definitions} for both of them,
> so
> approach 2 seems to be more proper, conceptually.
>
> But from certain users, we understand that approach 1 is more preferred,
> because it returns what the user really wants.
>
> What do you think?
>
> 5. min/max occurrence values
>
> On XSParticle interface, getMin/MaxOccurs returns *int*. Is this enough.
> The spec says nonNegtiveInteger (0~+inf). Should we return BigInteger?
> Would *long* make it better? (*long* doesn't solve the problem, just it
> allows more values than *int*).
>
> Thanks,
> Sandy Gao
> Software Developer, IBM Canada
> (1-905) 413-3255
> [EMAIL PROTECTED]
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]