Nico Administrateur
Nombre de messages : 320 Age : 37 Localisation : Reims Date d'inscription : 17/05/2008
| Sujet: [Info aux développeurs] Exemple de rapport XML Mar 20 Mai - 19:26 | |
| Dans les prochaines versions du plugin, les rapports seront générés en XML. Le but est de permettre la récupération aisée des informations contenues dans les rapports, pour par exemple les afficher sur un site Web via un script PHP. Voilà un exemple de fichier XML : - Code:
-
<?xml version="1.0" encoding="UTF-8"?> <?xml-stylesheet type="text/xsl" href="cssmatch.xsl"?> <cssmatch> <plugin> <version>1.2.9</version> <url>http://code.google.com/p/cssmatch-plugin/</url> </plugin> <match> <date>10/07/2008</date> <debut>14h25</debut> <fin>14h37</fin> <nom>[team2] versus [team1]</nom> <map>de_dust</map> <tagcutround>[team2]</tagcutround> <teams> <team> <tag>[team1]</tag> <score>3</score> <scoret>2</scoret> <scorect>1</scorect> <joueurs> <joueur steamid="BOT"> <pseudo>Keith</pseudo> <kills>1</kills> <deaths>3</deaths> </joueur> <joueur steamid="BOT"> <pseudo>Tim</pseudo> <kills>3</kills> <deaths>2</deaths> </joueur> </joueurs> </team> <team> <tag>[team2]</tag> <score>1</score> <scoret>1</scoret> <scorect>0</scorect> <joueurs> <joueur steamid="BOT"> <pseudo>Ian</pseudo> <kills>1</kills> <deaths>2</deaths> </joueur> <joueur steamid="BOT"> <pseudo>Don</pseudo> <kills>4</kills> <deaths>3</deaths> </joueur> </joueurs> </team> </teams> <sourcetv> <manche numero="1">cfg/cssmatch/sourcetv/2008-07-10_16h31_de_dust_manche_1.dem</manche> <manche numero="2">cfg/cssmatch/sourcetv/2008-07-10_16h34_de_dust_manche_2.dem</manche> </sourcetv> </match> </cssmatch> Il respecte la DTD suivante : - Code:
-
<!-- DTD d'un rapport de match au format XML --> <!-- Racine --> <!ELEMENT cssmatch (plugin, match)> <!-- Informations sur le plugin --> <!ELEMENT plugin (version, url)> <!ELEMENT version (#PCDATA)> <!ELEMENT url (#PCDATA)> <!-- Information sur le match --> <!ELEMENT match (date, debut, fin, nom, map, tagcutround?, teams, spectateurs?, sourcetv?)> <!ELEMENT date (#PCDATA)> <!-- Au format jj/mm/aaaa --> <!ELEMENT debut (#PCDATA)> <!-- Au format HEUREShMINUTES --> <!ELEMENT fin (#PCDATA)> <!-- Au format HEUREShMINUTES --> <!ELEMENT nom (#PCDATA)> <!-- Typiquement : tagTeam1 vs tagTeam2 --> <!ELEMENT map (#PCDATA)> <!ELEMENT tagcutround (#PCDATA)> <!-- Le tag de la team ayant gagné le CutRound --> <!-- Contient les teams --> <!ELEMENT teams (team+)> <!-- Information sur une team --> <!ELEMENT team (tag, score, scoret, scorect, joueurs)> <!ELEMENT tag (#PCDATA)> <!ELEMENT score (#PCDATA)> <!-- Score total de la team --> <!ELEMENT scoret (#PCDATA)> <!-- Score en terroriste --> <!ELEMENT scorect (#PCDATA)> <!-- Score en anti-terroriste --> <!-- Contient les joueurs --> <!ELEMENT joueurs (joueur+)> <!-- Information sur un joueur --> <!ELEMENT joueur (pseudo, kills, deaths)> <!ELEMENT steamid (#PCDATA)> <!ELEMENT pseudo (#PCDATA)> <!ELEMENT kills (#PCDATA)> <!ELEMENT deaths (#PCDATA)> <!ATTLIST joueur steamid CDATA #REQUIRED> <!-- Contient les spectateurs --> <!ELEMENT spectateurs (joueur+)> <!-- Information sur les enregistrements SourceTV --> <!ELEMENT sourcetv (manche+)> <!-- Chemins relatifs au dossier cstrike où sont enregistrées les vidéos de la manche 1 et 2 --> <!ELEMENT manche (#PCDATA)> <!ATTLIST manche numero CDATA #REQUIRED>
Dernière édition par Nico le Mar 22 Juil - 1:19, édité 5 fois | |
|
Nico Administrateur
Nombre de messages : 320 Age : 37 Localisation : Reims Date d'inscription : 17/05/2008
| Sujet: Re: [Info aux développeurs] Exemple de rapport XML Mar 20 Mai - 19:26 | |
| Plus compliqué mais bien plus précis (et encore, ça aurait pu m'être bien plus), le schéma XSD d'un rapport XML : - Code:
-
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns="http://cssmatch-plugin.googlecode.com/cssmatch" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:cssmatch="http://cssmatch-plugin.googlecode.com/cssmatch" targetNamespace="http://cssmatch-plugin.googlecode.com/cssmatch" elementFormDefault="qualified"> <xs:annotation> <xs:appinfo>cssmatch.xsd</xs:appinfo> <xs:documentation>Schéma d'un rapport de match XML du plugin CSSMatch</xs:documentation> </xs:annotation> <!-- ========== Déclaration des éléments ========== --> <!-- Racine du document XML --> <xs:element name="cssmatch" type="cssmatch:cssmatchType"/> <!-- Elément plugin --> <xs:element name="plugin" type="cssmatch:pluginType"/> <!-- Elément match --> <xs:element name="match" type="cssmatch:matchType"/> <!-- Elément teams --> <xs:element name="teams" type="cssmatch:teamsType"/> <!-- Elément spectateurs --> <xs:element name="spectateurs" type="cssmatch:spectateursType"/> <!-- Elément sourcetv --> <xs:element name="sourcetv" type="cssmatch:sourcetvType"/> <!-- Elément team --> <xs:element name="team" type="cssmatch:teamType"/> <!-- Elément joueurs --> <xs:element name="joueurs" type="cssmatch:joueursType"/> <!-- Elément joueur --> <xs:element name="joueur" type="cssmatch:joueurType"/> <!-- Elément manche --> <xs:element name="manche" type="cssmatch:mancheType"/> <!-- ========== Déclaration des groupes ========== --> <xs:group name="pluginGroup"> <xs:annotation> <xs:documentation>Données représentant un noeud plugin</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="version" type="xs:string"/> <xs:element name="url" type="xs:anyURI"/> </xs:sequence> </xs:group> <xs:group name="matchGroup"> <xs:annotation> <xs:documentation>Données représentant un noeud match</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="date" type="xs:string"/> <!-- Format : dd/mm/yyyy --> <xs:element name="debut" type="xs:string"/> <!-- Format : HEUREShMINUTES --> <xs:element name="fin" type="xs:string"/> <!-- Format : HEUREShMINUTES --> <xs:element name="nom" type="xs:string"/> <xs:element name="map" type="xs:string"/> <xs:element name="tagcutround" type="xs:string" minOccurs="0" maxOccurs="1"/> </xs:sequence> </xs:group> <xs:group name="teamGroup"> <xs:annotation> <xs:documentation>Données représentant un noeud team</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="tag" type="xs:string"/> <xs:element name="score" type="xs:integer"/> <xs:element name="scoret" type="xs:integer"/> <xs:element name="scorect" type="xs:integer"/> </xs:sequence> </xs:group> <xs:group name="joueurGroup"> <xs:annotation> <xs:documentation>Données représentant un noeud joueur</xs:documentation> </xs:annotation> <xs:sequence> <xs:element name="pseudo" type="xs:string"/> <xs:element name="kills" type="xs:integer"/> <xs:element name="deaths" type="xs:integer"/> </xs:sequence> </xs:group> <!-- ========== Déclaration des types ========== --> <xs:complexType name="cssmatchType"> <xs:annotation> <xs:documentation>Schéma de la racine cssmatch</xs:documentation> </xs:annotation> <xs:sequence> <xs:element ref="plugin"/> <xs:element ref="match"/> </xs:sequence> </xs:complexType> <xs:complexType name="pluginType"> <xs:annotation> <xs:documentation>Schéma d'un élément plugin</xs:documentation> </xs:annotation> <xs:sequence> <xs:group ref="pluginGroup"/> </xs:sequence> </xs:complexType> <xs:complexType name="matchType"> <xs:annotation> <xs:documentation>Schéma d'un élément match</xs:documentation> </xs:annotation> <xs:sequence> <xs:group ref="matchGroup"/> <xs:element ref="teams"/> <xs:element ref="spectateurs" minOccurs="0"/> <xs:element ref="sourcetv" minOccurs="0"/> </xs:sequence> </xs:complexType> <xs:complexType name="teamsType"> <xs:annotation> <xs:documentation>Schéma d'un élément teams</xs:documentation> </xs:annotation> <xs:sequence> <xs:element ref="team" minOccurs="2" maxOccurs="2"/> </xs:sequence> </xs:complexType> <xs:complexType name="teamType"> <xs:annotation> <xs:documentation>Schéma d'un élément team</xs:documentation> </xs:annotation> <xs:sequence> <xs:group ref="teamGroup"/> <xs:element ref="joueurs"/> </xs:sequence> </xs:complexType> <xs:complexType name="joueursType"> <xs:annotation> <xs:documentation>Schéma d'un élément joueurs</xs:documentation> </xs:annotation> <xs:sequence> <xs:element ref="joueur" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="joueurType"> <xs:annotation> <xs:documentation>Schéma d'un élément joueur</xs:documentation> </xs:annotation> <xs:sequence> <xs:group ref="joueurGroup"/> </xs:sequence> <xs:attribute name="steamid" type="xs:string" use="required"/> </xs:complexType> <xs:complexType name="spectateursType"> <xs:annotation> <xs:documentation>Schéma d'un élément spectateurs</xs:documentation> </xs:annotation> <xs:sequence> <xs:element ref="joueur" minOccurs="0" maxOccurs="unbounded"/> </xs:sequence> </xs:complexType> <xs:complexType name="sourcetvType"> <xs:annotation> <xs:documentation>Schéma d'un élément sourcetv</xs:documentation> </xs:annotation> <xs:sequence> <xs:element ref="manche" minOccurs="1" maxOccurs="2"/> </xs:sequence> </xs:complexType> <xs:complexType name="mancheType" mixed="true"> <xs:annotation> <xs:documentation>Schéma d'un élément manche</xs:documentation> </xs:annotation> <xs:attribute name="numero" type="cssmatch:numeroMancheType" use="required"/> </xs:complexType> <xs:simpleType name="numeroMancheType"> <xs:annotation> <xs:documentation>Schéma d'un attributs de type numero (voir le noeud manche)</xs:documentation> </xs:annotation> <xs:restriction base="xs:positiveInteger"> <xs:minInclusive value="1"/> <xs:maxInclusive value="2"/> </xs:restriction> </xs:simpleType> </xs:schema> Un document XML validé avec ce schéma est un rapport CSSMatch sans erreur qui peut être traité sans aucun test de validité. Par ailleurs il vous fournit avec précision le contenu que le rapport XML peut contenir. Je vous conseille donc de valider les rapports avec ce schéma dans vos scripts PHP Le schéma sera distribué avec la prochaine version BETA du plugin.
Dernière édition par Nico le Dim 13 Juil - 2:34, édité 1 fois | |
|
Flippy
Nombre de messages : 60 Date d'inscription : 21/05/2008
| Sujet: Re: [Info aux développeurs] Exemple de rapport XML Jeu 10 Juil - 20:57 | |
| Tiens je n'avais pas fait attention au schéma XSD, j'essaierai de l'utiliser . | |
|
Nico Administrateur
Nombre de messages : 320 Age : 37 Localisation : Reims Date d'inscription : 17/05/2008
| Sujet: Re: [Info aux développeurs] Exemple de rapport XML Dim 13 Juil - 2:54 | |
| Mise à jour de tous les exemples : xml, dtd et xsd. A propos de la validation XSD : Pour l'instant, un rapport ne peut être validé à par rapport au fichier XSD, que j'ai donné ci-dessus, en effectuant la modification suivante sur le rapport : Remplacer la ligne suivante : - Code:
-
<cssmatch> Par la ligne suivante : - Code:
-
<cssmatch xmlns="http://cssmatch-plugin.googlecode.com/cssmatch"> Cette modification peut être faite via l'API que vous utilisez pour lire le XML. C'est un simple ajout d'attribut. Il est tard, il n'est pas impossible qu'une modification du fichier XSD permette d'éviter d'avoir à modifier le rapport. A suivre. Demain je mettrai les fichiers DTD et XSD en ligne, sur le SVN avec le code source du plugin. Comme ça, pas de copie de ces fichiers à télécharger avec votre programme. Je pourrais alors corriger ces fichiers en ligne, ce qui évite aux utilisateurs de mettre à jour eux-même ces fichiers en cas de bug. | |
|
Contenu sponsorisé
| Sujet: Re: [Info aux développeurs] Exemple de rapport XML | |
| |
|