Virtlab:Validace XML

Z VirtlabWiki

(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
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

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>


Osobní nástroje