Hi all,
These days I'm playing with schemas and SOM from MSXML. To learn it I used
the excellent tutorial from Mr.Costello:
http://www.xfront.com/xml-schema.html. while working through the labs I
stumbled upon a problem with substitutionGro up-s (Lab 9).
Below you can find both the schema and a sample document to test it.
Unfortunately, MSXML doesn't like the document and ends up with an error:
"### <guarantee>life time warranty</guarantee>(11) error: Element content
is invalid according to the DTD/Schema." Can someone please take a look at
it and comment on the problem. May be I am doing something wrong here or
may be someone can confirm that this is MSXML validation bug.
Thank you!
Val Melamed
The schema:
-------------------------------------------------------------------------------
<?xml version="1.0"?>
<xsd:schema xmlns:xsd="http ://www.w3.org/2001/XMLSchema"
targetNamespace ="http://www.juicers.org "
xmlns="http://www.juicers.org "
elementFormDefa ult="qualified" >
<xsd:element name="warranty" type="xsd:strin g"/>
<xsd:element name="guarantee " substitutionGro up="warranty"
type="xsd:strin g"/>
<xsd:complexTyp e name="juiceAppl iance">
<xsd:all>
<xsd:element name="descripti on" type="xsd:strin g"/>
<xsd:element ref="warranty" minOccurs="0"/>
<xsd:element name="name" type="xsd:strin g"/>
<xsd:element name="image" type="imageType "/>
<xsd:element name="weight" minOccurs="0">
<xsd:complexTyp e>
<xsd:simpleCont ent>
<xsd:extensio n base="xsd:posit iveInteger">
<xsd:attribut e name="units" type="xsd:strin g"
fixed="pounds"/>
</xsd:extension>
</xsd:simpleConte nt>
</xsd:complexType >
</xsd:element>
<xsd:element name="cost" minOccurs="0">
<xsd:complexTyp e>
<xsd:simpleCont ent>
<xsd:extensio n base="money">
<xsd:attribut e name="currency" use="required">
<xsd:simpleType >
<xsd:restrictio n base="xsd:strin g">
<xsd:enumeratio n value="USD"/>
<xsd:enumeratio n value="CAD"/>
</xsd:restriction >
</xsd:simpleType>
</xsd:attribute>
</xsd:extension>
</xsd:simpleConte nt>
</xsd:complexType >
</xsd:element>
<xsd:element name="retailer" type="xsd:anyUR I"/>
</xsd:all>
<xsd:attribut e name="id" type="xsd:ID" use="required"/>
<xsd:attribut e name="electric" type="xsd:boole an" use="required"/>
<xsd:attribut e name="type" use="required">
<xsd:simpleType >
<xsd:restrictio n base="xsd:strin g">
<xsd:enumeratio n value="press"/>
<xsd:enumeratio n value="gear"/>
<xsd:enumeratio n value="centrifu gal"/>
</xsd:restriction >
</xsd:simpleType>
</xsd:attribute>
</xsd:complexType >
<xsd:element name="juicers">
<xsd:complexTyp e>
<xsd:sequence >
<xsd:element name="juicer" type="juiceAppl iance"
minOccurs="0" maxOccurs="unbo unded"/>
</xsd:sequence>
</xsd:complexType >
</xsd:element>
<xsd:simpleTy pe name="money">
<xsd:restrictio n base="xsd:decim al">
<xsd:fractionDi gits value="2"/>
</xsd:restriction >
</xsd:simpleType>
<xsd:simpleTy pe name="imageType ">
<xsd:restrictio n base="xsd:strin g">
<xsd:pattern value="(.)+\.(g if|jpg|jpeg|bmp )"/>
</xsd:restriction >
</xsd:simpleType>
</xsd:schema>
-------------------------------------------------------------------------------
The document:
-------------------------------------------------------------------------------
<?xml version="1.0"?>
<juicers xmlns="http://www.juicers.org "
xmlns:xsi="http ://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocat ion="http://www.juicers.org
C:\xml-schemas\labs\la b09\answer\juic ers.xsd">
<juicer id="mighty-oj" electric="false " type="press">
<name>OJ Home Juicer</name>
<image>images\m ighty_oj.gif</image>
<cost currency="USD"> 41.95</cost>
<description>Th ere's just no substitute for a properly
squeezed orange in the morning. So delicate and refreshing. The finest
hotels use mechanical juicers of this type for their most discriminating
guests. This is the largest selling juicer of its kind. It's a
beautiful little all-metal piece in baked enamel and polished chrome; it
even won the Frankfurt Fair Award for its design. Uses no electricity and
produces no non-recyclable waste as do frozen juices.</description>
<guarantee>life time warranty</guarantee>
<retailer>htt p://www.thewhitewha le.com/oj.htm</retailer>
</juicer>
<juicer id="champion" electric="true" type="gear">
<cost currency="USD"> 239.00</cost>
<retailer>htt p://www.grainsandgr eens.com/juicerparts.htm l</retailer>
<description>Th e Champion Juicer is the answer to every juicing
problem. Because it operates on the mastication process principle, the
Champion chews the fibers and breaks up the cells of vegetables and fruits.
This give you more fiber, enzymes, vitamins and trace minerals. The juice
will be a darker, richer color, with a sweeter, richer more full-bodied
flavor.</description>
<name>Champio n Juicer</name>
<image>images\c hampion.gif</image>
</juicer>
<juicer id="green-power" electric="true" type="gear">
<name>Green Power Gold Juice Extractor</name>
<image>images\g reenPower.jpg</image>
<description>Yo u are not What You Eat, But What you Absorb. The
rate of absorption of juice has never been considered a factor in comparing
juicers. With the introduction of Green Power's magnetic Twin Gear
press, this has now changed. Experiments conducted by the Green Power Co.
Research and Development Dept. show the rate of absorption of green juice
using dual gear extraction is up to five times greater than using
centrifugal extraction.</description>
<cost currency="USD"> 459.99</cost>
<retailer>htt p://www.discountjui cers.com/greencomplete.h tml</retailer>
</juicer>
<juicer id="juiceman-jr" electric="true" type="centrifug al">
<description>Th e Juiceman Jr. juicer is the little brother to the
Juiceman II juicer that is seen on television. The Juiceman Jr. is a pulp
ejection juicer that allows you to juice continuously without having to stop
and clean the machine. Made popular by Jay Kordich, the Juiceman series of
juicers have been a popular addition to millions of households all across
this nation. This machine comes ready to use out of the box</description>
<warranty>1 yr. Limited Warranty </warranty>
<name>Juicema n Jr.</name>
<image>images\j uiceman.jpg</image>
<weight>10</weight>
<cost currency="USD"> 82.00</cost>
<retailer>htt p://www.juicebars.c om/juicers/jm1.htm</retailer>
</juicer>
<juicer id="omega" electric="true" type="centrifug al">
<description>Th is heavy-duty, American-made juicer has a powerful
GE motor that spins at 3,600 rpm to extract 20% - 30% more juice than pulp
ejector models (according to independent laboratory tests). Large capaciy
bowl hold a ful 1-2 quarts of fruits or vegetables - compared to just one
pint for many brands. Easy-cleaning design with lift out disposable
filter.</description>
<name>Omega Juicer</name>
<image>images\o mega.jpg</image>
<cost currency="USD"> 234.00</cost>
<retailer>htt p://www.boschcanada .com/omega.htm</retailer>
</juicer>
<juicer id="wheateena" electric="true" type="gear">
<description>Wh eatgrass juice contains 70% "crude" chlorophyll.
Chlorophyll by definition being the green pigment in plants. It is
considered the "blood" of plants, due to the similarity to our blood in
molecular structure. This juicer extracts the juice out of the blades of
wheatgrass. Normal fruit and vegetable juicers will not juice
wheatgrass</description>
<guarantee>Moto r Guarantee: For Home Use: one (1) year. For
Commercial Use: six (6) months.</guarantee>
<name>Wheatee na Wheatgrass Juicer</name>
<image>images\w heateena.jpg</image>
<weight>46</weight>
<cost currency="USD"> 639.99</cost>
<retailer>htt p://www.rawfoods.co m/marketplace/heavyduty.html</retailer>
</juicer>
</juicers>
-------------------------------------------------------------------------------