Bonjour,
j'aimerais savoir comment transformer un document XHTML annoté en "Dublin Core" (RDF) en utilisant XSLT. J'ai presque trouvé la solution mais j'éprouve encore quelques difficultés. Voici mon fichier xhtml source:
Code :
- <?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>
|
Et ceci est mon fichier XSLT:
Code :
- <?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 problème est que j'obtiens ceci:
Code :
- <?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>
|
au lieu de ceci:
Code :
- <?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>
|
Comme vous pouvez le voir, j'obtiens à cause de mon "for-each" un double. Alors est-ce que quelqu'un a déjà rencontré ce type de problème et qu'est-ce qu'il a fait pour le régler?
Toute aide sera vraiment appréciée!
EmperorCadavre