You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by bu...@apache.org on 2001/10/17 22:19:30 UTC
DO NOT REPLY [Bug 4246] New: -
java.lang.ClassCastException: org.apache.xerces.validators.dtd.DTDGrammar
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: xerces-j-dev@xml.apache.org
ReportedBy: Gerd.Castan@z.zgs.de
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: xerces-j-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-j-dev-help@xml.apache.org