[Home] [By Thread] [By Date] [Recent Entries]

  • To: "'Richard Rowell'" <richard@b...>, xml-dev@l...
  • Subject: RE: XML-SCHEMA Q: Adding an xsd:attribute to an xsd:element
  • From: "Leach, Phillip (Contractor)" <leacp1@b...>
  • Date: Thu, 15 May 2003 17:07:13 +0100

Try the following:

<?xml version = "1.0" encoding = "UTF-8"?>
<!--Generated by Turbo XML 2.4.0.100. Conforms to w3c
http://www.w3.org/2001/XMLSchema-->
<xsd:schema xmlns:xsd = "http://www.w3.org/2001/XMLSchema"
	 elementFormDefault = "qualified">
	<xsd:element name = "box">
		<xsd:complexType>
			<xsd:sequence>
				<xsd:element name = "size">
					<xsd:complexType>
						<xsd:sequence>
							<xsd:element name =
"width">
	
<xsd:complexType>
	
<xsd:simpleContent>
	
<xsd:extension base = "xsd:integer">
	
<xsd:attribute name = "units" type = "xsd:string"/>
	
</xsd:extension>
	
</xsd:simpleContent>
	
</xsd:complexType>
							</xsd:element>
							<xsd:element name =
"height">
	
<xsd:complexType>
	
<xsd:simpleContent>
	
<xsd:extension base = "xsd:integer">
	
<xsd:attribute name = "units" type = "xsd:string"/>
	
</xsd:extension>
	
</xsd:simpleContent>
	
</xsd:complexType>
							</xsd:element>
						</xsd:sequence>
					</xsd:complexType>
				</xsd:element>
			</xsd:sequence>
		</xsd:complexType>
	</xsd:element>
</xsd:schema>

--

<?xml version = "1.0" encoding = "UTF-8"?>
<box xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation = "test.xsd">
 	<size>  
		 <width units = "cm">50</width>  
		 <height units = "m">1</height>
	 </size>
</box>


Phil.
-----Original Message-----
From: Richard Rowell [mailto:richard@b...]
Sent: 15 May 2003 16:47
To: xml-dev@l...
Subject:  XML-SCHEMA Q: Adding an xsd:attribute to an
xsd:element


I'm sure the answer is painfully obvious, but I cant figure out how to
add an attribute to an element.  I want a structure like this:

<box>
 <size>
   <width units='cm'>50</width>
   <height units='m'>1</width>
 </size>
</box>

AFAICT I can only attach attributes to complex types in XMLSchema, but
width and height are not complex types (are they?).  I know how to
attach the "units" attribute to the size element, but I don't want it
there.  This is what I have tried:

<xsd:element name="size">
     <xsd:complexType>
      <xsd:all>
       <xsd:element name="width" type="xsd:integer" minOccurs='1'
maxOccurs='1'>
        <xsd:attribute name='units' type="xsd:string"/>
       </xsd:element>
       <xsd:element name="height" type="xsd:integer" minOccurs='1'
maxOccurs='1'/>
      </xsd:all>
     </xsd:complexType>
    </xsd:element>

Xerces rejects this though:
** Schema error: src-element.0: the content of an element information
item must match (annotation?, (simpleType | complexType)?, (unique | key
| keyref)*). **
LINE: 1
PUBLIC_ID: null
SYSTEM_ID: 

-- 
Richard Rowell <richard@b...>

Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member