Samali Slice Design
HTML-Newbie
- xml
0 HTML-Newbie2 ThomasM
Servus zusammen,
folgender XML-Code ist gegeben:
<?xml version="1.0" encoding="US-ASCII"?>
<ausdruck>
<summe>
<summe>
<produkt>
<const>5</const>
<potenz>
<var>x</var>
<const>3</const>
</potenz>
</produkt>
<produkt>
<const>-2</const>
<var>x</var>
</produkt>
</summe>
<const>7</const>
</summe>
</ausdruck>
Dazu das entsprechende Schema:
<?xml version="1.0" encoding="US-ASCII"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="ausdruck" type="ausdruck_type" />
<xs:element name="const" type="xs:integer" />
<xs:element name="var" type="xs:string" />
<xs:element name="summe" type="binop_type" />
<xs:element name="produkt" type="binop_type" />
<xs:element name="potenz" type="binop_type" />
<xs:complexType name="ausdruck_type">
<xs:group ref="ausdruck_group" minOccurs="1" maxOccurs="1" />
</xs:complexType>
<xs:complexType name="binop_type">
<xs:group ref="ausdruck_group" minOccurs="2" maxOccurs="2" />
</xs:complexType>
<xs:group name="ausdruck_group">
<xs:choice>
<xs:element ref="const" />
<xs:element ref="var" />
<xs:element ref="summe" />
<xs:element ref="produkt" />
<xs:element ref="potenz" />
</xs:choice>
</xs:group>
Fragen:
-wo/wie wird damit sichergestellt, dass <ausdruck> das Wurzelelement ist?
-worin äußert sich nun dieses Salami-Design; an der Verwendung von group?
Thanks!
HTML-Newbie
Sorry, ich habe das falsche XML-Dokument gepostet. Das hier ist nun das korrekte:
<?xml version="1.0" encoding="US-ASCII"?>
<ausdruck>
<const>5</const>
<binop>mult</binop>
<var>x</var>
<binop>power</binop>
<const>3</const>
<binop>subtract</binop>
<const>2</const>
<binop>mult</binop>
<var>x</var>
<binop>add</binop>
<const>7</const>
</ausdruck>
Ansonsten bleibt alles unverändert. Nochmals sorry!
Hallo HTML-Newbie,
Fragen:
-wo/wie wird damit sichergestellt, dass <ausdruck> das Wurzelelement ist?
-worin äußert sich nun dieses Salami-Design; an der Verwendung von group?
Das Wurzelelement ist das Element, welches keine Elternelemente hat. Dem Element ausdruck ist die ausdruck_type-Struktur untergeordnet und damit alle weiteren Elemente (einfach mal in einem Schema-Editor grafisch anzeigen).
Das so genannte Salami-Design mein, dass die einzelnen Elemente und Attribute separat (scheibchenweise) definiert und lediglich referenziert werden. Somit lassen sich die einzelnen Deklarationen einfach wiederverwenden.
Der hier gezeigte Ansatz mit zusätzlichen Gruppierungen wird als Venezianischer Spiegel (Venetian Blind) bezeichnet, der von außen nach innen geschachtelte Schemaaufbau heißt übrigens Matroschka-Design (Russian Doll).
Grüße,
Thomas