Phrytes
Phrytes

Reputation: 43

Is it wrong in XML to have element nodes as siblings of text nodes?

Is the following "allowed" or simply bad use of XML? I cannot find restrictions on this, but it feels a bit weird.

<example>
    You can choose from
    <option>this</option>
    <option>that</option>
    <option>something else</option>
    Choose wisely.
</example>

If it is wrong, what is a nice alternative?

Upvotes: 4

Views: 180

Answers (3)

kimbert
kimbert

Reputation: 2422

In addition to the answers above (with which I agree) I would add that it depends on the purpose of the XML document. If the purpose is to communicate business data between applications then validation of the entire document may be a requirement. Mixed content cannot be strictly validated using XML Schema, and is usually avoided in business-to-business communications unless it is for documentation purposes only.

Upvotes: 0

Michael Kay
Michael Kay

Reputation: 163595

I think it's best to reserve mixed content for one purpose only: to annotate (or "mark-up") sections of natural language text. So a good test to apply is, does the text still make sense if the markup is removed?

In your example, my only criticism would be that if you remove the markup, what's left isn't grammatical: it's missing a full-stop after the first sentence.

Upvotes: 1

kjhughes
kjhughes

Reputation: 111726

No, mixing elements and text is completely normal in XML.

You may be more familiar with data-oriented uses of XML, but XML actually evolved from a basis in representing documents, where marking up text within other text is the norm. Its predecessor, SGML, was like this, and HTML is still like this today.

In XML Schema (XSD), mixed="true" designates mixed text in a content model.

Upvotes: 4

Related Questions