- From: <Farid.Mahini@L-3com.com>
- Date: Mon, 21 Feb 2005 11:17:31 -0500
- To: richard.liu@ubs.com
- Cc: xmlschema-dev@w3.org
Hi Richard,
Your schema does not seem to connect the content of 'validTypes' and the
vlaues used in the 'measurement/type' element. I.e. your XMl document will
validate using this schema even if the value of type is not one of
validTypes. I am not sure this the right way of doing it or not, but seems
to tie the validTypes and measurement/type.
XML Schema:
<xs:schema ......>
<xs:element name="Measurements">
<xs:complexType>
<xs:sequence>
<xs:element name="validTypes" type="myAAA"/>
<xs:element name="measurement" type="myBBB"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:key name="myId">
<xs:selector xpath="./validTypes/type"/>
<xs:field xpath="@hwType"/>
</xs:key>
<xs:keyref name="myIdref" refer="myId">
<xs:selector xpath="./measurement/name"/>
<xs:field xpath="@hwType"/>
</xs:keyref>
</xs:element>
<xs:complexType name="myAAA">
<xs:sequence>
<xs:element name="type" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="myBBB">
<xs:sequence>
<xs:element name="name"/>
</xs:sequence>
</xs:complexType>
<xs:attribute name="hwType" type="xs:string"/>
</xs:schema>
XML input:
</Measurements......>
<validTypes>
<type hwType="analog"/>
<type hwType="digital"/>
<type hwType="undefined"/>
</validTypes>
<measurement>
<name hwType="analog">Flow</name>
</measurement>
<measurement>
<name hwType="digital">Heading</name>
</measurement>
<measurement>
<name hwType="bus">Alt</name>
</measurement>
</Measurements>
-Farid
> -----Original Message-----
> From: richard.liu@ubs.com [mailto:richard.liu@ubs.com]
> Sent: Friday, February 18, 2005 5:49 AM
> To: kbuchcik@4commerce.de; Farid.Mahini@L-3com.com
> Cc: xmlschema-dev@w3.org
> Subject: RE: Facets
>
>
> This seems to do what Farid wanted, and it validates in
> xmlspy 2005 sp2:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
> elementFormDefault="qualified" attributeFormDefault="unqualified">
> <xs:element name="measurements">
> <xs:annotation>
> <xs:documentation>Testing my
> understanding of xs:key and xs:keyref. If this works, it
> could become the basis for translating an FDDL into an XML
> schema.</xs:documentation>
> </xs:annotation>
> <xs:complexType>
> <xs:sequence>
> <xs:element name="validTypes">
> <xs:complexType>
> <xs:sequence>
>
> <xs:element name="validType" type="xs:string" maxOccurs="unbounded"/>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> <xs:element name="measurement"
> maxOccurs="unbounded">
> <xs:complexType>
> <xs:sequence>
>
> <xs:element name="name" type="xs:string"/>
>
> <xs:element name="type" type="xs:string"/>
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> </xs:sequence>
> </xs:complexType>
> <xs:key name="validType">
> <xs:selector xpath="validTypes/validType"/>
> <xs:field xpath="."/>
> </xs:key>
> <xs:keyref name="measurementType" refer="validType">
> <xs:selector xpath="measurement"/>
> <xs:field xpath="type"/>
> </xs:keyref>
> </xs:element>
> </xs:schema>
>
> <?xml version="1.0" encoding="UTF-8"?>
> <!-- edited with XMLSpy v2005 sp2 U (http://www.altova.com)
> by Rene Brunner (UBS AG) -->
> <measurements
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xsi:noNamespaceSchemaLocation="D:\My
> Documents\Work\WBml\Forms\Schema\keyrefTest.xsd">
> <validTypes>
> <validType>analog</validType>
> <validType>digital</validType>
> <validType>bus</validType>
> <validType>undefined</validType>
> </validTypes>
> <measurement>
> <name>airflow</name>
> <type>analog</type>
> </measurement>
> <measurement>
> <name>heading</name>
> <type>digital</type>
> </measurement>
> </measurements>
>
> Regards,
> Richard
>
> > -----Original Message-----
> > From: xmlschema-dev-request@w3.org
> > [mailto:xmlschema-dev-request@w3.org]On Behalf Of Kasimier Buchcik
> > Sent: Thursday, February 17, 2005 20:40
> > To: Farid.Mahini@L-3com.com
> > Cc: xmlschema-dev@w3.org
> > Subject: Re: Facets
> >
> >
> >
> > Hi,
> >
> > Farid.Mahini@L-3com.com wrote:
> > > Thank you for your comment.
> > >
> > > I am planning on using this method (actually currently in
> > the middle of
> > > Michael Kay's XSLT2.0 book) in the way you mentioned it:
> > >
> > > I am creating XML files for running tests on various
> > 'boxes' which have
> > > different configurations (#of cards, channels, so on). I
> > was planning on
> > > using the XSLT to create the hardware dependant schema
> > using user hardware
> > > selection. It seems I am on the righttrack on that section
> > of the task.
> > >
> > > However, within each XML document, the user defines their
> own set of
> > > definitions to be used as enum values. Michael Kay
> > suggested using the
> > > 'key/keyref' elements; I tried it, but XMLSpy seems to
> > validate it even
> > > though I intentionally used an invalid attribute. I am new
> > at this and could
> > > be my code. Please point my error in the following example
> > I used to test
> > > the key/keyref element?
> > >
> > > The schema:
> > > <xs:schema ....>
> > > <xs:element name="Measurements">
> > > <xs:complexType>
> > > <xs:sequence>
> > > <xs:element name="AAA" type="myAAA"/>
> > > <xs:element name="BBB" type="myBBB"/>
> > > </xs:sequence>
> > > </xs:complexType>
> > > <xs:key name="myId">
> > > <xs:selector xpath="./AAA/a"/>
> > > <xs:field xpath="@a"/>
> > > </xs:key>
> > > <xs:keyref name="myIdref" refer="myId">
> > > <xs:selector xpath="./BBB/b"/>
> > > <xs:field xpath="@b"/>
> > > </xs:keyref>
> > > </xs:element>
> > > <xs:complexType name="myAAA">
> > > <xs:sequence>
> > > <xs:element name="a" maxOccurs="unbounded">
> > > <xs:complexType>
> > > <xs:attribute name="id"
> > > type="xs:string" use="required"/>
> > > </xs:complexType>
> > > </xs:element>
> > > </xs:sequence>
> > > </xs:complexType>
> > > <xs:complexType name="myBBB">
> > > <xs:sequence>
> > > <xs:element name="b" maxOccurs="unbounded">
> > > <xs:complexType>
> > > <xs:attribute name="idref"
> > > type="xs:string" use="required"/>
> > > </xs:complexType>
> > > </xs:element>
> > > </xs:sequence>
> > > </xs:complexType>
> > > </xs:schema>
> > >
> > >
> > > The XML input doucment:
> > > <Measurements .....>
> > > <AAA>
> > > <a id="x"/>
> > > <a id="y"/>
> > > </AAA>
> > > <BBB>
> > > <b idref="x"/>
> > > <b idref="y"/>
> > > <b idref="z"/> // should cause an error since only
> > 'x' and 'y' are
> > > valid choices.
> > > </BBB>
> > >
> > > </Measurements>
> > [...]
> >
> > XMLSpy does not evaluate this correctly. The XPath expression
> > of the IDC
> > fields used here should resolve to the attributes "a" or "b" only.
> > If those XPath expressions are substituted for "@id" and
> > "@idref" I get
> > keyref error you expected with Libxml2, Xerces 2.6.2 and XSV 2.7.
> >
> > Regards,
> >
> > Kasimier
> >
> >
>
>From E-mail Administrator
ATTENTION PLEASE: Do you have our new e-mail addresses?
The current L-3 standard is First.Last @ L-3com.com
E-mail addressed to First.Last @ te.L-3com.com will no longer be delivered.
Please update your address book using the "From" address on this email.
Received on Monday, 21 February 2005 16:17:49 UTC