Hmn,

Now that I used the combine attribute i get the following error from
trang.
btw what should I be using to check my work? I thought that nxml mode
would do that for me in real time...

Anyways the error:trang lilypondxml.rng lilypondnew.rnc
/demudi/lilyxml/lilypondxml.rng:16: error: "start" pattern must contain at most one pattern
/demudi/lilyxml/lilypondxml.rng:20: error: "start" pattern must contain at most one pattern

I gather you will want to see my poor first attempt at a schema so I
am attaching what I have done so far. Please don't laugh to hard.

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 combine="choice">
    <!--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 -->
    <element name="book">
      <element name="title">
        <text/>
      </element>
      <element name="bookinfo">
        <text />
        <ref name="frontmatter"/>
      </element>
      <!-- don't remember whats with set -->
    </element>
    <element name="set">
      <text />
    </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>
 <element name="song">
<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>
<ref name="lyrics"></ref>
     <text />
    </element>
</oneOrMore>
    </choice>
  </start>


  <start combine="choice">

    <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>
  </start>

  <start combine="choice">
    <element name="song">
<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>
<ref name="lyrics"></ref>
     <text />
    </element>
  </start>



<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 />

<optional><element name="verse">
         <text />
        </element></optional>
<optional><element name="chorus">
         <text />
        </element></optional>
<optional><element name="refrain">
         <text />
        </element></optional>


        </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>

Reply via email to