IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

[XSLT 2.0] - Comment rendre explicite une hierarchie (structure) implicite ?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 4
    Points : 3
    Points
    3
    Par défaut [XSLT 2.0] - Comment rendre explicite une hierarchie (structure) implicite ?
    Bonjour,


    Je dispose d'un fichier XML-RTF constitué de structure <rdf:description>
    liés entre-elles via l'attribut <rdf:ressource> d'une balise
    <rdfs:subClassOf> à une ou plusieurs autres structure(s) <rdf:description>
    ...
    ... Et ce de manière récursive sur un nombre - par avance - indéterminé de
    niveau

    | ==========================
    |
    | <rdf:description rdf:about="#TOPIC_TYPE">
    | <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    | </rdf:description>
    |
    | <rdf:description rdf:about="#FICHIER">
    | <rdfs:subClassOf rdf:resource="#TOPIC_TYPE"/>
    | <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    | </rdf:description>
    |
    | <rdf:description rdf:about="#ARTICLE">
    | <rdfs:subClassOf rdf:resource="#TOPIC_TYPE"/>
    | <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    | </rdf:description>
    |
    | <rdf:description rdf:about="#PERSONNALITY">
    | <rdfs:subClassOf rdf:resource="#TOPIC_TYPE"/>
    | <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    | </rdf:description>
    |
    | <rdf:description rdf:about="#PERSONNE">
    | <rdfs:subClassOf rdf:resource="#PERSONNALITY"/>
    | <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    | </rdf:description>
    |
    | <rdf:description rdf:about="#ENTREPRISE">
    | <rdfs:subClassOf rdf:resource="#PERSONNALITY"/>
    | <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    | </rdf:description>
    |
    | <rdf:description rdf:about="#ORGANISATION">
    | <rdfs:subClassOf rdf:resource="#PERSONNALITY"/>
    | <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    | </rdf:description>
    |
    | <rdf:description rdf:about="#DISTRIBUTEUR">
    | <rdfs:subClassOf rdf:resource="#ENTREPRISE"/>
    | <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    | </rdf:description>
    |
    | <rdf:description rdf:about="#TRANSPORTEUR">
    | <rdfs:subClassOf rdf:resource="#ENTREPRISE"/>
    | <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
    | </rdf:description>


    ============================================

    Comment rendre cette hierarchie plus explicite ? Comme par exemple :

    ============================================



    | <TOPIC_TYPE>
    | <FICHIER/>
    | <ARTICLE/>
    | <PERSONNALITY>
    | <ENTREPRISE>
    | <DISTRIBUTEUR/>
    | <TRANSPORTEUR/>
    | </ENTREPRISE>
    | <PERSONNE>
    | <ORGANISATION>
    | </PERSONNALITY>
    | </TOPIC_TYPE>
    | ============================================



    Merci pour toute piste me permettant de traiter ce type de
    structure de manière générique via un design pattern par exemple.



    Cordialement,


    Bernard

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    un template appelé récursivement devrait faire l'affaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <!-- On indexe les éléments subClassOf par leur attribut rdf:resource -->
    <xsl:key name="sous-classes" match="rdfs:subClassOf" use="@rdf:resource"/>
    ...
    <!-- On appelle les templates pour les descriptions en tête de la hiérarchie des classes -->
    <xsl:apply-template select="//rdf:description[not(rdfs:subClassOf)]"/>
    ...
    <xsl:template match="rdf:description">
      <xsl:element name="{substring-after(@rdf:about,'#')}">
        <!-- on appelle les templates pour les descriptions qui sont sous-classes de la classe en cours -->
        <xsl:apply-templates select="key('sous-classes', @rdf:about)/parent::rdf:description"/>
      </xsl:element>
    </xsl:template>
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci pour le tuyeau.
    Je teste se ASAP.
    Cdt,
    Bernard

Discussions similaires

  1. [Outils][C++] Comment rendre portable une application ?
    Par poporiding dans le forum Framework .NET
    Réponses: 1
    Dernier message: 05/01/2006, 18h21
  2. Comment réduire explicitement une fenêtre ?
    Par ToYonos dans le forum MFC
    Réponses: 1
    Dernier message: 13/09/2005, 16h28
  3. [c#] comment rendre invisble une colonne d'un datagrid
    Par meteor4 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 19/07/2005, 16h26
  4. Réponses: 10
    Dernier message: 19/05/2004, 15h44
  5. comment rendre invisible une FormStyle->fsMDIchild
    Par caluloa dans le forum C++Builder
    Réponses: 5
    Dernier message: 16/05/2003, 14h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo