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 :

Convertir: XHTML a RDF [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Juin 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2013
    Messages : 53
    Points : 30
    Points
    30
    Par défaut Convertir: XHTML a RDF
    Bonjour,
    j'aimerais savoir comment transformer un document XHTML annoté en "Dublin Core" (RDF) en utilisant XSLT. Je sais que je dois aussi utiliser Xpath, mais je sais pas comment mettre tout ca place ?
    Voici ce que je veux obtenir:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="ISO-8859-1" ?> 
    <rdf:RDF 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > 
     
    <rdf:Description rdf:about="http://mondocument.org"> 
    <title 
    xmlns="http://purl.org/dc/elements/1.1/"> 
    le titre de mon document 
    </title > 
    </rdf:Description> 
     
    </rdf:RDF>
    voila mon programme XSLT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    <?xml version="1.0" encoding="ISO-8859-1"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml"> 
    <xsl:output method="html" version="1.0" encoding="ISO-8859-1" indent="yes"/> 
     <xsl:template match="xhtml:link"> 
    </xsl:template> 
     
    <xsl:template match="xhtml:link"> 
    <html> 
    <body><pre> 
     
     <?xml version="1.0" encoding="ISO-8859-1" ?> 
     <rdf:RDF 
     xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > 
     
     <xsl:if test="substring-before(@rel,'.') = 'schema' "> 
    	<xsl:for-each select="../xhtml:meta[substring-before(@name,'.') = substring-after(current()/@rel,'.')]"> 
     <rdf:Description rdf:about="http://mondocument.org"> 
    	<<xsl:value-of select="substring-after(./@name,'.')"/> 
    	xmlns="<xsl:value-of select="../xhtml:link[substring-after(@rel,'.')=substring-before(current()/@name,'.')]/@href"/>"> 
    	<xsl:value-of select="@content"/> 
    	</<xsl:value-of select="substring-after(./@name,'.')"/> > 
    	</rdf:Description> 
    	</xsl:for-each> 
     </xsl:if> 
     
     </rdf:RDF> 
    </pre></body> 
    </html> 
     
    </xsl:template> 
    </xsl:stylesheet>
    et mon programme XHTML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    <?xml version="1.0" encoding="ISO-8859-1"?> 
    <?xml-stylesheet type="text/xsl" href="Test.xslt"?> 
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    	<head> 
    	<link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" /> 
    	<meta name="DC.title" content="le titre de mon document" /> 
    	<meta name="DC.description" content="http://mondocument.org" /> 
    	<title>Un petit document</title> 
    	</head> 
    	<body> 
    	<p>Test</p> 
    	</body> 
    </html>
    mes sa donne pas le bon résultat , sa me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?xml version="1.0" encoding="ISO-8859-1" ?> 
    <rdf:RDF 
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" > 
     
    <rdf:Description rdf:about="http://mondocument.org"> 
    <title 
    xmlns="http://purl.org/dc/elements/1.1/"> 
    le titre de mon document 
    </title > 
    </rdf:Description> 
     
    <rdf:Description rdf:about="http://mondocument.org"> 
    <description 
    xmlns="http://purl.org/dc/elements/1.1/"> 
    http://mondocument.org 
    </description > 
    </rdf:Description> 
     
    </rdf:RDF>
    merci pour votre aide

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    [0] Sous l'hypothèse que:
    Voici ce que je veux obtenir:
    ...
    voila mon programme XSLT :
    ...
    mes sa donne pas le bon résultat , sa me donne :
    ...
    vous pouvez simplement remplaçez cette ligne par la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <!--
    <xsl:for-each select="../xhtml:meta[substring-before(@name,'.') = substring-after(current()/@rel,'.')]">
    -->
    <xsl:for-each select="../xhtml:meta[substring-before(@name,'.') = substring-after(current()/@rel,'.') 
        and substring-after(@name,'.')='title']">
    [0.1] Mais ça devrait trop simple et c'est une hypothèse très audacieuse: donc, je ne comprends pas du tout pourquoi ça puisse résulter quelque chose comme vous avez décrite, du tout.

    Avec ces genres de constructions, erreurs sont guarantees et il vous faut débarraser ce genre de raisonnement:
    <<xsl:value-of select="substring-after(./@name,'.')"/>
    xmlns="<xsl:value-of select="../xhtml:link[substring-after(@rel,'.')=substring-before(current()/@name,'.')]/@href"/>">
    <xsl:value-of select="@content"/>
    </<xsl:value-of select="substring-after(./@name,'.')"/> >
    [1] Pour sortir un rdf simple et direct sans être "embeddé" dans un html et un pre élément, vous pouvez faire ça.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
        xmlns:xhtml="http://www.w3.org/1999/xhtml"
        xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> 
    <xsl:output method="xml" version="1.0" encoding="ISO-8859-1" indent="yes"/>
    <xsl:template match="/">
        <rdf:RDF>
            <xsl:apply-templates select="xhtml:html/xhtml:head/xhtml:link" />
        </rdf:RDF>
    </xsl:template>
    <xsl:template match="xhtml:link">
        <xsl:if test="substring-before(@rel,'.')='schema'">
            <rdf:Description rdf:about="http://mondocument.org">
                <xsl:for-each select="../xhtml:meta[substring-before(@name,'.')=substring-after(current()/@rel,'.')
                    and substring-after(@name,'.')='title']">
                    <xsl:element name="{substring-after(@name,'.')}" namespace="http://purl.org/dc/elements/1.1/">
                        <xsl:value-of select="@content" />
                    </xsl:element>
                </xsl:for-each>
            </rdf:Description>
        </xsl:if>
    </xsl:template>
    </xsl:stylesheet>

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Juin 2013
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2013
    Messages : 53
    Points : 30
    Points
    30
    Par défaut
    Merci beaucoup pour votre aide, j'ai modifier mon programme de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml">
    <xsl:output method="html" version="1.0" encoding="ISO-8859-1" indent="yes"/>
    <xsl:template match="xhtml:link">
    </xsl:template>
    <xsl:template match="xhtml:link">
    <html>
    <body><pre>
    <rdf:RDF
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" >
    <xsl:for-each select="../xhtml:meta[substring-before(@name,'.') = substring-after(current()/@rel,'.')]">
    <xsl:if test="substring-before(@rel,'.') = 'schema' ">
    <rdf:Description rdf:about="http://mondocument.org">
    <xsl:value-of select="substring-after(./@name,'.')"/>
    <xsl:value-of select="../xhtml:link[substring-after(@rel,'.')=substring-before(current()/@name,'.')]/@href"/>
    <xsl:value-of select="@content"/>
    <xsl:value-of select="substring-after(./@name,'.')"/>
    </rdf:Description>
    </xsl:if>
    </xsl:for-each>
    </rdf:RDF>
    </pre></body>
    </html>
    </xsl:template>
    </xsl:stylesheet>

    mes votre programme fonction très bien merci, problème résolut.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 561
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 561
    Points : 21 624
    Points
    21 624
    Par défaut
    Il reste un <xsl:template match="xhtml:link"> vide qui sert à rien.

    Et je ne vois pas l'intérêt d'encadrer ton RDF entre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <html>
      <body>
        <pre>
          <!-- et -->
        </pre>
      </body>
    </html>
    D'autant plus que ce n'est pas ce que tu demandais au début, mais bon, si ça te fait plaisir...

    Et une indentation correcte ne serait pas du luxe -_-°...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XML] convertir un fichier xml vers rdf triples
    Par ameni88 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 28/04/2017, 17h15
  2. convertir de html vers xhtml
    Par sampaiX dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 30/06/2010, 10h35
  3. comment convertir un fragment html en XHTML ?
    Par tarekos dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 07/07/2008, 14h22
  4. [XSLT] convertir un document XHTML a RDF
    Par dbeland dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 17/06/2008, 07h38
  5. [XHTML] convertir un fichier HTML en XSL
    Par darkangel1208 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 13/09/2007, 13h45

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