Suggerimenti e trucchi nell'implementazione dello schema XML o XML

0

In primo luogo sto iniziando a creare un formato / struttura XML standard per i nostri utenti. Gli obiettivi sono:

  • XML che può essere utilizzato per più organizzazioni
  • XML che può essere utilizzato per mappare i dati di sistema esterni ai nostri dati di sistema
  • La struttura XML dovrebbe essere nelle migliori pratiche
  • XML dovrebbe essere adattabile per cambiare

Quanto sopra sono gli obiettivi, quindi la nostra struttura iniziale, XML degli utenti, sarebbe simile a questa:

<users>
    <user>
        <firstName></firstName>
        <lastName></lastName>
        <email></email>
        <!-- .. some user child node here -->
    </user>
</users>

Quindi sto pensando a cosa succederebbe se questa struttura crescesse e potessi avere diversi oggetti associati all'utente come:

<users>
    <user>
        <firstName></firstName>
        <lastName></lastName>
        <email></email>
        <element1>
            <child1></child1>
        </element1>
        <element2>
            <child1></child1>
            <child2>
                <innerChild1></innerChild1>
            </child2>
        </element2>
    </user>
</users>

Quindi dovrei implementare urn namespace per identificare in modo univoco lo stesso named <element> . È qui che lo spazio dei nomi è utile.

Le mie domande sono:

  • Devo implementare lo spazio dei nomi implementandolo sul campione XML iniziale?
  • Quando utilizzare l'attributo anziché creare elementi come nodo figlio?
  • Le migliori pratiche che potrei utilizzare per il nostro XML possono essere modificabili per cambiare?
  • Quali sono le cose che dovrei impedire durante la creazione o la strutturazione di XML?

Nota: stiamo utilizzando XML anziché JSON perché la maggior parte dei nostri utenti utilizza XML.

    
posta rpmansion 18.05.2017 - 18:19
fonte

2 risposte

4

Onestamente, la mia risposta sarebbe inizialmente: non usare XML. Ho lavorato con XML per molti anni e la realtà è che è un formato terribile per lo scambio di dati. JSON ha i suoi difetti ma è molto meglio. XML non è in realtà un cattivo modo per creare documenti, ma anche quell'uso viene sostituito con HTML5.

Tuttavia, dato che sei "obbligato" a farlo, ecco il mio elenco di consigli:

XML

  • I namespace XML risucchiano da gestire ma, se necessario, è meglio utilizzarli sin dall'inizio. L'ammodernamento è un enorme dolore per la mia esperienza.
  • Utilizza gli attributi solo per i metadati. Gli elementi sono molto più potenti. Quando qualcosa che pensavi fosse semplice diventa complessa, è ancora un elemento. Un elemento può anche essere più di una cosa a seconda del contesto.
  • Mai e poi mai consentire contenuti misti. Cioè, non consentire i nodi di testo e gli elementi secondari come contenuto allo stesso tempo. È o o
  • Non consentire riferimenti alle entità . Questo è un serio rischio per la sicurezza.
  • dichiara tutti i namespace nella radice e usa i prefissi. Mettere le dichiarazioni dei namespace su ogni elemento aggiungerà un sacco di bloat a un documento già gonfio.
  • Rimuovi tutti gli spazi bianchi se stai facendo qualsiasi tipo di crittografia o firme.

XSD

  • Dimentica tutto ciò che riguarda le fette di salame e le veneziane. Creare definizioni di elementi a livello di schema solo per quelle cose che si desidera utilizzare come root di un documento. Tutto il resto dovrebbe essere un tipo.
  • Usa le sequenze praticamente sempre. Gli elementi di scelta possono essere utili ma complicare le cose.
  • Non specificare nillable="true" . Usa minOccurs="0" . L'elemento è lì con un valore, lì e vuoto, o non c'è. L'introduzione di valori nulli a livello di interfaccia è una cattiva idea.
  • Non puoi dire cose come "almeno 2 delle seguenti tre opzioni" in XSD senza diventare pazzo. Lascia andare e andare avanti.

Ne aggiungerò altri se riesco a pensare a qualcosa.

    
risposta data 18.05.2017 - 23:25
fonte
2

1) Gli spazi dei nomi non sono richiesti. Per un progetto semplice, mantienilo il più semplice possibile. Usa gli spazi dei nomi quando il tuo progetto diventa più grande e quando hai bisogno di diversi formati xml dove c'è il rischio di scontri sul nome.

2) I pro e i contro tra elementi e attributi sono sottili. Non preoccuparti se il tuo progetto è ancora piccolo.

3) 4) Basta mantenere il tuo xml il più semplice possibile.

Quando hai creato un sistema funzionante e hai acquisito esperienza, potresti riconsiderare le strutture xml. Se ti preoccupi troppo ora, rimarrai bloccato.

Potresti anche google sui rischi di "ottimizzazione prematura".

Buona fortuna!

    
risposta data 18.05.2017 - 22:50
fonte

Leggi altre domande sui tag