Gestione elementi locali e gruppi di sostituzione

  • Studiarsi cosa sono e come vengono usati (in particolare per ereditarieta' e polimorfismo dei tipi XML Schema)
  • Elementi locali sono elementi che vengono definiti all'interno di un tipo. Per nostra fortuna, TUTTI i tipi nominali sono globali. Quindi tipo.nome puo' essere considerato come la definizione di un elemento locale.

<xsd:complexType name="pippo">
   <xsd:element name="pluto" type="xsd:integer"/>
</xsd:complexType>

puo' diventare:

<!ENTITY @ pippo (pluto) >
<!ELEMENT pippo.pluto #INTEGER>
   

  • Tipi anonimi

<xsd:element name="paperino">
   <xsd:complexType>
      <xsd:element name="pluto" type="xsd:integer"/>
   </xsd:complexType>
</element>

puo' diventare:

<!ELEMENT paperino (pluto)>
<!ELEMENT pluto #INTEGER>
  • Uso di ref
<xsd:element name="topolino" type="xsd:integer"/>

<xsd:complexType name="minnie">
   <xsd:element ref="topolino"/>
</xsd:complexType>
puo' diventare:
<!ELEMENT topolino (#INTEGER)>
<!ENTITY @ minnie "(*topolino)">
Analogamente

<xsd:element name="ciccio" type="xsd:integer"/>

<xsd:element name="nonnapapera">
   <xsd:complexType>
      <xsd:element ref="ciccio"/>
   </xsd:complexType>
</element>

puo' diventare:

<!ELEMENT ciccio #INTEGER>
<!ELEMENT nonnapapera (*ciccio)>

Da vedere i substitution group

Substitution group (SubType)

Sintassi DTD++:

<!ELEMENT name #STRING>
...
<!ELEMENT nome name>
<!ELEMENT Namen name>
<!ELEMENT navn name>

<!ELEMENT X (a,b,name,c)>
<!ELEMENT Y (#PCDATA|a|b|name|c)*>

tutti questi elementi appartengono al substitution group di name.

Sintassi XML Schema:

<xs:element name="name" type="xs:string"/>
<xs:element name="nome" substitutionGroup="name"/>
<xs:element name="Namen" substitutionGroup="name"/>
<xs:element name="navn" substitutionGroup="name"/>
Sintassi DTD:
<!ENTITY % DPPnameSG   "(name|nome|Namen|navn)">
<!ENTITY % DPPnameSGMC "name|nome|Namen|navn">

<!ELEMENT X (a,b,%DPPnameSG;,c)>
<!ELEMENT Y (#PCDATA|a|b|%DPPnameSGMC;|c)*>

CON SOTTOTIPI

Sintassi DTD++:

<!ELEMENT name @PIPPO>
...
<!ELEMENT nome name @SUBPIPPO>

<!ENTITY @ SUBPIPPO "(@PIPPO;, X)">

Sintassi XML Schema:

<xs:element name="name" type="PIPPO"/>
<xs:element name="nome" substitutionGroup="name" type="SUBPIPPO"/>

<xs:type name="SUBPIPPO">
  <xs:complexContent>
    <xs:extension base="PIPPO">
      <xs:sequence>
         <xs:element name="X" type="xs:string"/>
       </xs:sequence>
     </xs:extension>
  </xs:complexContent>
</xs:type>

Sintassi DTD:

<!ENTITY % DPPnameSG   "(name|nome)">
<!ENTITY % DPPnameSGMC "name|nome">

<!ELEMENT name %PIPPO;>
<!ELEMENT nome %SUBPIPPO;>

-- GiuliaGambini - 08 Feb 2005

Revision: r1.5 - 22 Apr 2006 - 15:31 - FabioVitali
Tesi > DppOldBugs > DppGruppiDiSostituzione
Copyright © 1999-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Fabio's Wiki? Send feedback