Dieses Kapitel beinhaltet keine ausführliche Beschreibung der Sprache XML,
sondern nennt nur die Punkte, die für das Schreiben einer X3D-Szene mit
Hilfe unserer DTD notwendig sind. Die Beispiele sind dabei auf unsere DTD
abgestimmt.
Eine XML-Datei ist streng gegliedert, wobei die Gliederung der verwendeten
DTD zu entnehmen ist. In der DTD wird mittels
<!ELEMENT name ...>
ein
Element definiert, das in der XML-Datei als Tag <name> verwendet wird.
Dabei gilt, dass ein geöffnetes Tag auch immer mit </name> geschlossen
werden muss. Innerhalb eines Tags können weitere Tags stehen, sofern die DTD
dies zulässt.
Beispiel:
DTD:
<!ELEMENT CoordIndex (Polyline*)>
<!ELEMENT Polyline (#PCDATA)>
Beispiel-XML-Datei:
<CoordIndex>
<Polyline> 1 3 4 5 </Polyline>
</CoordIndex>
Wenn jemand das Tag <Polyline> benutzen will, so ist es durch
<CoordIndex> einzurahmen. Umgekehrt ist in dem Tag
<CoordIndex> nur <Polyline> erlaubt.
Neben eingeschlossenen Elementen sind Attribute
möglich, die etwas anders aufgerufen werden.
Beispiel:
DTD:
<!ELEMENT CoordinateVector (Point*)>
<!ELEMENT Point EMPTY>
<!ATTLIST Point
x %Float; #REQUIRED
y %Float; #REQUIRED
z %Float; #REQUIRED>
Beispiel-XML-Datei:
<CoordinateVector>
<Point x=''1'' y=''0'' z=''0''> </Point>
<Point x=''1'' y=''1'' z=''0''/>
</CoordinateVector>
Die Attribute werden innerhalb der Klammern aufgeführt. Zwischen
öffnendem und schließendem Tag <Point> dürfen keine weiteren Element
stehen, da in der DTD das Wort EMPTY eingetragen ist. In solchen Fällen kann
das schließende Tag weggelassen werden, indem das öffende mit />
beendet wird.
Eine XML-Datei beginnt mit einem Prolog, der zumindest <?xml
version=''1.0''?> beinhalten sollte, er kann aber auch leer sein. Sollen
noch Informationen über die Codierung des Textes hinzukommen, kann die erste
Zeile auch so aussehen: <?xml version=''1.0'' encoding=''UTF-8''?>. Nach
dem Prolog sollte die DTD eingebunden werden, dies beispielsweise durch den
Aufruf <!DOCTYPE X3DScene SYSTEM ''X3D.dtd''>.
Nach diesem Vorspann folgt die eigentliche XML-Datei, die nach der von der DTD
vorgeschriebene Syntax verfasst werden muss. Dabei existieren innerhalb der
DTD verschiedene Symbole und Bezeichnungen mit folgender Bedeutung:
Elemente betreffend:
?:Objekt ist optional, kann also null oder einmal auftreten.Ist kein Zeichen hinter dem Element angegeben, so muss das Element genau einmal verwendet werden.
* : Das Objekt ist optional, kann aber beliebig oft auftreten.
+ : Das Objekt muss mindestens einmal auftreten.
| : ''Oder'', d.h. ein Element aus mehreren kann gewählt werden.
Attribute betreffend :
CDATAZeichenketten
ID Die ID muss im gesamten Dokument einmalig sein,
damit jede ID eindeutig ein Element identifiziert.
Deshalb kann eine ID nur #REQUIRED oder #IMPLIED sein.
IDREF IDREF muss eine Zeichenkette sein, die irgendwo
im Dokument eine ID ist, also quasi auf diese verweisen.
Mit ID und IDREF können also zwei unterschiedliche Elemente
einander zugeordnet werden.
REQUIREDAttribut muss gesetzt werden.Beispiel-Dateien
IMPLIED Dieses Attribut kann gesetzt werden.
''x'' x wird als Default-Wert genommen, wenn das
zugehörige Element ohneAngabe eines Attributs genutzt wird.
<X3DScene>
<Group>
<Translation x=''1'' y=''3'' z=''4''/><!- transl. of thesphere->
<Shape>
<Material>
<DiffuseColor r=''0'' g=''121'' b=''0''/><!- green material->
</Material>
<Sphere/><!- sphere (radius=1 ->
</Shape>
</Group>
</X3DScene>
VRML
#169#>0.5cm#VRML V2.0 utf8
#kugel.wrl: # gruene, stark reflektierende Kugel mit Radius 1.5
Transform { # Plaziere
translation 0 00 # im Ursprung
children [
Shape { # eine Gestalt
geometry Sphere { # von der Form einer Kugel
radius 1.5 # mit Durchmesser 1.5
}
appearance Appearance { # in der Erscheinung
material Material { /> # mit Materialbeschaffenheit
diffuseColor 0 1 0 # gruene Farbe
shininess 0.9 # stark reflektierend
}
}
}
]
}
XML-PARSER