• Zwiększ rozmiar czcionki
  • Domyślny  rozmiar czcionki
  • Zmniejsz rozmiar czcionki
Home Artykuły Schema /xs:schema/xs:element w nadmiarze. Kiedy warto?

/xs:schema/xs:element w nadmiarze. Kiedy warto?

Email Drukuj PDF
Ocena użytkowników: / 7
SłabyŚwietny 

Nadmierne przywiązanie do /xs:schema/xs:element pozwala na wygenerowanie dokumentu, który będąc zgodnym ze schemą, w najlepszym przypadku zarwie kilka nocek zespołowi a w najgorszym przypadku wysypie spory system. Jest jednak przykład, kiedy aż się prosi o właśnie takie definiowanie elementow...

 

Na pl.comp.xml napisałem, że nie przepadam za definiowanem elementów na pierwszym poziomie schemy i odwoływaniem się do nich przez ref'y.

Głównie dlatego, że pozwala na wygenerowanie dokumentu, który będąc zgodnym ze schemą  w najlepszym przypadku zarwie kilka nocek zespołowi a w najgorszym wysypie dowolny system.

Jest jednak ciekawy przykład, kiedy właśnie takie zdefiniowanie elementów ma głęboki sens.

Rozważmy CMS'a, który pozwala na przechowywanie *dowolnych*kawałków* (x)html'a:

<xs:element name="DIV" type="htmlFlowContent"/>
<xs:complexType name="htmlFlowContent" mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="htmlInlineContent"/>
<xs:group ref="htmlBlockContent"/>
<xs:group name="htmlInlineContent">
...
<xs:group name="htmlBlockContent">
<xs:element ref="P"/>
...
<xs:element name="P">
<xs:complexType mixed="true">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="htmlInlineContent"/>

Itp. Itd.

Definicja BODY Przy HTML 4(.01) Strict:

<xs:element name="BODY" type="htmlBodyContent"/>
<xs:complexType name="htmlBodyContent">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:group ref="htmlBlockContent"/>
<xs:element ref="INS"/>
<xs:element ref="DEL"/>

Jak znajdę chwilę czasu - dokonczę i podrzucę schemę definiującą (prawie) całą html'ową czworkę w wersji Strict.

Poprawiony: poniedziałek, 01 czerwca 2009 11:44  
Komentarze (2)
1 piątek, 15 maja 2009 14:37
szomiz
Grupy powinny być nazywane w nieco innej konwencji. Np. htmlInlineAll / htmlBlockAll, a końcówka "Content" używana tylko w definicjach typów złożonych.

Wtedy nie będzie wątpliwości, że typ htmlInlineContent określa precyzyjnie _zwartość_ zarówno P jak H1-H6 (będących elementami grupy htmlBlockAll), typ htmlBlockContent określa _precyzyjnie_ zawartość zarówno BLOCKQUOTE jak FORM, typ htmlFlowContent określa _precyzyjnie_ zarówno DIV jak LI (tutaj pewnien nie jestem, ale nie mam czasu na grzebanie w DTD).
2 niedziela, 27 grudnia 2009 14:46
Dzięki za ten wpis. Przydał mi się w mojej pracy.

Dodaj swój komentarz

Imię:
Adres e-mail:
Strona WWW:
Treść (możesz używać HTML):
JoomlaWatch Stats 1.2.9 by Matej Koval

Użytkownicy

Naszą witrynę przegląda teraz 1 gość