Blog de Julien Dollon (MVP)

Project Manager / Architecte / Formateur

Julien Dollon

Architecte et formateur pour I'FORM/Exakis et Full Professor SUPINFO.

Responsable de la communauté Dotnet-France, Scrum Master pour le projet AHEAD ainsi que nommé Most Valuable Professional, je participe activement à la communauté Microsoft.


 

Mon CV de Consultant/Formateur .NET

Mon Transcript de Formateur .NET

J'interviens en consulting et formation sur les technologies .NET, ALM/TFS, Agilité/Scrum, SharePoint et SQL Server





 
 
 
 
Official INETA Logo
 
IForm


[Silverlight] Le référencement (SEO, Search Engine Optimization)

L’un des principaux arguments des entreprises pour ne pas faire de Silverlight est le problème de référencement.

Nous avons rencontré ce problème pour le site www.dotnet-france.com qui possède 90% de Silverlight.

Afin d’être bien positionné malgré tout, nous avons mis en place une solution utilisant le XSLT afin d’afficher dans la source de la page le texte contenu dans le Silverlight.

Prenons par exemple cette fenêtre Silverlight:

<Grid x:Name="LayoutRoot" Background="White">
<TextBlock x:Name="MyText">Hello Word</TextBlock>
<Button x:Name="MyButton" Width="100" Height="100" Content="Test"/>
</Grid>
seo1

Cette application est hébergée sur une page ASP.NET avec une simple balise:

<asp:Silverlight ID="Silverlight1" runat="server" 
Source="~/ClientBin/SEOSilverlight.xap" 
MinimumVersion="3.0.40307.0" Width="100%" 
Height="100%" />

Nous générons maintenant un fichier XSLT qui nous permettra d’extraire le texte du Silverlight pour l’afficher dans la source:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
  <xsl:output omit-xml-declaration="yes" indent="yes"/>
  <xsl:template match="msxsl:TextBlock">
      <xsl:value-of select="@Text"/>
  </xsl:template>
</xsl:stylesheet>

Ici on ne fait fonctionner notre XSLT qu’avec les textblock mais il est très simple de faire de même pour tout contrôle (Image, Button…)

On ajoute cette balise pour afficher seulement dans la source:

<div style="display:none">
<asp:Xml ID="XHTML" runat="server" TransformSource="converter.xslt"
DocumentSource="~/ClientBin/MainPage.xaml"/>        
</div>

ou on peut imaginer une version HTML et utiliser comme ci-dessous:

            <asp:Silverlight ID="Silverlight1" runat="server" 
		Source="~/ClientBin/SEOSilverlight.xap" 
		MinimumVersion="3.0.40307.0" 
		Width="100%" Height="100%">
                <PluginNotInstalledTemplate>
                    <asp:Xml ID="Xml1" runat="server" 
		DocumentSource="~/ClientBin/MainPage.xaml" 
		TransformSource="converter.xslt"/>        
                </PluginNotInstalledTemplate>
            </asp:Silverlight>

seo2

Posted: Jun 09 2009, 11:23 by juliend | Comments (3) RSS comment feed |
  • Currently 5/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Filed under: .NET | WPF/Silverlight | Général

Comments

Olivier COURTOIS said:

Super post ! Justement je cherchais comment faire cela simplement. Smile

# June 09 2009, 13:30

nk54 said:

+ qu'itule, indispensable ! Smile

# June 10 2009, 16:03

Julien_G said:

merci,
indispensable en effet.

# June 11 2009, 10:15

Add comment




  Country flag

biuquote
  • Comment
  • Preview
Loading

captcha

*