Virtlab:Validace XML
Z VirtlabWiki
(Rozdíly mezi verzemi)
Verze z 14:50, 18. 10. 2007 Vav166 (Diskuse | příspěvky) ← Předchozí porovnání |
Aktuální verze Bam015 (Diskuse | příspěvky) |
||
Řádka 3: | Řádka 3: | ||
Soubory relax-ng používané pro validaci jsou uloženy v SVN | Soubory relax-ng používané pro validaci jsou uloženy v SVN | ||
* DISTR/xml/RELAXNG/ ... což je symbolický odkaz do DISTR/web/relax | * DISTR/xml/RELAXNG/ ... což je symbolický odkaz do DISTR/web/relax | ||
- | * [https://vl-test.cs.vsb.cz/websvn/listing.php?repname=virtlab&path=%2FDISTR%2Fweb%2Frelax%2F&rev=0&sc=0 SVN] | + | * [https://svn.cs.vsb.cz/websvn/listing.php?repname=virtlab&path=%2FDISTR%2Fweb%2Frelax%2F#_DISTR_web_relax_ SVN] |
==== Ukázka (taskupload.rng) ==== | ==== Ukázka (taskupload.rng) ==== | ||
Řádka 51: | Řádka 51: | ||
</element> | </element> | ||
- | <!-- Popis skupiny - group_descrip --> | ||
- | <element name="group_descrip"> | ||
- | <ref name="attlist.all_groups" /> | ||
- | |||
- | <zeroOrMore> | ||
+ | <!-- Popis zadani --> | ||
+ | <element name="specification"> | ||
+ | <zeroOrMore> | ||
<ref name="file" /> | <ref name="file" /> | ||
- | |||
</zeroOrMore> | </zeroOrMore> | ||
+ | </element> | ||
- | </element> | + | <!-- Popis obrazku --> |
+ | <element name="picture"> | ||
+ | <optional> | ||
+ | <ref name="file" /> | ||
+ | </optional> | ||
+ | </element> | ||
- | <!-- Popis skupiny - group_pics --> | + | <!-- Popis preconf --> |
- | <element name="group_pics"> | + | <element name="pre_conf"> |
- | <ref name="attlist.all_groups" /> | + | <optional> |
- | <zeroOrMore> | + | <ref name="file" /> |
- | + | </optional> | |
- | <ref name="file" /> | + | |
- | + | ||
- | </zeroOrMore> | + | |
- | + | ||
</element> | </element> | ||
- | |||
- | <!-- Popis skupiny - group_preconf --> | ||
- | <element name="group_preconf"> | ||
- | <ref name="attlist.all_groups" /> | ||
- | <zeroOrMore> | ||
- | <ref name="file" /> | + | <!-- Popis postconf --> |
+ | <element name="post_conf"> | ||
+ | <optional> | ||
+ | <ref name="file" /> | ||
+ | </optional> | ||
+ | </element> | ||
+ | |||
+ | <!-- Popis topology --> | ||
+ | <element name="topology"> | ||
+ | <optional> | ||
+ | <ref name="file" /> | ||
+ | </optional> | ||
+ | </element> | ||
- | </zeroOrMore> | + | <!-- Popis dia obrazku --> |
- | + | <element name="dia_picture"> | |
- | </element> | + | <optional> |
- | + | <ref name="file" /> | |
- | <!-- Popis skupiny - group_postconf --> | + | </optional> |
- | <element name="group_postconf"> | + | </element> |
- | <ref name="attlist.all_groups" /> | + | |
- | <zeroOrMore> | + | |
- | + | ||
- | <ref name="file" /> | + | |
- | + | ||
- | </zeroOrMore> | + | |
- | + | ||
- | </element> | + | |
- | + | ||
- | <!-- Popis skupiny - group_topology --> | + | |
- | <element name="group_topology"> | + | |
- | <ref name="attlist.all_groups" /> | + | |
- | <zeroOrMore> | + | |
- | + | ||
- | <ref name="file" /> | + | |
- | + | ||
- | </zeroOrMore> | + | |
- | + | ||
- | </element> | + | |
Řádka 112: | Řádka 99: | ||
</start> | </start> | ||
<!-- konec hlavni casti --> | <!-- konec hlavni casti --> | ||
+ | |||
<!-- nasleduje definice pouzitych elementu a atributu --> | <!-- nasleduje definice pouzitych elementu a atributu --> | ||
Řádka 124: | Řádka 112: | ||
</data> | </data> | ||
</attribute> | </attribute> | ||
+ | <optional> | ||
+ | <attribute name="lang"> | ||
+ | <data type="string"> | ||
+ | <param name="minLength">1</param> | ||
+ | <param name="maxLength">5</param> | ||
+ | </data> | ||
+ | </attribute> | ||
+ | </optional> | ||
<attribute name="filepath"> | <attribute name="filepath"> | ||
<data type="string"> | <data type="string"> | ||
Řádka 139: | Řádka 135: | ||
</define> | </define> | ||
- | <!-- Definice elementu "attlist.all_groups". Na definici se odkazuji pomoci 'ref name="attlist.all_groups"' | ||
- | slouzi pro vsechny "groups" --> | ||
- | <define name="attlist.all_groups" combine="interleave"> | ||
- | |||
- | <attribute name="name"> | ||
- | <data type="string"> | ||
- | <param name="minLength">1</param> | ||
- | <param name="maxLength">100</param> | ||
- | </data> | ||
- | </attribute> | ||
- | |||
- | <attribute name="exists"> | ||
- | |||
- | <choice> | ||
- | |||
- | <value>yes</value> | ||
- | |||
- | <value>no</value> | ||
- | |||
- | </choice> | ||
- | |||
- | </attribute> | ||
- | |||
- | </define> | ||
- | |||
<!-- konec RELAX NG schematu --> | <!-- konec RELAX NG schematu --> | ||
</grammar> | </grammar> | ||
+ | |||
</pre> | </pre> | ||
[[Kategorie:XML]] | [[Kategorie:XML]] |
Aktuální verze
V prvních verzích Virtlabu jsme validovali XML pomocí DTD, nicméně tento způsob má velké limity, proto jsme přešli na validaci pomocí Relax-ng (jde o variantu XMLSchema).
Soubory relax-ng používané pro validaci jsou uloženy v SVN
- DISTR/xml/RELAXNG/ ... což je symbolický odkaz do DISTR/web/relax
- SVN
[editovat]
Ukázka (taskupload.rng)
<?xml version="1.0" encoding="UTF-8"?> <!-- RELAX NG schema pro popis ulohy --> <grammar xmlns="http://relaxng.org/ns/structure/1.0" xmlns:html="http://www.w3.org/1999/xhtml" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes"> <start> <!-- zacatek --> <element name="task"> <!-- atribut "name" --> <attribute name="name"> <data type="string"> <param name="minLength">1</param> <param name="maxLength">35</param> </data> </attribute> <!-- nepovinny atribut "time" --> <optional> <attribute name="time"> <data type="decimal"> <param name="minInclusive">0</param> <param name="maxExclusive">10000000</param> </data> </attribute> </optional> <!-- Element popisující jméno v dlouhém formátu --> <element name="longname"> <data type="string"> <param name="minLength">1</param> <param name="maxLength">150</param> </data> </element> <!-- Element pro popis --> <element name="description"> <data type="string"> <param name="minLength">1</param> <param name="maxLength">250</param> </data> </element> <!-- Popis zadani --> <element name="specification"> <zeroOrMore> <ref name="file" /> </zeroOrMore> </element> <!-- Popis obrazku --> <element name="picture"> <optional> <ref name="file" /> </optional> </element> <!-- Popis preconf --> <element name="pre_conf"> <optional> <ref name="file" /> </optional> </element> <!-- Popis postconf --> <element name="post_conf"> <optional> <ref name="file" /> </optional> </element> <!-- Popis topology --> <element name="topology"> <optional> <ref name="file" /> </optional> </element> <!-- Popis dia obrazku --> <element name="dia_picture"> <optional> <ref name="file" /> </optional> </element> </element> </start> <!-- konec hlavni casti --> <!-- nasleduje definice pouzitych elementu a atributu --> <!-- Definice elementu "file". Na definici se odkazuji pomoci 'ref name="file"' --> <define name="file"> <element name="file"> <attribute name="name"> <data type="string"> <param name="minLength">1</param> <param name="maxLength">49</param> </data> </attribute> <optional> <attribute name="lang"> <data type="string"> <param name="minLength">1</param> <param name="maxLength">5</param> </data> </attribute> </optional> <attribute name="filepath"> <data type="string"> <param name="minLength">1</param> <param name="maxLength">299</param> </data> </attribute> <attribute name="exists"> <choice> <value>yes</value> <value>no</value> </choice> </attribute> </element> </define> <!-- konec RELAX NG schematu --> </grammar>