Domanda

La mia esigenza è quella di convalidare un xml con due diverse strategie di validazione. Nella strategia 1, il codice XML deve avere le istanze di un elemento con alcuni attributi richiesti. Nella strategia 2, il codice XML deve avere istanze dello stesso elemento con diversi attributi obbligatori. Così, l'idea è che ci sono due differenti set dello stesso elemento con diverso insieme di attributi necessari per ogni set. C'è un modo per convalidare questa con l'utilizzo di un solo XSD. La mia unica soluzione finora è quello di utilizzare due diversi file XSD per convalidare.

Esempio 1:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <element firstName="something"/> <!--required -->
    <element lastName="something"/> <!-- required -->
 <element phoneNumber="something"/> <!-- not required -->
<root>

Esempio 2:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <element firstName="something"/> <!-- not required -->
    <element lastName="something"/> <!-- required -->
 <element phoneNumber="something"/> <!-- required -->
<root>

Può essere ottenuto la convalida da XSD?

È stato utile?

Soluzione

Rick,

Ho avuto problemi simili da risolvere nelle nostre applicazioni, e la nostra migliore soluzione è stata quella di utilizzare schemi modulare.

Così, invece di avere Schema1 e Schema2 che sono duplicati di ogni altro, tranne per la parte che è diverso, hai Schema1 e Schema2 che includono solo i vincoli che sono diversi, e sia l'importazione di uno Schema3 comune che definisce i vincoli che sono condivisi .

Un esempio di come farlo è qui .

Non si dà un solo XSD, ma non ridurre la duplicazione, in modo che aiuta con la manutenzione e consente di evitare la probabilità di errori strisciante in quando si ha molto duplicazioni tra Schema1 e Schema2.

Lo svantaggio è che gli schemi diventano un po 'più difficile per gli esseri umani da seguire, perché le definizioni sono suddivisi tra i diversi file.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top