Strange XML nesting and schema validation

A

Arthur

I've come across some strange xml, that I need to deal with, it looks
like this:-

<root>
<foo attr="1">Some random strange text.
<bar attr="2">blar</bar>
<bar attr="3">blar blar</bar>
<bar attr="4">blar blar blar</bar>
</foo>
</root>

Its the 'Some random strange text' in the between the foo tags along
with all the bar tags.
First of all, if the above actually legal well formed XML?

And if so, what would some schema look like to validate it?

I've tried something similar to this:-

....
<xs:element name="foo">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="attr" type="xs:int" use="required"/>
</xs:extension>
</xs:simpleContent>
<xs:choice>
<xs:element name="bar" minOccurs="0">
<xs:complexType>
<xs:attribute name="attr" type="xs:int" use="required"/>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
....

Buts this doesn't work. :(

Anyone got any ideas?

Arthur.
 
P

Priscilla Walmsley

Hi Arthur,

It's allowed - it's known as mixed content. I wouldn't recommend it for
anything other than free-form text (like books, HTML, etc.) but if you
have no control over it...

Here is a type that will validate it:

<xs:element name="foo">
<xs:complexType mixed="true">
<xs:sequence>
<xs:element name="bar" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute name="attr" type="xs:int" use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="attr" type="xs:int" use="required"/>
</xs:complexType>
</xs:element>

Hope that helps,
Priscilla
 
R

Richard Tobin

Arthur said:
Its the 'Some random strange text' in the between the foo tags along
with all the bar tags.
First of all, if the above actually legal well formed XML?

Consider

<p>This is <b>bold</b><p>

This "mixed context" is perfectly normal when XML is used for marking
up text - which was the original purpose of SGML and XML - but is not
usually a good idea when it's used for representing data structures.
And if so, what would some schema look like to validate it?

See http://www.w3.org/TR/xmlschema-0/#mixedContent

-- Richard
 

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

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,236
Members
46,825
Latest member
VernonQuy6

Latest Threads

Top