CSSMatch - Ancien forum
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

CSSMatch - Ancien forum

Attention ! Nouveaux forums : http://www.cssmatch.com . Vous ne pouvez plus créer de nouveau topic ici !
Désolé pour le dérangement.


 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  ConnexionConnexion  
-21%
Le deal à ne pas rater :
LEGO® Icons 10329 Les Plantes Miniatures, Collection Botanique
39.59 € 49.99 €
Voir le deal

 

 [Info aux développeurs] Exemple de rapport XML

Aller en bas 
2 participants
AuteurMessage
Nico
Administrateur



Masculin Nombre de messages : 320
Age : 37
Localisation : Reims
Date d'inscription : 17/05/2008

[Info aux développeurs] Exemple de rapport XML Empty
MessageSujet: [Info aux développeurs] Exemple de rapport XML   [Info aux développeurs] Exemple de rapport XML Icon_minitimeMar 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
Revenir en haut Aller en bas
https://cssmatch.frenchboard.com
Nico
Administrateur



Masculin Nombre de messages : 320
Age : 37
Localisation : Reims
Date d'inscription : 17/05/2008

[Info aux développeurs] Exemple de rapport XML Empty
MessageSujet: Re: [Info aux développeurs] Exemple de rapport XML   [Info aux développeurs] Exemple de rapport XML Icon_minitimeMar 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 Smile 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
Revenir en haut Aller en bas
https://cssmatch.frenchboard.com
Flippy




Nombre de messages : 60
Date d'inscription : 21/05/2008

[Info aux développeurs] Exemple de rapport XML Empty
MessageSujet: Re: [Info aux développeurs] Exemple de rapport XML   [Info aux développeurs] Exemple de rapport XML Icon_minitimeJeu 10 Juil - 20:57

Tiens je n'avais pas fait attention au schéma XSD, j'essaierai de l'utiliser Smile.
Revenir en haut Aller en bas
Nico
Administrateur



Masculin Nombre de messages : 320
Age : 37
Localisation : Reims
Date d'inscription : 17/05/2008

[Info aux développeurs] Exemple de rapport XML Empty
MessageSujet: Re: [Info aux développeurs] Exemple de rapport XML   [Info aux développeurs] Exemple de rapport XML Icon_minitimeDim 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">

Arrow 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.
Revenir en haut Aller en bas
https://cssmatch.frenchboard.com
Contenu sponsorisé





[Info aux développeurs] Exemple de rapport XML Empty
MessageSujet: Re: [Info aux développeurs] Exemple de rapport XML   [Info aux développeurs] Exemple de rapport XML Icon_minitime

Revenir en haut Aller en bas
 
[Info aux développeurs] Exemple de rapport XML
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Rapport de matches

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
CSSMatch - Ancien forum :: CSSMatch :: Applications connexes-
Sauter vers:  
Ne ratez plus aucun deal !
Abonnez-vous pour recevoir par notification une sélection des meilleurs deals chaque jour.
IgnorerAutoriser