OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

 


 

   RE: [xml-dev] XML Schema Question: specifying restrictions for alist of

[ Lists Home | Date Index | Thread Index ]

On Wed, 2004-04-07 at 15:11, Michael Kay wrote:
> You need to do restriction and extension in two separate steps, via an
> intermediate named type.
> 
> I don't think it's possible to declare that only one element can have
> default="true" and at the same time allow multiple elements to specify
> default="false". The XPath expression allowed in unique/key constraints
> aren't rich enough. However, if default="false" is never specified (or is
> only specified once), then I think it can probably be done.

Yes, that's a hack prone to interoperability issues, but this schema:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";
elementFormDefault="qualified">
  <xs:element name="computer-list">
    <xs:complexType>
      <xs:sequence>
        <xs:element minOccurs="0" maxOccurs="unbounded" ref="computer"/>
      </xs:sequence>
    </xs:complexType>
    <xs:key name="atLeastOnedefault">
      <xs:selector xpath="."/>
      <xs:field xpath="computer/@default"/>
    </xs:key>
    <xs:unique name="atMostOnedefault">
      <xs:selector xpath="computer"/>
      <xs:field xpath="@default"/>
    </xs:unique>
  </xs:element>
  <xs:element name="computer">
    <xs:complexType>
      <xs:simpleContent>
        <xs:restriction base="xs:anyType">
          <xs:simpleType>
            <xs:restriction base="xs:token">
              <xs:enumeration value="Dell"/>
              <xs:enumeration value="HP"/>
            </xs:restriction>
          </xs:simpleType>
          <xs:attribute name="default">
            <xs:simpleType>
              <xs:restriction base="xs:token">
                <xs:enumeration value="true"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:restriction>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
</xs:schema>

works fine with Xerces2-J.

Eric

-- 
Tired to type XML tags?
                                                       http://wikiml.org
Upcoming XML schema languages tutorial:
 - Amsterdam   -half day- (18/04/2004)        http://masl.to/?P220516D7
------------------------------------------------------------------------
Eric van der Vlist       http://xmlfr.org            http://dyomedea.com
(ISO) RELAX NG   ISBN:0-596-00421-4 http://oreilly.com/catalog/relax
(W3C) XML Schema ISBN:0-596-00252-1 http://oreilly.com/catalog/xmlschema
------------------------------------------------------------------------





 

News | XML in Industry | Calendar | XML Registry
Marketplace | Resources | MyXML.org | Sponsors | Privacy Statement

Copyright 2001 XML.org. This site is hosted by OASIS