Q. Модели состовления дизайна схем

A [flax].

Van Der Vlist

DTD

<grammar xmlns="http://relaxng.org/ns/structure/1.0">
 
  <start>
   <ref name="element-library"/>
  </start>

  <define name="element-library">
   <element name="library">
    <oneOrMore>
     <ref name="element-book"/>
    </oneOrMore>
   </element>
  </define>

  <define name="element-book">
   <element name="book">
    <attribute name="id"/>
    <attribute name="available"/>
    <ref name="element-isbn"/>
    <ref name="element-title"/>
    <oneOrMore>
     <ref name="element-author"/>
    </oneOrMore>
    <zeroOrMore>
     <ref name="element-character"/>
    </zeroOrMore>
   </element>
  </define>
<!-- итд -->
</grammar>

content-oriented style is to defines content of each element as a separate pattern:

<?xml version="1.0" encoding="UTF-8"?>
 <grammar xmlns="http://relaxng.org/ns/structure/1.0">
 
  <start>
   <element name="library">
    <ref name="library-content"/>
   </element>
  </start>
 
  <define name="library-content">
   <oneOrMore>
    <element name="book">
     <ref name="book-content"/>
    </element>
   </oneOrMore>
  </define>

  <define name="book-content">
   <attribute name="id"/>
   <attribute name="available"/>
   <element name="isbn">
    <ref name="isbn-content"/>
   </element>
   <element name="title">
    <ref name="title-content"/>
   </element>
   <oneOrMore>
    <element name="author">
     <ref name="author-content"/>
    </element>
   </oneOrMore>
   <zeroOrMore>
    <element name="character">
     <ref name="character-content"/>
    </element>
   </zeroOrMore>
  </define>

...

Russian doll



Bizarre combinations

element-book = element book {
     book-basic,
     book-extended
    }

 book-basic =
     attribute id { text },
     element-isbn,
     element-title,
     element-author+,
     element-character?

 book-extended =
     attribute available { text },
     element-character*

1) The best for extension is content-oriented style 2) Bizarre combinations is possible only in RelaxNG

 
  faq/schemas_model.txt · Последние изменения: 2005/03/23 12:31 by 212.44.93.98 (flax)
 
Нас поддерживают: Рейтинг@Mail.ruliveinternet.ru