Come faccio a specificare un elenco di elementi XML figlio richiesti che non hanno bisogno di essere in sequenza?
-
29-09-2019 - |
Domanda
I seguenti Convalida XML rispetto al documento XSD in dotazione. Tuttavia quando inizio la rimozione di elementi come dalla xml convalida ANCORA!?
Come faccio a scrivere un XSD che le forze l'inclusione di elementi?
<?xml version="1.0" encoding="UTF-8"?>
<Video>
<Title>
</Title>
<Description>
</Description>
<Contributor>
</Contributor>
<Subject>
</Subject>
</Video>
Poi ho il XSD:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="UploadXSD"
targetNamespace="http://tempuri.org/UploadXSD.xsd"
elementFormDefault="qualified"
xmlns="http://tempuri.org/UploadXSD.xsd"
xmlns:mstns="http://tempuri.org/UploadXSD.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Video">
<xs:complexType>
<xs:sequence>
<xs:element name="Title" minOccurs="1" type="xs:string"></xs:element>
<xs:element name="Description" minOccurs="1" type="xs:string"></xs:element>
<xs:element name="Contributor" minOccurs="1" type="xs:string"></xs:element>
<xs:element name="Subject" minOccurs="1" type="xs:string"></xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Soluzione
Il tuo targetNamespace nel XSD deve corrispondere al namespace del xml che si sta tentando di convalidare, cioè.
<Video xmlns="http://tempuri.org/UploadXSD.xsd">
<Title>
</Title>
<Description>
</Description>
<Contributor>
</Contributor>
<Subject>
</Subject>
</Video>
Altri suggerimenti
Se si utilizza xs:all
al contrario di xs:sequence
, gli elementi possono apparire in qualsiasi ordine. Ci sono alcune restrizioni aggiuntive - (. Non sono sicuro se si intende che l'utilizzo, lo schema sarebbe attualmente permetterlo), ad esempio, gli elementi non possono essere specificati più volte utilizzando all
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow