Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [XSD] attributo nillable ??

    ciao ragazzi.
    sto studiando l'XML scheme definition,
    nel tag di definizione di un elemento ho trovato questo attributo
    nillable="true"
    che significa?
    a cosa serve?
    nn l'avevo mai trovato e anche cercando in giro non ho trovato informazioni

    grazie

  2. #2
    specifica se l'elemento può evere un valore nullo

  3. #3
    nel senso che l'elemento può avere un contenuto "NULL" (proprio cosi testuale) , o che può non avere contenuto e quindi è opzionale ?

  4. #4

  5. #5
    ma non c'è già minOccurs e maxOccurs?
    dovrebbero bastare?

    però non capisco perchè li ho visti usare insieme,
    l'esempio che ho trovato è questo

    <xs:element name="author" nillable="true" minOccurs="0" maxOccurs="unbounded">

  6. #6

    con qualche anno di ritardo ecco la risposta!

    Dunque,
    Mi sono imbattuto nel problema ed essendone venuto a capo ti lascio una risposta ad uso dei naviganti.
    il minoccurs = 0 significa che il tag è opzionale cioè che può esserci o non esserci, nillable indica che può esserci con valore null (tag vuoto). In tal caso però il tag sull'xml dovrà riportare l'attributo xsi:nil="true".

    nel caso di stringhe che accettano un <xs:minLength value="0"> (valore di default) l'xsd valida anche un tag vuoto ma va notato che concettualmente quel valore è stringa vuota, non un valore null.

    ovviamente se io specifico un tipo int il tag vuoto non viene validato.

    ti alego qualche esempio:

    ##############ESEMPIO 1 STRINGA VUOTA CON NULL NON SPECIFICATO
    l'xsd richiede un valore di tipo stringa che può avere len=0, il tag vuoto viene accettato perchè rappresenta una stringa vuota, in questo scenario non è possibile rappresentare una stringa null

    xsd:
    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="Anagrafica">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="Indirizzo" type="Indirizzo" minOccurs="1" maxOccurs="1"/>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    <xs:simpleType name="Indirizzo">
    <xs:restriction base="xs:string">
    <xs:maxLength value="100"/>
    <xs:minLength value="0" />
    </xs:restriction>
    </xs:simpleType>
    </xs:schema>



    <?xml version="1.0" encoding="utf-8"?>
    <Anagrafica xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="xsdNillable.xsd">
    <Indirizzo></Indirizzo>
    </Anagrafica>


    ##########################################
    ##############ESEMPIO 2 STRINGA NULL
    l'xsd richiede un valore di tipo stringa che NON può avere len=0 ma può avere valore null, il tag vuoto viene accettato solo se inviato con l'attributo xsi:nil="true" cioè se rappresenta una stringa null, senza attributo rappresenterebbeuna stringa vuota e l'xsd non validerebbe:


    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
    <xs:element name="Anagrafica">
    <xs:complexType>
    <xs:sequence>
    <xs:element name="Indirizzo" type="Indirizzo" nillable="true" minOccurs="1" maxOccurs="1"/>
    </xs:sequence>
    </xs:complexType>
    </xs:element>
    <xs:simpleType name="Indirizzo">
    <xs:restriction base="xs:string">
    <xs:maxLength value="100"/>
    <xs:minLength value="1" />
    </xs:restriction>
    </xs:simpleType>
    </xs:schema>


    <?xml version="1.0" encoding="utf-8"?>
    <Anagrafica xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:noNamespaceSchemaLocation="xsdNillable.xsd">
    <Indirizzo xsi:nil="true"></Indirizzo>
    </Anagrafica>




    per cui se nel primo esempio specifico xsi:nil="true" il file non viene validato perchè manxa nillabel=true nell'xsd, nel secondo caso se tolgo xsi:nil="true" l'xml non viene validato perchè la <xs:minLength value="1"> fa si che non vengano accettate stringhe vuote.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.