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]
