XML / HTML: abbiamo bisogno del nome dell'elemento nei tag di chiusura?

3

Rispetto ad altri linguaggi di serializzazione, una delle principali critiche rivolte all'XML è la sua verbosità; JSON è più conciso e leggibile per la maggior parte dei casi, ma non tutti.

Ma mi sembra che potremmo ridurre molto dell'eccesso da XML semplicemente togliendo i nomi dai tag di chiusura. Con una corretta indentazione la leggibilità non dovrebbe essere un problema (dovrebbe essere un miglioramento, se me lo chiedi), e dal momento che non sono strutturalmente necessari, qualsiasi editor / visualizzatore XML decente potrebbe facilmente essere fatto per eliminarli / nasconderli o aggiungerli. Pertanto, i due formati dovrebbero essere completamente equivalenti e intercambiabili.

Confronta quanto segue (fonte tratta dal link ):

<breakfast_menu>
    <food>
        <name>Belgian Waffles</name>
        <price>$5.95</price>
        <description>
                    Two of our famous Belgian Waffles with plenty of real maple syrup
        </description>
        <calories>650</calories>
    </food>
    <food>
        <name>Strawberry Belgian Waffles</name>
        <price>$7.95</price>
        <description>
                    Light Belgian waffles covered with strawberries and whipped cream
        </description>
        <calories>900</calories>
    </food>
    <food>
        <name>Berry-Berry Belgian Waffles</name>
        <price>$8.95</price>
        <description>
                    Light Belgian waffles covered with an assortment of fresh berries and whipped cream
        </description>
        <calories>900</calories>
    </food>
    <food>
        <name>French Toast</name>
        <price>$4.50</price>
        <description>
                    Thick slices made from our homemade sourdough bread
        </description>
        <calories>600</calories>
    </food>
    <food>
        <name>Homestyle Breakfast</name>
        <price>$6.95</price>
        <description>
                    Two eggs, bacon or sausage, toast, and our ever-popular hash browns
        </description>
        <calories>950</calories>
    </food>
</breakfast_menu>

e

<breakfast_menu>
    <food>
        <name>Belgian Waffles</>
        <price>$5.95</>
        <description>
                        Two of our famous Belgian Waffles with plenty of real maple syrup
        </>
        <calories>650</>
    </>
    <food>
        <name>Strawberry Belgian Waffles</>
        <price>$7.95</>
        <description>
                        Light Belgian waffles covered with strawberries and whipped cream
        </>
        <calories>900</>
    </>
    <food>
        <name>Berry-Berry Belgian Waffles</>
        <price>$8.95</>
        <description>
                        Light Belgian waffles covered with an assortment of fresh berries and whipped cream
        </>
        <calories>900</>
    </>
    <food>
        <name>French Toast</>
        <price>$4.50</>
        <description>
                        Thick slices made from our homemade sourdough bread
        </>
        <calories>600</>
    </>
    <food>
        <name>Homestyle Breakfast</>
        <price>$6.95</>
        <description>
                        Two eggs, bacon or sausage, toast, and our ever-popular hash browns
        </>
        <calories>950</>
    </>
</>
    
posta Michael Rosefield 17.07.2013 - 12:14
fonte

2 risposte

12

Possiamo cambiare il formato XML (ad esempio, creare un nuovo linguaggio che non ha il problema della verbosità)? Sì, possiamo.

Per migrare completamente al "XML migliore" (chiamiamolo BETXML), occorrerebbe:

  • Reimplementa tutti i parser,

  • Riscrivi tutte le applicazioni che attualmente usano XML,

  • Riscrivi tutti i protocolli basati su XML.

Oppure possiamo tenere tutto a posto e inventare una nuova lingua e aspettare che inizi ad adattarsi ovunque. L'unico problema è che i vantaggi di una nuova lingua sono molto limitati. Le applicazioni che richiedono un linguaggio meno dettagliato già usano JSON. Come convinceresti che BETXML è superiore a XML e JSON?

    
risposta data 17.07.2013 - 12:31
fonte
8

Non riesco a vedere il grande guadagno con la variante </> . Stai parlando di leggibilità per l'occhio umano? In tal caso, prenderei l'ordinario XML ogni giorno piuttosto che cercare di capire cosa il codice sta cercando di dirmi quando vedo qualcosa di simile nel mezzo di un file:

    ...
    </></></></></></></>
    <something>
    ...

Un file XML è un contenitore di dati. Solo perché puoi leggere e modificare a mano in un editor di testo non significa necessariamente che sia una buona idea farlo. Serve principalmente a trasmettere dati da un'applicazione all'altra (o, sì, solo a memorizzare dati).

Quindi forse intendi le dimensioni effettive del file? Bene, se è così importante, probabilmente non stai usando il formato di file più adatto in ogni caso.

Ma una ragione più importante per mantenere XML così com'è, è che quando c'è un errore strutturale in un file XML reale , la progettazione tag / tag di XML rende molto facile un parser per determinare dove si trova il problema, e quindi per determinare se il resto del file può ancora essere utilizzato.

Se nella tua variante </> manca un tag di fine, è molto più difficile per il parser trovare la causa del problema. E se non hai una buona DTD, allora il parser non vedrà nemmeno che qualcosa non va finché non raggiunge la fine del file e (si spera) rileva che c'è uno squilibrio di livello. E a quel punto non c'è altro da fare che rifiutare l'intero file poiché non c'è modo di dire dove si trova l'errore.

    
risposta data 17.07.2013 - 18:21
fonte

Leggi altre domande sui tag