Salut,
J'ai besoin de décrire une structure très simple en xml, dont le document ressemble à ceci:
J'avais tout d'abord fait une DTD:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <?xml version="1.0" encoding="UTF-8"?> <station-logos type="freeboxtv" base-url="http://unsite/remote/station-logos/tv"> <station num="1" filename="tf1.png" /> <station num="2" filename="france2.png" /> <station num="3" filename="france3.png" /> <station num="5" filename="france5.png" /> <station num="6" filename="m6.png" /> <station num="7" filename="arte.png" /> <station num="8" filename="direct8.png" /> <station num="9" filename="w9.png" /> <station num="11" filename="nt1.png" /> <station num="12" filename="nrj.png" /> <station num="13" filename="lcp.png" /> </station-logos>
mais je voudrais maintenant utiliser XMLSchema.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <?xml version="1.0" encoding="utf-8"?> <!ELEMENT station-logos (station*)> <!ATTLIST station-logos type CDATA #REQUIRED base-url CDATA #REQUIRED> <!ELEMENT station EMPTY> <!ATTLIST station num CDATA #REQUIRED filename CDATA #REQUIRED> <!ELEMENT url (#PCDATA)>
J'ai donc fait ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="station-logos"> <xs:complexType> <xs:sequence> <xs:element name="station" type="Station" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> </xs:element> <xs:complexType name="Station"> <xs:sequence> <xs:element name="num" type="xs:nonNegativeInteger"/> <xs:element name="filename" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:schema>
- Concernant la structure, vaut-il mieux "externaliser" xs:complexType pour l'élement "station-logos"?
- Vaut-il mieux xs: ou xsd: (j'ai trouvé les 2 sur google)?
- J'ai utilisé nonNegativeInteger parce que j'ai trouvé ça par hasard, mais où puis-je trouver la liste de tous les types prédéfinis?
- Pour la DTD, il est possible d'indiquer dans un xml utilisant ce format une ligne du genre
Comment faire de même en XMLSchema?
Code : Sélectionner tout - Visualiser dans une fenêtre à part <!DOCTYPE channel-logos PUBLIC "unsite/public-logos" "http://unsite/remote/station-logo.dtd">
- Une fois cette ligne ajoutée, les parseurs SAX ou DOM de Java peuvent-il vérifier qu'un document respecte le XMLSchema (comme il le fait pour vérifier le respect de la DTD)?
- Ai-je fait des erreurs dans ma description XMLSchema?
Partager