Re: Is name attribute essential in an attribute

Hi Ajay,

> I am an XML newbie and am trying to understand the Schema
> documentation.

Have you read the Primer? That's the best place to start.

> In the document http://www.w3.org/TR/xmlschema-1/, "XML
> Representation Summary: attribute Element Information Item", the
> name attribute is not shown as bold, which should mean it is
> optional. However the property description says:
>         {name} The ·actual value· of the name [attribute]
> Since .absent. is not allowed , doesn't it mean name is necessary attribute.
>         I am confused. Please Help

Each section of the Recommendation that deals with XML syntax follows
the pattern:

  XML representation syntax
  ---
  if something is true then:
    definition of a set of properties
  ---
  if something else is true then:
    definition of another set of properties
  ...

Basically, each XML Schema element can follow a number of different
patterns, depending on its context and what it's actually doing. The
XML syntax for an XML Schema element is actually the most general
syntax that covers all the different uses for a particular XML Schema
element.

If you look at the attribute element information item, you see the
following breakdown:

  XML representation syntax
  ---
  If the <attribute> element information item has <schema> as its
  parent, the corresponding schema component is as follows:
    ... Attribute Declaration Schema Component with one set of
    properties ...
  ---
  otherwise if the <attribute> element information item has
  <complexType> or <attributeGroup> as an ancestor and the ref
  [attribute] is absent, it corresponds to an attribute use with
  properties as follows (unless use='prohibited', in which case the
  item corresponds to nothing at all):
    ... Attribute Use Schema Component with a set of properties...
    ... Attribute Declaration Schema Component with a different set of
    properties ...
  ---
  otherwise (the <attribute> element information item has
  <complexType> or <attributeGroup> as an ancestor and the ref
  [attribute] is present), it corresponds to an attribute use with
  properties as follows (unless use='prohibited', in which case the
  item corresponds to nothing at all):
    ... Attribute Use Schema Component with another set of
    properties ...

So the XML syntax actually covers three different situations. In the
first and second situation, the xs:attribute element has to have a
name attribute, but in the third situation it doesn't, because it has
a ref attribute. That's why the XML syntax doesn't show the name
attribute in bold.

The fact that in the first situation, the name property is defined in
terms of the name attribute implies that the name attribute has to be
present in those circumstances. If you read the XML Schema for XML
Schema (at http://www.w3.org/TR/xmlschema-1/#normative-schemaSchema)
closely, you'll see that this is actually defined within the schema
for XML Schema.

The other thing that it's useful to read when trying to work out what
attributes have to be present on a particular XML Schema element are
the sections called "Constraints on XML Representations of ...", for
example the "Constraints on XML Representations of Attribute
Declarations" at
http://www.w3.org/TR/xmlschema-1/#section-Constraints-on-XML-Representations-of-Attribute-Declarations.
These sections give you all the extra rules that can't be expressed in
XML Schema, usually co-occurrence constraints between attributes or
between attributes and child elements.
  
Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/

Received on Monday, 15 April 2002 10:28:06 UTC