Theoretische Grundlagen der Informatik, WS 02/03
Autor: Marcel Liebi
Zeichnen Sie die Baumstruktur des folgenden XML-Dokuments:
<?xml
version="1.0"?>
<ATOM>
<ID><NAME>Actinium</NAME>
<SYMBOL>Ac</SYMBOL>
<ATOMIC_NUMBER>89</ATOMIC_NUMBER></ID>
<PHYSICAL_DATA>
<ATOMIC_WEIGHT>227</ATOMIC_WEIGHT>
<BOILING_POINT
UNITS="Kelvin">3470</BOILING_POINT>
<DENSITY UNITS="grams/cubic
centimeter"> <!-- At 300K -->
10.07
</DENSITY>
</PHYSICAL_DATA>
<OXIDATION_STATES>3</OXIDATION_STATES>
<ATOMIC_DATA><ATOMIC_RADIUS
UNITS="Angstroms">1.88</ATOMIC_RADIUS>
<ATOMIC_VOLUME
UNITS="cubic centimeters/mole">22.5</ATOMIC_VOLUME>
<ELECTRON>
<ELECTRON_CONFIGURATION>[Rn] 6d1
7s2</ELECTRON_CONFIGURATION>
<ELECTRONEGATIVITY>1.1</ELECTRONEGATIVITY>
</ELECTRON></ATOMIC_DATA>
<IONIZATION_POTENTIAL>5.17</IONIZATION_POTENTIAL>
</ATOM>
Atom --> Id --> Name --> Wert = Actinium --> Symbol --> Wert = Ac --> Atomic_Number --> Wert = 89 -->Physical_Data --> Atomic_Weight --> Wert = 227 --> Boiling_Point --> Attribut Units --> Wert = Kelvin --> Wert = 3470 --> Density --> Attribut Units --> Wert = grams/cubic centimeter --> Wert = 10.07 --> Oxidation_States --> Wert = 3 --> Atomic_Data --> Atomic_Radius --> Attribut Units --> Wert = Angstorms --> Wert = 1.88 --> Atomic_Volume --> Attribut Units --> Wert = cubic centimeters/mole --> Wert = 22.5 --> Electron --> Electron_Configuration --> Wert = [Rn] 6dl 7s2 --> Electronegravity --> Wert = 1.1 --> Ionizatzion_Potential --> Wert = 5.17 |
Banken gruppieren die Daten eines Kunden oft unter einem sogenannten Stammkonto, welchem verschiedene "Objekte" (Depot, Konto, Hypothek, etc.) zugeordnet werden können. Schreiben Sie ein gültiges XML-File, welche folgende Kundeninformationen speichert:
Beachten Sie, welche Information als Element bzw. als Attribut gespeichert werden soll. Begründen Sie jeweils Ihre Implementierung.
<?xml
version="1.0"?> <!DOCTYPE Stammkonto [ <!ENTITY % Kontoinformationen "Kontonummer, Saldo, Transaktion*" > <!ENTITY % PersonInfo "Name, Vorname, Adresse, Nationalität" > <!ELEMENT Stammkonto (Stammkontonummer, Kundendaten, Identifikationsmethode, KundenberaterName, KontenListe, PersonenMitVollmacht, Dauerauftrag*) > <!ELEMENT Stammkontonummer (#PCDATA) > <!ELEMENT Identifikationsmethode EMPTY > <!ATTLIST Identifikationsmethode Id_Methode (Pass | ID-Karte | Führerschein) #REQUIRED Angestellter_Id CDATA #REQUIRED> <!ELEMENT KundenberaterName (#PCDATA) > <!ELEMENT KontenListe (Depotkonto?, Bankkonto*, Hypothek*) > <!ELEMENT PersonenMitVollmacht (VollmachtsPerson*) > <!ELEMENT Dauerauftrag EMPTY > <!ATTLIST Dauerauftrag Begünstigtenname CDATA #REQUIRED Kontonummer CDATA #REQUIRED Betrag CDATA #REQUIRED Periodizität (täglich, monatlich, vierteljährlich, jährlich) #REQUIRED ErsteAusführung CDATA #IMPLIED LetzteAusführung CDATA #IMPLIED > <--! Kundendaten --> <!ELEMENT Kundendaten (%PersonInfo, Geburtsdatum, Telefonnummer, email) > <!ELEMENT Geburtsdatum (#PCDATA) > <!ELEMENT Telefonnummer (Tel_Privat?, Tel_Geschäft?, Tel_Mobile?) > <!ELEMENT Tel_Privat (#PCDATA) > <!ELEMENT Tel_Geschäft (#PCDATA) > <!ELEMENT Tel_Mobile (#PCDATA) > <!ELEMENT email (#PCDATA) > <--! Kontoinformationen --> <!ELEMENT Kontonummer (#PCDATA) > <!ELEMENT Saldo (#PCDATA) > <!ELEMENT Transaktion (Datum, Betrag, BeteiligtesKonto) > <!ATTLIST Transaktion transaktionsart (Einzahlung, Auszahlung, Dauerauftrag) #REQUIRED > <!ELEMENT Trans_Datum (#PCDATA) > <!ELEMENT Trans_Betrag (#PCDATA) > <!ELEMENT Trans_BeteiligtesKonto (#PCDATA) > <--! PersonInfo --> <!ELEMENT Name (#PCDATA) > <!ELEMENT Vorname (#PCDATA) > <!ELEMENT Adresse (#PCDATA) > <!ELEMENT Nationalität (#PCDATA) > <--! Kontotypen --> <!ELEMENT Depotkonto (%KontoInformationen) > <!ELEMENT Bankkonto (%Kontoinformationen) > <!ELEMENT Hypothek (%Kontoinformationen) > <--! Person mit Vollmacht --> <!ELEMENT VollmachtsPerson (%PersonInfo) > ]> <Stammkonto> <Stammkontonummer>12-3456-78</Stammkontonummer> <Kundendaten> <Name>Muster</Name> <Vorname>Hans</Vorname> <Adresse>Bahnhofstrasse 123, 8640 Rapperswil</Adresse> <Nationalität>CH</Nationalität> <Geburtsdatum>16.04.1944</Geburtsdatum> <Telefonnummer> <Privat>055 123 45 67</Privat> </Telefonnummer> <email>hmuster@world.com</email> </Kundendaten> <Identifikationsmethode Id_Methode="Pass" Angestellter_Id="987654"></Identifikationsmethode> <KundenberaterName>Jakob Müller</KundenberaterName> <KontenListe> <Bankkonto> <Kontonummer>12-3456-78-9</Kontonummer> <Saldo>-2876.30</Saldo> <Transaktion transaktionsart="Auszahlung"> <Trans_Datum>31.12.1999</Trans_Datum> <Trans_Betrag>3000.00</Trans_Betrag> <Trans_BeteiligtesKonto>01-4567-89</Trans_BeteiligtesKonto> </Transaktion> </Bankkonto> </KontenListe> <PersonenMitVollmacht> <VollmachtsPerson> <Name>Muster</Name> <Vorname>Josefine</Vorname> <Adresse>Bahnhofstrasse 123, 8640 Rapperswil</Adresse> <Nationalität>CH</Nationalität> </VollmachtsPerson> <VollmachtsPerson> <Name>Muster</Name> <Vorname>Peter</Vorname> <Adresse>Bahnhofstrasse 123, 8640 Rapperswil</Adresse> <Nationalität>CH</Nationalität> </VollmachtsPerson> </PersonenMitVollmacht> <Dauerauftrag Begünstigtenname="Peter Schweizer" Kontonummer="65-64556-78" Betrag="22.65" Periodizität="jährlich" ErsteAusführung="01.01.2003" LetzteAusführung="01.01.2004" /> </Stammkonto> |
Zeichnen Sie die Baumstruktur Ihres Dokuments
<--! Werte werden aus Gründen
der Übersichtlichkeit nicht angezeigt --> Stammkonto --> Stammkontonummer --> Kundendaten --> Name --> Vorname --> Adresse --> Nationalität --> Geburtsdatum --> Telefonnummer --> Privat --> Geschäft --> Mobile --> Identifikationsmethode --> Attribut Id_Methode --> Attribut Angestellter_Id --> KundenberaterName --> KontenListe --> Bankkonto --> Kontonummer --> Saldo --> Transaktion --> Attribut Auszahlung --> Trans_Datum --> Trans_Betrag --> Trans_BeteiligtesKonto --> PersonenMitVollmacht --> VollmachtsPerson --> Name --> Vorname --> Adresse --> Nationalität --> VollmachtsPerson --> Name --> Vorname --> Adresse --> Nationalität --> Dauerauftrag --> Attribut Begünstigtenname --> Attribut Kontonummer --> Attribut Betrag --> Attribut Periodizität --> Attribut ErsteAusführung --> Attribut LetzteAusführung |
Nennen Sie fünf wichtige Unterschiede zwischen XML und HTML.
|
Besuchen Sie die Website der W3C, wo die XML 1.0-Spezifikationen veröffentlicht sind. Erklären auf der Basis dieser Spezifikationen, wie der "Ampersand"-Charakter & in einem XML-Dokument angegeben werden soll, wenn er nicht als 'Steuerzeichen' dienen soll.
"&" Der Standard ist unter http://www.w3.org/TR/REC-xml abrufbar. Im Abschnitt 2.4 steht die Antwort: "The ampersand character (&) [..] may appear in their literal form only when used as markup delimiters, or within a comment, a processing instruction, or a CDATA section. If [..][it is] needed elsewhere, [..][it] must be escaped using either numeric character references or the strings "&".[..] Definition: A character reference refers to a specific character in the ISO/IEC 10646 character set, for example one not directly accessible from available input devices.]" |
Überprüfen Sie die Wohlgeformtheit der folgenden XML-Zeile mit Hilfe der BNF-Beschreibung von XML, wie sie in der Version 1.0 der Spezifikationen angegeben ist (siehe auch E. Harold, W. Means, XML in a Nutshell, s. 366 ff):
<Name Geburtsjahr="1980">Dupont</Name>
Beschreiben Sie die einzelnen Schritte der Überprüfung.
Schreiben Sie einen XML-Parser in Java, welcher die Wohlgeformtheit von
einfachen XML-Dokumenten überprüft. Ihr Parser muss folgendes
kontrollieren:
1) Das Dokument fängt mit einer gültigen XML-Deklaration
an
2) Jedem Start Tag entspricht ein End-Tag, ausser wenn es ein
Leerelement-Tag ist
3) Es gibt keine überlappende Elemente
xml_validation.java