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
- Visit your group "rng-users" on the web.
- To unsubscribe from this group, send an email to:
[EMAIL PROTECTED]
- Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.
<?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>
