XML: simple Anfängerfrage

momdiavlo

Lt. Commander
Registriert
Apr. 2007
Beiträge
1.178
Hi CB`ler,

ich bin gerade an der Uni am XML lernen. Bei einer simplen Zeile komme ich gerade nicht weiter:

[...]
<!ELEMENT Lemma (Silbe | Betonung)+>
[...]

Ich möchte, dass sich das Lemma mit mehreren Silben zusammensetzt und einer Betonung, z.B. das Wort:

Erb|se

Das Problem ist doch jetzt, dass sich die Silbe oder die Betonung beliebig oft wiederholen können. Es soll aber so sein, dass wenn 1x die Betonung genutzt wurde, diese nicht wieder benutzt werden kann. Damit man eben allerlei Wörter damit beschreiben kann:

Kauf|haus
Aus|lass
Kar|me|li|ter|geist

Verständlich was ich brauche? :freak:
 
Also ich habe zwar ehrlich gesagt keine Ahnung von XML aber ein bisschen von regulären Ausdrücken, das sieht ja etwas ähnlich aus (zumindest mit den Quantoren). Kannst du die Dinger verketten? Dann würde ich es so machen:

(Silbe)* (Betonung)1 (Silbe)*

D.h. es gibt beliebig viele Silben (0-unendlich), dann genau eine betonte Silbe und dann nochmal beliebig viele. Dabei ist wichtig * statt + zu nehmen, sodass die betonte Silbe auch die erste, letzte oder einzige Silbe sein kann.. Vielleicht hilft dir das ja, hat sonst ja noch keiner geantwortet ;)
 
Zuletzt bearbeitet:
Dies is soweit ich mich erinnere mit einer DTD nicht möglich.
 
Zuletzt bearbeitet:
Wie würde die Lemma-Instanz von "Kaufhaus" denn aussehen?

So etwa?

Code:
<lemma>
	<silbe>
		K
		<betonung>
			au
		</betonung>
		f
	</silbe>
	<silbe>
		haus
	</silbe>
</lemma>
 
Zuletzt bearbeitet:
eruanno schrieb:
Also ich habe zwar ehrlich gesagt keine Ahnung von XML aber ein bisschen von regulären Ausdrücken, das sieht ja etwas ähnlich aus (zumindest mit den Quantoren). Kannst du die Dinger verketten? Dann würde ich es so machen:

(Silbe)* (Betonung)1 (Silbe)*

D.h. es gibt beliebig viele Silben (0-unendlich), dann genau eine betonte Silbe und dann nochmal beliebig viele. Dabei ist wichtig * statt + zu nehmen, sodass die betonte Silbe auch die erste, letzte oder einzige Silbe sein kann.. Vielleicht hilft dir das ja, hat sonst ja noch keiner geantwortet ;)

Das wäre wohl die beste Möglichkeit, da:

blackst0rm schrieb:
Dies is soweit ich mich erinnere mit einer DTD nicht möglich.

Das würde erklären, warum ich dazu nichts finde.

carom schrieb:
Wie würde die Lemma-Instanz von "Kaufhaus" denn aussehen?

So etwa?

Code:
<lemma>
	<silbe>
		K
		<betonung>
			au
		</betonung>
		f
	</silbe>
	<silbe>
		haus
	</silbe>
</lemma>

Ja, so sollte es dann aussehen. Wie könnte ich das am besten machen? Momentan habe ich:

Code:
<!ELEMENT   Lemma                   (Silbe*, betonte_Silbe, Silbe*)>
<!ELEMENT   Silbe                   (#PCDATA)>
<!ELEMENT   betonte_Silbe           (Buchstabe*, Betonung+, Buchstabe*)>
<!ELEMENT   Buchstabe               (#PCDATA)>
<!ELEMENT   Betonung                (#PCDATA)>
 
Zuletzt bearbeitet:
Wenn der Input wirklich so aussieht wie von mir gepostet, dann bin ich auch der Ansicht, dass das mit den klassischen regulären Ausdrucken aus DTD nicht möglich ist. Wenn du jedoch explizit zwei Tags für Silben einführst (nämlich SilbeOhneBetonung und SilbeMitBetonung), dann sieht das natürlich anders aus. Hängt jetzt von der Aufgabenstellung ab.
 
Zuletzt bearbeitet:
carom schrieb:
Wenn der Input wirklich so aussieht wie von mir gepostet, dann bin ich auch der Ansicht, dass das mit den klassischen regulären Ausdrucken aus DTD nicht möglich ist. Wenn du jedoch explizit zwei Tags für Silben einführst (nämlich Silbe und BetonteSilbe), dann sieht das natürlich anders aus. Hängt jetzt von der Aufgabenstellung ab.

Die Aufgabenstellung ist an dieser Stelle recht dürftig, aber ich werde es jetzt so machen wie ich es oben habe.
 
Zurück
Oben