It won't do what you intend, whatever that is, until you define "set"
and clean out the "aa/" cruft.

BTW, what do you have against empty elements written as:

<ref name="book"/>

instead of:

<ref name="book"></ref>

Bob
PS My dictionary says appoggiatura has two g's.


Aaron wrote:
> Oh so this is where I am confused. I thought that the start element
> says what the root element is and if I wanted multiple possible roots
> I would need multiple start elements.
>
> But if a choice element under start does the same thing it is much
> clearer to do it that way.
>
> Anyways I cleaned up the schema a bit as Norman suggested.
> Now does it do what I intend is the question.
> I am attaching the newest version tell me if this is any better.
>
> Thanks
> Aaron
>
>

> Yahoo! Groups Links
>
>
>

>
>
> ------------------------------------------------------------------------
>
> <?xml version="1.0" encoding="UTF-8"?>
> <grammar ns="" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
>   <start>
>     <!--Here is an outline of the structure of lilach a book can be the root element it must have either one or more pieces or  one or more songs-->
>     <!--here are the structural elements for the xml type -->
>
> <choice>
> <ref name="book"></ref>
> <ref name="piece"></ref>
> <ref name="song"></ref>
> <ref name="set"></ref>
> aa/</choice>
>   </start>
>
> <define name="book">
>   <element name="book">
>     <element name="title">
>       <text/>
>     </element>
>     <element name="bookinfo">
>       <text />
>       <ref name="frontmatter"/>
>     </element>
>     <!-- don't remember whats with set -->
>   </element>
>  
>   <!--A book can have one or more pieces or one or more songs -->
>   <choice>
>     <oneOrMore>
>     <element name="piece">
>       <text />
>       <optional>
>       <element name="pieceinfo">
>         <text />
>         <ref name="frontmatter"/>
>       </element>
>       </optional>
>       <!-- a piece can be without any movements(the child of piece will be score or if it has movements then movement will be the child of piece-->
>      
>       <ref name="movement"></ref>
>
>       <!-- this ends the  movement element  -->
>
>       <!--this begins the score as the child of piece -->
>       <ref name="score"></ref>
>       <ref name="header" />
>       <ref name="midi" />
>       <ref name="measure" />
>     </element>
>   </oneOrMore>
>   <oneOrMore>
>     <ref name="song"></ref>
>   </oneOrMore>
> </choice>
>
>
> </define>
> <define name="piece">
>
>  <element name="piece">
>       <text />
> <ref name="frontmatter"></ref>
> <ref name="movement"></ref>
> <ref name="score"></ref>
> <ref name="system"></ref>
> <ref name="part"></ref>
> <ref name="header"></ref>
> <ref name="midi"></ref>
> <ref name="measure"></ref>
>     </element>
>
> </define>
> <define name="lyrics">
>   <element name="lyrics">
>     <text/>
>   </element>
>   <element name="include">
>     <attribute name="ref">
>       <data type="NCName"/>
>     </attribute>
>   </element>
>            
> </define>
>            
>            
>
>
>
>
> <define name="section">
> <element name="section">
>          <text />
>         </element></define>
>
>
>
> <!--phrase is like a div element in html -->
> <define name="phrase"><element name="phrase">
>          <text />
>         </element></define>
> <define name="motiv"><element name="motiv">
>          <text />
>         </element></define>
>
>
>
> <define name="song">
>   <element name="song">
>     <text />
>     <ref name="frontmatter"></ref>
>     <ref name="movement"></ref>
>     <ref name="score"></ref>
>     <ref name="system"></ref>
>     <ref name="part"></ref>
>     <element name="verse">
>       <text />
>     </element>
>     <optional>
>       <element name="chorus">
>       <text />
>       </element>
>     </optional>
>     <optional>
>       <element name="refrain">
>       <text />
>       </element>
>     </optional>     
>     <ref name="header"></ref>
>     <ref name="midi"></ref>
>     <ref name="measure"></ref>
>     <ref name="lyrics"></ref>
>     <text />
>   </element>
> </define>
>
> <!--Here are the score layout elements Score system part staff  which represent how a score is constructed.-->
>      
> <define name="movement">
>       <zeroOrMore>
>         <element name="movement">
>           <text />
>           <element name="movementinfo">
>             <text />
>             <ref name="frontmatter"/>
>             <text/>
>           </element>
>         </element>
>         <element name="score">
>           <text />
>           <attribute name="type">
>             <data type="NCName"/>
>           </attribute>
>           <optional>
> <!-- begin optional system element -->
>             <element name="system">
>             <text />
>             <oneOrMore>
>               <element name="part">
>                 <text />
>                 <attribute name="name">
>                 </attribute>
>                 <element name="header">
>                   <oneOrMore>
>                   <choice>
>                     <text/>
>                     <ref name="clef"/>
>                     <ref name="key"/>
>                     <ref name="time"/>
>                     <element name="comment">
>                       <text/>
>                     </element>
>                   </choice>
>                   </oneOrMore>
>                 </element>
>               </element>
>             </oneOrMore>
>             <!-- midi subelements to be added later -->
>             <optional>
>               <element name="midi">
>                 <text />
>               </element>
>             </optional>
>             </element>
>             <!--section,phrase,motiv are like a div element in html, wrappers to help divide or for styling usng external style sheet. However they have musical meanings which will make them obvious and useful. -->
>             <optional>
>             <element name="section">
>               <text />
>             </element>
>             </optional>
>             <optional>
>             <element name="phrase">
>               <text />
>             </element>
>             </optional>
>             <optional>
>             <element name="motiv">
>               <text />
>             </element>
>             </optional>
>             <ref name="measure"></ref>
>           </optional>
> <!--end optional system element -->
>          <ref name="part" />
>            <ref name="header" />
>            <ref name="midi" />
>            <ref name="measure" />
>         </element>
>       </zeroOrMore>
> </define>
>
> <define name="system">
>   <optional><element name="system"><text />
>   <element name="part"><text />
>   <attribute name="name"></attribute>
>   <element name="header"><text /></element>
>   <ref name="midi"></ref>
>   <ref name="measure"></ref>
>   </element>
>
>   </element>
>   </optional>
>
>
> </define>
>
> <define name="score">
>         <element name="score">
>           <attribute name="type">
>             <data type="NCName"/>
>           </attribute>
>       </element>
> </define> 
>  <define name="frontmatter">       
> <optional>  <element name="language">
>             <text/>
>           </element></optional>
>
>
>
>         <optional>  <element name="title">
>             <text/>
>           </element></optional>
>           <optional> <element name="subtitle">
>             <text/>
>           </element></optional>
>           <optional> <element name="composer">
>             <text/>
>           </element></optional>
>
>           <optional> <element name="instrument">
>           <text/>
>           </element></optional>
>           <optional> <element name="texidoc">
>             <text/>
>           </element></optional>
>
>  </define>
>
>            <define name="tempo">
>             <element name="tempo">
>             <attribute name="mm">
>               <data type="integer"/>
>             </attribute>
>             <attribute name="note">
>               <data type="integer"/>
>             </attribute>
>             <data type="NCName"/>
>           </element>
>
>          </define>
>             
>                <define name="comment">
>             <element name="comment">
>                <text />
>             </element>
>
>
> </define>
>          

>   <define name="time">
>     <element name="time">
>       <text/>
>     </element>
>   </define>
>  
>   <define name="clef">
>     <element name="clef">
>       <data type="NCName"/>
>     </element>
>   </define>
>
>
> <define name="key">
>  <element name="key">
>       <data type="NCName"/>
>     </element>
>   </define>
>
>
> <define name="header">
> <element name="header"><text />
>
>  <element name="time">
>       <text/>
>     </element>
>    <element name="clef">
>       <data type="NCName"/>
>     </element>
>
> <element name="key">
>       <data type="NCName"/>
>     </element>
>
> </element>
> </define>
> <define name="part">
>   <oneOrMore>
>     <element name="part">
>       <text />
>       <attribute name="name">
>       </attribute>
>       <element name="header">
>       <oneOrMore>
>         <choice>
>           <text/>
>           <ref name="clef"/>
>           <ref name="key"/>
>           <ref name="time"/>
>           <element name="comment">
>             <text/>
>           </element>
>         </choice>
>       </oneOrMore>
>       </element>
>     </element>
>   </oneOrMore>
> </define>

>
>
> <define name="midi">
> <element name="midi"><text />
>
> <attribute name="notevalue"></attribute>
> <attribute name="mm"></attribute>
> <element name="gminstname"><text /></element>
> <element name="progname"><text /></element>
> <element name="patchnumber"><text /></element>
> </element>
>
>
>
> </define>
>   <define name="measure">
>
>     <element name="measure">
>       <optional>
>         <attribute name="barline">
>           <data type="NCName"/>
>         </attribute>
>       </optional>
>       <optional>
>         <attribute name="bartype">
>           <data type="NCName"/>
>         </attribute>
>       </optional>
>       <optional>
>         <attribute name="mark">
>           <data type="NCName"/>
>         </attribute>
>       </optional>
>       <optional>
>         <attribute name="num">
>           <data type="integer"/>
>         </attribute>
>       </optional>
>       <optional>
>         <attribute name="type">
>           <data type="NCName"/>
>         </attribute>
>       </optional>
>       <optional>
>         <attribute name="value">
>           <data type="integer"/>
>         </attribute>
>       </optional>
>       <oneOrMore>
>         <choice>
>           <text/>
>           <ref name="beam"/>
>           <element name="breathe">
>             <empty/>
>           </element>
>           <element name="crescbegin">
>             <empty/>
>           </element>
>           <element name="crescend">
>             <empty/>
>           </element>
>           <element name="dimbegin">
>             <empty/>
>           </element>
>           <element name="dimend">
>             <empty/>
>           </element>
>           <element name="dynamic">
>             <data type="NCName"/>
>           </element>
>           <element name="glissando">
>             <empty/>
>           </element>
>           <element name="markup">
>             <element name="emphasis">
>               <text/>
>             </element>
>           </element>
>           <element name="prall">
>             <empty/>
>           </element>
>           <element name="rest">
>             <optional>
>               <attribute name="type">
>                 <data type="NCName"/>
>               </attribute>
>             </optional>
>             <data type="integer"/>
>           </element>
>           <element name="slurbegin">
>             <empty/>
>           </element>
>           <element name="slurend">
>             <empty/>
>           </element>
>           <element name="staccato">
>             <attribute name="repeat">
>               <data type="integer"/>
>             </attribute>
>           </element>
>           <element name="tuplet">
>             <attribute name="bracket">
>               <data type="integer"/>
>             </attribute>
>             <attribute name="label">
>               <data type="integer"/>
>             </attribute>
>             <attribute name="type">
>               <data type="integer"/>
>             </attribute>
>             <text/>
>           </element>
> <element name="polyphony"><text /></element>         
> <element name="voice1">
>             <oneOrMore>
>               <choice>
>                 <text/>
>                 <element name="tremelo">
>                   <attribute name="value">
>                     <data type="integer"/>
>                   </attribute>
>                   <text/>
>                 </element>
>               </choice>
>             </oneOrMore>
>           </element>
>           <element name="voice2">
>             <text/>
>           </element>
>         </choice>
>       </oneOrMore>
>     </element>
>   </define>
>   <define name="beam">
>     <element name="beam">
>       <oneOrMore>
>         <choice>
>           <text/>
>           <element name="appogiatura">
>             <oneOrMore>
>               <choice>
>                 <text/>
>                 <ref name="beam"/>
>               </choice>
>             </oneOrMore>
>           </element>
>         </choice>
>       </oneOrMore>
>     </element>
>   </define>
>
> </grammar>




YAHOO! GROUPS LINKS




Reply via email to