DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=4246>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=4246

java.lang.ClassCastException: org.apache.xerces.validators.dtd.DTDGrammar

           Summary: java.lang.ClassCastException:
                    org.apache.xerces.validators.dtd.DTDGrammar
           Product: Xerces-J
           Version: 1.4.3
          Platform: Macintosh
        OS/Version: MacOS X
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Schema-Structures
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


Hi,

I get a ClassCastException on
Mac OS X 10.1 (with the update that fixes the famous String.equals() bug)
I don't think that the OS is relevant.

java.lang.ClassCastException: 
org.apache.xerces.validators.dtd.DTDGrammar
        at 
org.apache.xerces.validators.schema.TraverseSchema.traverseAttributeG
roupDeclFromAnotherSchema(TraverseSchema.java:6410)
        at 
org.apache.xerces.validators.schema.TraverseSchema.traverseAttributeG
roupDecl(TraverseSchema.java:6329)
        at 
org.apache.xerces.validators.schema.TraverseSchema.processAttributes
(TraverseSchema.java:4410)
        at 
org.apache.xerces.validators.schema.TraverseSchema.processComplex
Content(TraverseSchema.java:4376)
        at 
org.apache.xerces.validators.schema.TraverseSchema.traverseComplex
ContentDecl(TraverseSchema.java:3950)
        at 
org.apache.xerces.validators.schema.TraverseSchema.traverseComplex
TypeDecl(TraverseSchema.java:3401)
        at 
org.apache.xerces.validators.schema.TraverseSchema.traverseComplex
TypeDecl(TraverseSchema.java:3258)
        at 
org.apache.xerces.validators.schema.TraverseSchema.doTraverseSche
ma(TraverseSchema.java:740)
        at org.apache.xerces.validators.schema.TraverseSchema.<init>
(TraverseSchema.java:541)
        at 
org.apache.xerces.validators.common.XMLValidator.resolveSchemaGra
mmar(XMLValidator.java:2783)
        at 
org.apache.xerces.validators.common.XMLValidator.parseSchemas(XML
Validator.java:2669)
        at 
org.apache.xerces.validators.common.XMLValidator.bindNamespacesTo
ElementAndAttributes(XMLValidator.java:2551)
        at 
org.apache.xerces.validators.common.XMLValidator.callStartElement(XM
LValidator.java:1152)
        at 
org.apache.xerces.framework.XMLDocumentScanner.scanElement(XML
DocumentScanner.java:1806)
        at 
org.apache.xerces.framework.XMLDocumentScanner$ContentDispatcher
.dispatch(XMLDocumentScanner.java:949)
        at 
org.apache.xerces.framework.XMLDocumentScanner.parseSome(XMLDo
cumentScanner.java:381)
        at org.apache.xerces.framework.XMLParser.parse(XMLParser.java:1081)
        at 
de.gerdcastan.fsc.parserAdapter.SAXParserFacade.getSAXFSC(SAXPars
erFacade.java:174)
        at de.gerdcastan.fsc.tables.TablesFacade.load(TablesFacade.java:229)
        at de.gerdcastan.fsc.basic.FSCFacade.loadTables(FSCFacade.java:101)
        at de.gerdcastan.fsc.Explorer.<init>(Explorer.java:37)
        at Main.main(Main.java:12)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.apple.buckyball.app.LaunchRunner.run(LaunchRunner.java:91)
        at java.lang.Thread.run(Thread.java:496)

The example where this exception appears is absolutely work in 
progress.  The validated instance shouldn't have to do anything with the 
schema. Xerces should report that it isn't a valid instance.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE tables SYSTEM "FSC.DTD">
<tables></tables>


Schema:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema";
            targetNamespace="http://www.gerdcastan.de/MusiXML";
            xmlns:MusiXML="http://www.gerdcastan.de/MusiXML";>

<!--                    xmlns:xml="http://www.w3.org/XML/1998/namespace";  -->


<!-- update 11. April 2000: key/keyref example for stRef 
        update 16. April 2000: included MFraction and Duration, added some 
attribute defaults.
     20010902 extract must start with a bibdata element that describes for 
which part/instrument 
              this extract is intended. Example: Violin 1 or Score
     20010904 removed lines from thRef. lines in staff is enough.
     20010904 removed voice from thRef. If something human readable is 
necesary, make it language independant
     20010907 replaced t by tm, tn, td. My Java application had no problem, 
but avoiding microparsing makes MusiXML XSLT friendly
     20010907 same vor staff.start
     20010908 replaced level by breakLevel
     20010908 resetPageNo
     20010910 extractId
     20011016 changed syntax to xml schema 1.0;
     20011016 changed xml:lang to lang until I get it running with Xerces

-->

<!--
<xsd:import namespace="http://www.w3.org/XML/1998/namespace"; 
schemaLocation="http://www.w3.org/2001/xml.xsd"/>
<xsd:attributeGroup name="xml-atts">
        <xsd:attribute ref="xml:lang"/>
        <xsd:attribute ref="xml:space"/>
</xsd:attributeGroup> 
-->

<!-- Bug: If you derive a complexType B from A and B has an attribute with 
a default, then
all Typed derived from A return this default as an attribute. This happens 
several times 
-->

<!-- oracle schema parser doesn't like annotations:
<xsd:annotation>
        <xsd:documentation>
        MusiXML schema v0.9 for music notation.
        Experimental implementation
        Copyright 1999 - 2000 Gerd Castan.
        </xsd:documentation>
</xsd:annotation>
-->
<!-- XXX the src attribute in an stRef element has to refer to a unique staff 
element.
        It was not possible to express this in a DTD with ID/IDREF:

        stRef.src -> staff.id
        thRef.src -> thread.id
        bracket.start -> staff.id
        bracket.end -> staff.id
        conRef.src -> con.id
        lasting.tupletID -> tuplet.id (elements derived from lasting: chord and 
note)
        lasting.beam -> beam.id (elements derived from lasting: chord and note)
        barRef.barID -> bar.id
        slur.left -> note.id
        slur.right -> note.id
        
        I will use key/keyref pairs for this, but this means that I have to drop the
        ID/IDREF mechanism in the DTD, too.
        
        See the stRef key below.
-->

<!-- main hierarchy: use anonymous types where elements are used only 
once -->
<xsd:element name="work">
        <xsd:complexType>
        <xsd:complexContent>
        <xsd:extension base="core">
        <xsd:sequence>
                <xsd:element ref="bibdata" minOccurs="0" />

                <xsd:element name="body" minOccurs="1" maxOccurs="1" >
                        <xsd:complexType>
                <xsd:complexContent>
                        <xsd:extension base="core">
                        <xsd:sequence>
                                <xsd:element name="workSeg" minOccurs="1">
                                        <xsd:complexType>
                        <xsd:complexContent>
                                        <xsd:extension base="core">
                                        <xsd:sequence>
                                                <xsd:element name="masterThread" 
minOccurs="1" maxOccurs="1">
                                                        <!-- time dependant elements 
that occur only once per score -->
                                                        <!-- and influence each 
extract -->
                                                        <xsd:complexType>
                                        <xsd:complexContent>
                                                        <xsd:extension base="core">
                                                                <xsd:choice 
maxOccurs="unbounded">
                                                                        <xsd:element 
ref="masterSymbol" />  <!-- abstract -->
                                                                        <xsd:element 
ref="sharedSymbol" />  <!-- abstract -->
                                                                </xsd:choice>
                                                        </xsd:extension>
                                        </xsd:complexContent>
                                                        </xsd:complexType>
                                                </xsd:element>
                                                <!-- A program in LISP ;-) uses the 
word "Musician" for a similar (not 
exactly the same) thing. -->
                                                <xsd:element name="thread" 
minOccurs="1" maxOccurs=
"unbounded">
                                                        <xsd:complexType>
                                        <xsd:complexContent>
                                                        <xsd:extension base="core">
                                                                <xsd:choice 
maxOccurs="unbounded">
                                                                        <xsd:element 
ref="threadSymbol" />  <!-- abstract -->
                                                                        <xsd:element 
ref="sharedSymbol" />  <!-- abstract -->
                                                                </xsd:choice>
                                                        </xsd:extension>
                                        </xsd:complexContent>
                                                        </xsd:complexType>
                                                </xsd:element> <!-- thread -->
                                        </xsd:sequence>
                                        </xsd:extension>
                        </xsd:complexContent>
                                        </xsd:complexType>
                                </xsd:element> <!-- workSeg -->
                        </xsd:sequence>
                        </xsd:extension>
                </xsd:complexContent>
                        </xsd:complexType>
                </xsd:element> <!-- body -->

                <xsd:element name="filter" minOccurs="1" maxOccurs="1" >
                        <xsd:complexType>
                    <xsd:complexContent>
                        <xsd:extension base="core">
                        <xsd:sequence>

                                <xsd:element name="extract" minOccurs="0" 
maxOccurs="unbounded" 
>
                                        <xsd:complexType>
                                    <xsd:complexContent>
                                        <xsd:extension base="core">
                                        <xsd:sequence>
                                                <xsd:element ref="bibdata" 
minOccurs="1"/>
                                                <xsd:element name="paragraph" 
minOccurs="1" maxOccurs=
"unbounded" >
                                                        <xsd:complexType>
                                                    <xsd:complexContent>
                                                        <xsd:extension base="core">
                                                        <xsd:sequence>
                                                                <xsd:element 
ref="bibdata" minOccurs="0" maxOccurs="1" />
                                                                <xsd:element 
name="bracket" minOccurs="0" maxOccurs="1">
                                                                        
<xsd:complexType>
                                                                    
<xsd:complexContent>
                                                                        <xsd:extension 
base="core">
                                                                                
<xsd:attribute name="type" type="xsd:string"  />   <!-- XXX (bracket|
brace)    "bracket"  -->
                                                                                
<xsd:attribute name="start" type="xsd:IDREF" use="required" />
                                                                                
<xsd:attribute name="end" type="xsd:IDREF" use="required"  />
                                                                        
</xsd:extension>
                                                                        
</xsd:complexContent>
                                                                        
</xsd:complexType>
                                                                </xsd:element>
                                                                <xsd:element 
name="break" minOccurs="0" maxOccurs=
"unbounded">
                                                                        
<xsd:complexType>
                                                                    
<xsd:complexContent>
                                                                        <xsd:extension 
base="core">
                                                                                
<xsd:attribute name="breakLevel" type="xsd:NMTOKEN" />   <!-- XXX 
(dontBreak|lineBreak|pageBreak)    "lineBreak"  -->
                                                                                
<xsd:attribute name="resetPageNo" type="xsd:integer" /> 
                                                                                
<xsd:attribute name="man_pg" type="xsd:integer" /> 
                                                                                
<xsd:attribute name="man_ln" type="xsd:integer" /> 
                                                                                
<xsd:attribute name="aut_pg" type="xsd:integer" /> 
                                                                                
<xsd:attribute name="aut_ln" type="xsd:integer" /> 
                                                                        
</xsd:extension>
                                                                        
</xsd:complexContent>
                                                                        
</xsd:complexType>
                                                                </xsd:element>
                                                                <xsd:element 
name="stRef" minOccurs="0" maxOccurs=
"unbounded">
                                                                        
<xsd:complexType>
                                                                    
<xsd:complexContent>
                                                                        <xsd:extension 
base="core">
                                                                                
<xsd:attribute name="src" type="xsd:IDREF" use="required"  />
                                                                        
</xsd:extension>
                                                                        
</xsd:complexContent>
                                                                        
</xsd:complexType>
                                                                </xsd:element>
                                                        </xsd:sequence>
                                                                <xsd:attribute 
name="type" type="xsd:string" use="required"  /> 
                                                        </xsd:extension>
                                                        </xsd:complexContent>
                                                        </xsd:complexType>
                                                </xsd:element>
                                        </xsd:sequence>

                                                <xsd:attribute name='extractId' 
type="xsd:NMTOKEN" use="required"/>
                                        </xsd:extension>
                                        </xsd:complexContent>
                                        </xsd:complexType>
                                </xsd:element> <!-- extract -->
                                
                                <xsd:element name="staff" minOccurs="0" 
maxOccurs="unbounded" >
                                        <xsd:complexType>
                                    <xsd:complexContent>
                                        <xsd:extension base="core">
                                        <xsd:sequence>
                                                <xsd:element name="thRef" 
minOccurs="0" maxOccurs="unbounded" 
>
                                                        <xsd:complexType>
                                                    <xsd:complexContent>
                                                        <xsd:extension base="core">
                                                                <xsd:attribute 
name="src" type="xsd:IDREF" use="required"  /> 
                                                                <xsd:attribute 
name="stem" type="xsd:NMTOKEN" /> <!-- XXX (auto|
up|down)     "auto" -->
                                                        </xsd:extension>
                                                        </xsd:complexContent>
                                                        </xsd:complexType>
                                                </xsd:element>
                                                <xsd:element name="conRef" 
minOccurs="0" maxOccurs=
"unbounded" >
                                                        <xsd:complexType>
                                                    <xsd:complexContent>
                                                        <xsd:extension base="Con">
                                                                <xsd:attribute 
name="src" type="xsd:IDREF" use="required"  /> 
                                                        </xsd:extension>
                                                        </xsd:complexContent>
                                                        </xsd:complexType>
                                                </xsd:element>
                                        </xsd:sequence>
                                                <xsd:attribute name="name" 
type="xsd:NMTOKEN" /> <!-- new key, 
replacement for id in DTD -->
                                        </xsd:extension>
                                    </xsd:complexContent>
                                        </xsd:complexType>
                                </xsd:element> <!-- staff -->
                        </xsd:sequence>
                        </xsd:extension>
                    </xsd:complexContent>
                        </xsd:complexType>

                        <key name="stRef">
                                <selector>extract/staff</selector>
                                <field>@name</field>
                        </key>
                        <keyref refer="stRef">
                                <selector>extract/paragraph/stRef</selector>
                                <field>@src</field>
                        </keyref>
                        <key name="extractRef">
                                <selector>extract</selector>
                                <field>@extractId</field>
                        </key>
                        
                </xsd:element> <!-- filter -->
        </xsd:sequence>
        </xsd:extension>
        </xsd:complexContent>
        </xsd:complexType>      

</xsd:element> <!-- work -->



<!-- ======================================================
=========================== -->
<!--core type                                                                          
-->
<!-- ======================================================
=========================== -->

<!-- everything but localText is derived by core -->
<xsd:complexType name="core">
        <xsd:attribute name="lang" />
        <xsd:attribute name="id" type="xsd:ID" />
</xsd:complexType>



<!-- ======================================================
=========================== -->
<!-- types                                                                             
-->
<!-- ======================================================
=========================== -->

<!-- everything child of masterThread and thread is derived by 
momentOfTime -->
<xsd:complexType name="momentOfTime">
<xsd:complexContent>
<xsd:extension base="core">
        <xsd:attribute name="tm" type="xsd:short" /> 
        <xsd:attribute name="tn" type="xsd:short" /> 
        <xsd:attribute name="td" type="xsd:short" /> 
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<!-- Duration
        first number: enumerator (1 if omitted)
        second number: denominator (4 if omitted)
        dots: number of dots
-->
<xsd:simpleType name="Duration">
        <xsd:restriction base="xsd:string">
        <xsd:pattern value="[0-9]*(:[0-9]*)?\.*"/>
        </xsd:restriction>
</xsd:simpleType>

<!-- XXX chord and note are derived by lasting -->
<xsd:complexType name="lasting">
<xsd:complexContent>
<xsd:extension base="momentOfTime">
        <xsd:attribute name="dots" type="xsd:integer" />   <!-- XXX restrict -->
        <xsd:attribute name="dur" type="MusiXML:Duration" />
        <xsd:attribute name="tupletID" type="xsd:IDREF" />  <!-- XXX referential 
integrity --> 
        <xsd:attribute name="beam" type="xsd:IDREF" />  <!-- XXX referential 
integrity --> 
        <xsd:attribute name="leftBeams" type="xsd:integer" />   
        <xsd:attribute name="rightBeams" type="xsd:integer" />   
        <xsd:attribute name="abbrev" type="xsd:integer" />   
        <!-- XXX articulation -->
        <xsd:attributeGroup ref="articulation" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>

<!-- articulation:
     staccato="1" finger1="2" means the first sign above the note is a 
staccato point 
     and the second is a "1" (finger 1). The same holds with negative 
numbers under
     the note. 
     Exception: numtonguing is the number of points whereas tonguing 
indicates the 
     position of these tonguing points. 
  -->
<xsd:attributeGroup name="articulation">
        <xsd:attribute name="strongaccent" type="xsd:integer" />   
        <xsd:attribute name="mediumaccent" type="xsd:integer" />   
        <xsd:attribute name="portato" type="xsd:integer" />   
        <xsd:attribute name="staccato" type="xsd:integer" />   
        <xsd:attribute name="downbow" type="xsd:integer" />   
        <xsd:attribute name="upbow" type="xsd:integer" />   
        <xsd:attribute name="harmonic" type="xsd:integer" />   
        <xsd:attribute name="fermata" type="xsd:integer" />   
        <xsd:attribute name="arsis" type="xsd:integer" />   
        <xsd:attribute name="thesis" type="xsd:integer" />   
        <xsd:attribute name="plus" type="xsd:integer" />   
        <xsd:attribute name="staccatissimo" type="xsd:integer" />   
        <xsd:attribute name="tonguing" type="xsd:integer" />   
        <xsd:attribute name="numtonguing" type="xsd:integer" />   
        <xsd:attribute name="pizzicato" type="xsd:integer" />   
        <xsd:attribute name="finger1" type="xsd:integer" />   
        <xsd:attribute name="finger2" type="xsd:integer" />   
        <xsd:attribute name="finger3" type="xsd:integer" />   
        <xsd:attribute name="finger4" type="xsd:integer" />   
        <xsd:attribute name="finger5" type="xsd:integer" />   
</xsd:attributeGroup>

<!-- Bar is used for elements bar and barRef -->
<xsd:complexType name="Bar">
<xsd:complexContent>
<xsd:extension base="momentOfTime">
        <xsd:attribute name="type">
                <simpleType>
                        <xsd:restriction base="xsd:NMTOKEN">
                                <enumeration value="standard"/>
                                <enumeration value="invisible"/>
                                <enumeration value="tactus"/>
                                <enumeration value="double"/>
                                <enumeration value="fat"/>
                                <enumeration value="fatthin"/>
                        </xsd:restriction>
                </simpleType>
        </xsd:attribute>

        <xsd:attribute name="type" type="xsd:NMTOKEN" />
        <xsd:attribute name="leftRepeat" type="xsd:integer" />
        <xsd:attribute name="rightRepeat" type="xsd:integer" />
        <xsd:attribute name="count" type="boolean" />
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>


<xsd:complexType name="Con">
<xsd:complexContent>
<xsd:extension base="momentOfTime">
        <xsd:attribute name="vis" type="xsd:NMTOKEN" />    <!-- XXX (nothing|clef|
key) -->
        <xsd:attribute name="cname" type="xsd:string" />
        <xsd:attribute name="coct" type="xsd:NMTOKEN" />   <!-- XXX (S|s|K|g|k|1|
2|3|4|5) -->
        <xsd:attribute name="clefLine" type="xsd:integer" /> <!-- XXX short? -->
        <xsd:attribute name="kacc" type="xsd:integer" />    <!-- XXX (-7|-6|-5|-4|-3|-
2|-1|0|1|2|3|4|5|6|7) -->
        <xsd:attribute name="kname" type="xsd:string" />
        <xsd:attribute name="sign1" type="xsd:string" />    <!-- XXX notename -->
        <xsd:attribute name="sign2" type="xsd:string" />    <!-- XXX notename -->
        <xsd:attribute name="sign3" type="xsd:string" />    <!-- XXX notename -->
        <xsd:attribute name="sign4" type="xsd:string" />    <!-- XXX notename -->
        <xsd:attribute name="sign5" type="xsd:string" />    <!-- XXX notename -->
        <xsd:attribute name="sign6" type="xsd:string" />    <!-- XXX notename -->
        <xsd:attribute name="sign7" type="xsd:string" />    <!-- XXX notename -->
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>




<!-- ======================================================
=========================== -->
<!-- masterSymbol and equivalent classes                                               
-->
<!-- ======================================================
=========================== -->

<!-- a masterSymbol is an element that may only occur as child of 
masterThread -->
<xsd:element name="masterSymbol" abstract="true" type=
"momentOfTime" />

<xsd:element name="bar" equivClass="masterSymbol" type="Bar" />




<!-- ======================================================
=========================== -->
<!-- sharedSymbol and equivalent classes                                               
-->
<!-- ======================================================
=========================== -->

<!-- a sharedSymbol is an element that may occur as child of 
masterThread or thread respectively -->
<xsd:element name="sharedSymbol" abstract="true" type=
"momentOfTime" />

<xsd:element name="dynamics" equivClass="sharedSymbol" >
        <xsd:complexType>
        <xsd:complexContent>
        <xsd:extension base="momentOfTime">
                <xsd:attribute name="name" type="xsd:string" />   <!-- XXX replace 
string 
enum -->
        </xsd:extension>
        </xsd:complexContent>
        </xsd:complexType>
</xsd:element>


<!-- repeat can contain all signs related to repetitions or omissions.
     The only exception are the repeat signs around the bar.
     Text positioning depends on the sign.
  -->
<xsd:element name="repeat" equivClass="sharedSymbol" >
        <xsd:complexType>
        <xsd:complexContent>
        <xsd:extension base="momentOfTime">
                <xsd:attribute name="sign" type="xsd:NMTOKEN" default="empty" />   
<!-- 
XXX replace by (empty|segno|dalsegno|coda|tocoda|start_klammer|
end_klammer|dacapo|fine|dcalfinesenzarep|dcalfine|dcsenzarep|vi|de) 
"empty"  -->
                <xsd:sequence>
                <element name="localText" type="LocalTextType" minOccurs="0" 
maxOccurs="1" />
                </xsd:sequence>
        </xsd:extension>
        </xsd:complexContent>
        </xsd:complexType>
</xsd:element>


<!-- chordSymbol: a text String that describes a chord -->
<xsd:element name="chordSymbol" equivClass="sharedSymbol">
        <xsd:complexType>
        <xsd:complexContent>
        <xsd:extension base="momentOfTime">
                <xsd:attribute name="name" type="xsd:string" />   <!-- XXX replace by 
regular expression -->
        </xsd:extension>
        </xsd:complexContent>
        </xsd:complexType>
</xsd:element>

<!-- register:
     name: machine readable, language independant name
     style: some register signs can be rendered with a square or a circle 
around.
  -->
<xsd:element name="register" equivClass="sharedSymbol">
        <xsd:complexType>
        <xsd:complexContent>
        <xsd:extension base="momentOfTime">
                <xsd:attribute name="pipeLen" type="xsd:string" /> 
                <xsd:attribute name="style" type="xsd:NMTOKEN" default="empty" /> <!-- 
XXX replace by (none|square|circle) "none" -->
                <xsd:sequence>
                <element   ref="description" minOccurs="0" maxOccurs="unbounded" />
                </xsd:sequence>
        </xsd:extension>
        </xsd:complexContent>
        </xsd:complexType>
</xsd:element>




<!-- ======================================================
=========================== -->
<!-- threadSymbol and equivalent classes                                               
-->
<!-- ======================================================
=========================== -->

<!-- a threadSymbol is an element that may occur as child of thread -->
<xsd:element name="threadSymbol" abstract="true" type=
"momentOfTime" />

<xsd:element name="barRef" equivClass="threadSymbol" >
        <xsd:complexType>
        <xsd:complexContent>
        <xsd:extension base="Bar">
                <xsd:attribute name="barID" type="xsd:IDREF" />
        </xsd:extension>
        </xsd:complexContent>
        </xsd:complexType>
</xsd:element>


<!-- con:
     context definition: one tag for key and clef.
     the reason to put key and clef together is that there are clefs like S
     which define clef and key together.
     vis indicates whether a clef or a key (or nothing) is visually rendered.
     NB: it is allowed to set the context without rendering. 
     cname, coct: name of a clef. Some, like "G" 
     TODO: allow an additional parameter for octave shifts.
     clefLine: allows to assign a "G" key to a line different from 2
     kacc: key accidentals
     kname: key name
         * examples:
         * kacc=0 & name = "C"   -> c Major
         * kacc=0 & name = "a"   -> a Minor
         * kacc=0 & name = ... -> church keys
         sign1 ... sign7:
         * acc and name can't represent the examples in Gardner Read: Music 
Notation Chapter 9 page 141ff (second edition)
         * so you can provide seven independant note names instead of
         * counting sharps or flats with kacc

  -->
<xsd:element name="con" equivClass="threadSymbol" type="Con" >
</xsd:element>

<!-- chord:
     each note is encapsulated by a chord. This makes programming 
easier.
  -->
<xsd:element name="chord" equivClass="threadSymbol">
        <xsd:complexType>
        <xsd:complexContent>
        <xsd:extension base="lasting">
                <xsd:sequence>
                <element   ref="note" minOccurs="1" maxOccurs="unbounded" />
                </xsd:sequence>
        </xsd:extension>
        </xsd:complexContent>
        </xsd:complexType>
</xsd:element>


<!-- note:
  -->
<xsd:element name="note">
        <xsd:complexType>
        <xsd:complexContent>
        <xsd:extension base="lasting">
                <xsd:attribute name="name" type="xsd:string" /> <!-- XXX %noteName; --
>
                <xsd:attribute name="oct" type="xsd:NMTOKEN" /> <!-- XXX replace by (S|
s|K|g|k|1|2|3|4|5) -->
                <xsd:attribute name="chord" type="xsd:string" /> <!-- XXX 
%chordString; --
>
        </xsd:extension>
        </xsd:complexContent>
        </xsd:complexType>
</xsd:element>


<!-- beam:
     defines an ID that groups chords/notes together
  -->
<xsd:element name="beam" equivClass="threadSymbol" type=
"momentOfTime">
</xsd:element>

<!-- slur:
     groups notes left and (right) together
     if tie = "false", right mus be provided
  -->
<xsd:element name="slur" equivClass="threadSymbol" >
        <xsd:complexType>
        <xsd:complexContent>
        <xsd:extension base="momentOfTime">
                <xsd:attribute name="left" type="xsd:IDREF" use="required" />
                <xsd:attribute name="right" type="xsd:IDREF"  />
                <xsd:attribute name="tie" type="boolean" />
        </xsd:extension>
        </xsd:complexContent>
        </xsd:complexType>
</xsd:element>



<!-- ======================================================
=========================== -->
<!-- general elements bibdata, description and LocalTextType                           
-->
<!-- ======================================================
=========================== -->

<!-- bibdata is referred several times and provides an aothors name and 
internationalized text
     it is a referred element instead of a complex type since its name 
     should not be changed for readability of the instance
  -->
<xsd:element name="bibdata" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
        <xsd:complexContent>
        <xsd:extension base="core">
                <!-- xsd:attribute name="author" type="xsd:string" / -->
                <xsd:attribute name="author" type="xsd:string" />
                <xsd:sequence>
                <xsd:element name="localText" type="LocalTextType" maxOccurs=
"unbounded" />  <!-- XXX change name for readability -->
                </xsd:sequence>
        </xsd:extension>
        </xsd:complexContent>
        </xsd:complexType>
</xsd:element>


<xsd:element name="description" minOccurs="0" maxOccurs="1">
        <xsd:complexType>
        <xsd:complexContent>
        <xsd:extension base="core">
                <xsd:attribute name="align" type="xsd:string" default="right" /> <!-- 
XXX 
(left|right|bottom|top) "right" -->
                <xsd:sequence>
                <xsd:element name="localText" type="LocalTextType" />  <!-- XXX change 
name for readability -->
                </xsd:sequence>
        </xsd:extension>
        </xsd:complexContent>
        </xsd:complexType>
</xsd:element>


<!-- LocalTextType is referred several times and provides internationalized 
text -->
<xsd:complexType>
        <xsd:complexContent>
        <xsd:extension base="xsd:string">
        <!-- no coreattrs -->
        </xsd:extension>
        </xsd:complexContent>
 <!--   <xsd:attribute ref="lang" /> XXX a LanguageCode, as per [RFC1766] -
->
        <xsd:attribute name="lang" type="xsd:string" />
</xsd:complexType>



<!-- ======================================================
=========================== -->
<!-- Test                                                                              
-->
<!-- ======================================================
=========================== -->

</xsd:schema>



Best regards,
  Gerd

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to