Trang handling of (text|element) content

"J. David Eisenberg" <[email protected]>
Newsgroups gmane.text.xml.relaxng.general
Message-ID <[email protected]>
By "popular demand" my XML class wants to know about XML Schema.
One example is a document that consists of one or more lists.
A list consists of one or more items. Each item consists of text
or a list. (Yes, I'm teaching about recursive definitions.)
Sample document follows:

<document>
  <list>
    <item> First item outer </item>
    <item> Second item outer </item>
    <item>
      <list>
          <item> nested first </item>
      </list>
    </item>
    <item> Third item outer </item>
  </list>
</document>

Relax NG follows:

<grammar xmlns="http://relaxng.org/ns/structure/1.0">

<start>
<element name="document">
   <oneOrMore>
      <ref name="list-defn"/>
   </oneOrMore>
</element>
</start>

<define name="list-defn">
   <element name="list">
      <oneOrMore>
         <element name="item">
            <choice>
               <text />
               <ref name="list-defn"/>
            </choice>
         </element>
      </oneOrMore>
   </element>
</define>

</grammar>

Here's what Trang makes of it (with blank lines inserted for ease of
reading).

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
elementFormDefault="qualified">
  <xs:element name="document">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="list"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="list">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="unbounded" ref="item"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  
  <xs:element name="item">
    <xs:complexType mixed="true">
      <xs:sequence>
        <xs:element minOccurs="0" ref="list"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

But the "item" element is NOT mixed; if you make an item mixed as 
follows, then it's invalid according to Relax NG, but not according to
XML Schema.

<item> some text and a...
   <list>
      <item>nested</item>
   </list>
</item>

My questions are:

1) Can I write an XML Schema that will do exactly the same thing that
   the Relax NG does?
2) If so, how many hoops must I jump through to accomplish it?
3) I'm sure Trang's output is reasonable, but I don't understand the
   reasoning.  Any simple explanations?

-- 
J. David Eisenberg  http://catcode.com/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.