Noob XSD question

A

Alfie Noakes

I've been wrestling with this all today and just can't crack it! It's
driving me mad. Arggghhh.

Given a very simple "database type" XML file....

<database name="mydatabase">
<table name="fruit">
<row>
<field name="name">Kumquat</field>
<field name="colour">Kind of orangey</field>
</row>
<row>
<field name="name">Lychee</field>
<field name="colour">Reddish</field>
</row>
</table>
</database>


I simply cant get the XSD right to validate when the text part of the
<field> element is missing ( i.e. Kumquat or Lychee) Here's what I
have:


<xs:complexType name="fieldtype">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>


I've tried xs:restriction entries everywhere I can think of but
nothing works.

Someone please put me out of my misery before I go and open a vein!

Cheers,
Alfie
 
M

Martin Honnen

Alfie said:
I've been wrestling with this all today and just can't crack it! It's
driving me mad. Arggghhh.

Given a very simple "database type" XML file....

<database name="mydatabase">
<table name="fruit">
<row>
<field name="name">Kumquat</field>
<field name="colour">Kind of orangey</field>
</row>
<row>
<field name="name">Lychee</field>
<field name="colour">Reddish</field>
</row>
</table>
</database>


I simply cant get the XSD right to validate when the text part of the
<field> element is missing ( i.e. Kumquat or Lychee)


Well what exactly do you want to specify in your schema? A minimum
length? Then define a simpleType with the minimum length and use that
simple type name
<xs:complexType name="fieldtype">
<xs:simpleContent>
<xs:extension base="xs:string">

here instead of xs:string as the base type.
 
A

Alfie Noakes

Great clue! Thanks very much for the help.
Here's what I got...

<xs:simpleType name="rawdata">
<xs:restriction base="xs:string">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>

<xs:complexType name="fieldtype">
<xs:simpleContent>
<xs:extension base="rawdata">
<xs:attribute name="name" type="xs:string" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>



I don't suppose you could give me some pointers regarding how to
approach making sure the field element name attribute is unique within
a table? Looks like I'm in for a fun evening trying to sort that one
out.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,733
Messages
2,569,440
Members
44,829
Latest member
PIXThurman

Latest Threads

Top