- From: Andrew Welch <andrew.j.welch@gmail.com>
- Date: Tue, 18 Mar 2008 14:52:39 +0000
- To: "Michael Kay" <mike@saxonica.com>
- Cc: xmlschema-dev@w3.org
On 18/03/2008, Michael Kay <mike@saxonica.com> wrote: > > > What's the best way to model "element with text content and > > attributes"? For example: > > > > <foo bar="b" baz="b"> only text allowed </foo> > > > > I've used this before, but it seems bulky: > > > > <xs:complexType name="foo"> > > <xs:simpleContent> > > <xs:extension base="xs:string"> > > <xs:attribute name="bar" type="xs:string"/> > > <xs:attribute name="baz" type="xs:string"/> > > </xs:extension> > > </xs:simpleContent> > > </xs:complexType> > > > > > > This thread has suggested you can do this: > > > > <xs:complexType name="foo" mixed="true"> > > <xs:attribute name="bar" type="xs:string"/> > > <xs:attribute name="baz" type="xs:string"/> </xs:complexType> > > > > Is that right? If so, is that shorthand for the above? > > > They are two types that will validate the same set of instances, but they > are not equivalent. For example, the first one can be restricted to create > another type with a pattern or enumeration facet, the second one can't. They > will also generate a different PSVI, and have different behaviour in > schema-aware queries and stylesheets (one will atomize to xs:string, the > other to xs:untypedAtomic). > > I would avoid using mixed content except where both child elements and child > text nodes are allowed. Ahh ok, thanks. The "official" way is the former version - worth checking because its a long way from intuitive. -- Andrew Welch http://andrewjwelch.com Kernow: http://kernowforsaxon.sf.net/
Received on Tuesday, 18 March 2008 14:53:28 UTC