Skip to topic | Skip to bottom
Home

Tesi
Tesi.DppBugEsistentir1.23 - 04 Sep 2005 - 21:21 - GiuliaGambinitopic end

Start of topic | Skip to actions

DTD++: Bug esistenti

Complex Type e parentesi -- OK

<!ELEMENT a @pippo;>
ancora non funziona. Necessita:

<!ELEMENT a (@pippo;)>

Liste di attributi -- OK

Nella conversione di elementi con tipo complesso + lista di attributi il convertitore genera il tipo complesso, genera l'attribute group, ma non include l'attribute group nell'elemento.

Messaggi di errore -- OK

I messaggi d'errore in fase di parsing non sono signficativi: mi debbono dire quanto meno la riga dell'errore e il tipo d'errore.

Parentesi -- OK

Ho il sospetto che l'attuale parser richieda piu' parentesi del necessario.

Voglio definire un tipo semplice e attribuirlo ad un attributo.

Prima prova:

<!ENTITY # Tstatus "#STRING(omissis|abrogato)" >
<!ATTLIST docarticolato "status    #Tstatus;  #IMPLIED">
Il parser si incazza.

Seconda prova:

<!ENTITY # Tstatus "#STRING(omissis|abrogato)" >
<!ATTLIST docarticolato "status    (#Tstatus;)  #IMPLIED">
o, equivalente,
<!ENTITY # Tstatus "(#STRING(omissis|abrogato))" >
<!ATTLIST docarticolato "status    #Tstatus;  #IMPLIED">
Il parser si ri-incazza.

Terza prova:

<!ENTITY # Tstatus "(#STRING(omissis|abrogato))" >
<!ATTLIST docarticolato "status    (#Tstatus;)  #IMPLIED">
finalmente al parser 'sta roba piace e compila.

Solo che invece di costruire una cosa tipo:

   <xsd:simpleType name="Tstatus">
      <xsd:restriction base="xsd:string" >
         <xsd:enumeration value="omissis" />
         <xsd:enumeration value="abrogato" />
      </xsd:restriction>
   </xsd:simpleType>

   <xsd:attribute name="status" type="Tstatus"/>
mi fa una cosa stupidissima:
   <xsd:simpleType name="Tstatus">
      <xsd:restriction base="xsd:string" >
         <xsd:enumeration value="omissis" />
         <xsd:enumeration value="abrogato" />
      </xsd:restriction>
   </xsd:simpleType>

   <xsd:attribute name="status">
      <xsd:simpleType>
         <xsd:restriction base="Tstatus" >
         </xsd:restriction>
      </xsd:simpleType>
   </xsd:attribute>

cioè considera una delle tre coppie di parentesi come un'ulteriore sottotipatura del tipo Tstatus. Da rivedere e capire.

Derivazione per estensione ---OK

Non fa correttamente la derivazione per estensione aggiungendo solo un attributo

<!ENTITY @ personType "(firstname, secondname)">
<!ENTITY @ elemType1 "@personType;" "year CDATA #REQUIRED">

Empty type con attributi --- OK

    <!ELEMENT rifesterno EMPTY>
    <!ATTLIST rifesterno %link; >
diventa
    <xsd:simpleType name="rifesterno____empty_type">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value=""/>
        </xsd:restriction>
    </xsd:simpleType>
    <xsd:element name="rifesterno" >
        <xsd:complexType>
            <xsd:simpleContent>
                <xsd:extension base="rifesterno____empty_type">
                    <xsd:attributeGroup ref="rifesterno"/>
                </xsd:extension>
            </xsd:simpleContent>
        </xsd:complexType>
    </xsd:element>

    <xsd:attributeGroup name="rifesterno">
        <xsd:attribute name="xlink:href" >
            <xsd:simpleType>
                <xsd:restriction base="uri" >
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
        <xsd:attribute name="xlink:type" fixed="simple" >
            <xsd:simpleType>
                <xsd:restriction base="linktype" >
                </xsd:restriction>
            </xsd:simpleType>
        </xsd:attribute>
    </xsd:attributeGroup>
invece che
    <xsd:element name="rifesterno" >
        <xsd:complexType>
            <xsd:attributeGroup ref="rifesterno"/>
        </xsd:complexType>
    </xsd:element>

    <xsd:attributeGroup name="rifesterno">
        <xsd:attribute name="xlink:href" type="uri" />
        <xsd:attribute name="xlink:type" fixed="simple" type="linktype" />
    </xsd:attributeGroup>

Derivazione anonima per estensione di tipo complesso -- OK

Una derivazione nominale funziona, una derivazione anonima no: esempio

<!ENTITY @ test2 "(C,D)" "x CDATA #REQUIRED">
<!ELEMENT C (@test2;) >
<!ENTITY @ test3 "@test2;, (a|b)+">
<!ELEMENT D (@test3;) >
<!ELEMENT E (@test2;, (a|b)+)> 
non funziona

Definizione di tipo con la parte attributo vuota -- OK

La definizione di tipo deve essere lecita anche se la parte attributi e' vuota

<!ENTITY @ uno "(a, b)" "" >

PRESUNTI

white space -- OK

            <!ELEMENT elEm (#mystring;{6}[7,9]/d{3}/(a|b)\r\)>
il parser trova \r\ e da errore.stessa cosa con gli altri valori p e c

conversione -- OK

alcuni tipi semplici predefiniti non vengono convertiti #HEXBINARY #IDREFS #TOKEN sono mal convertiti -- OK

#GDAY #NONPOSINTEGER non accettati dal parser

namespace -- OK

nn viene dato errore se si mettono 2 namespace senza prefisso ad es.
            <!TARGETNS "www.n">
            <!TARGETNS "www.m">
produce <xsd:schema targetNamespace="www.n" xmlns="www.n" targetNamespace="www.m" xmlns="www.m" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

gestito anche il caso in cui un namespace con prefisso sia dichiarato più volte

occorrenze -- OK

se si passa un intervallo [,] in cui il 2 parametro manca non si setta maxOccurs=”unbounded”

in questo modo quindi [1,] non corrisponde a + [0,] non corrisponde a * tutto ok con ? equivalente a [0,1]

Tipi semplici -- OK

se viene dichiarato un tipo semplice e un elemento di tale tipo
       <!ENTITY #pluto "(#STRING)">
       <!ELEMENT g (#pluto;)>
l'elemento non ha associato il tipo ma diviene una restrizione
<xsd:simpleType name="pluto">
      <xsd:restriction base="xsd:string" >
      </xsd:restriction>
   </xsd:simpleType>
   <xsd:element name="g"  >
      <xsd:simpleType>
         <xsd:restriction base="pluto" >
         </xsd:restriction>
      </xsd:simpleType>
   </xsd:element> 

Se non si vuole la restrizione è sufficiente non mettere le parentesi nella dichiarazione:

       <!ENTITY #pluto "#STRING">
       <!ELEMENT g #pluto;>

e si ottiene

        <xsd:simpleType name="pluto">
      <xsd:restriction base="xsd:string" >
      </xsd:restriction>
   </xsd:simpleType>
   <xsd:element name="g" type="pluto">
   </xsd:element>

Facet -- OK

In una dichiarazione di ATTLIST il facet /pattern/ non viene riconosciuto in fase di parser. Viene riconosciuto invece nelle dichiarazioni di ENTITY e ELEMENT
    <!ENTITY # nome "(tipobase{}[]//()\\)">
    <!ELEMENT nomeElemento (tipobase{}[]//()\\)>
    <!ATTLIST nomeElemento nomeAttributo (tipobase{}[]//()\\) default>

-- FabioVitali - 01 Feb 2005
to top


You are here: Tesi > DeveloperCorner? > DppBugEsistenti

to top

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