Re: [XML Schema 1.1] I need an example that illustrates the usefulness of xs:error

Hi Roger,
   It's said in the XML Schema 1.1, spec that xs:error is mainly
useful in "conditional type alternative" (CTA) definitions.

As far as I know, xs:error is a special type which is present
implicity in all 1.1 Schemas. If the xs:error type get's applied to
anything (like, element or attribute), that component becomes invalid.

So, for the above CTA definition, if the 3rd XPath test succeeds, the
element is invalid for such data.

I think, having something like xs:error is neccessary for type
alternatives. Because, we must be able to say, that for what
condition, an element should be invalid.

The attribute definition, for "kind" which you have defined, describes
how "kind" should be represented. But it doesn't say, that for what
values, of "kind" the "Publication" element should have which type
(which is possible with CTA).

On Wed, Jul 22, 2009 at 1:26 AM, Costello, Roger L.<costello@mitre.org> wrote:
>
> Hi Folks,
>
> Consider this usage of xs:error:
>
> <xs:element name="Publication" type="PublicationType">
>     <xs:alternative test="@kind eq 'magazine'" type="MagazineType" />
>     <xs:alternative test="@kind eq 'book'" type="BookType" />
>     <xs:alternative test="(@kind ne 'book') and (@kind ne 'magazine')"
>                     type="xs:error" />
> </xs:element>
>
> It says that if an instance document has a Publication element with a kind attribute not equal to 'book' or 'magazine' then throw an error.
>
> But that doesn't illustrate the usefulness of xs:error because the same functionality can be accomplished by simply constraining @kind:
>
> <attribute name="kind">
>    <simpleType>
>        <restriction base="string">
>            <enumeration value="book" />
>            <enumeration value="magazine" />
>        </restriction>
>    </simpleType>
> </attribute>
>
> Can you provide an example that illustrates the usefulness of xs:error?
>
> /Roger


-- 
Regards,
Mukul Gandhi

Received on Wednesday, 22 July 2009 08:45:32 UTC