您的位置:首页 > 编程语言 > ASP

利用ASP.NET和XSLT实现Silverlight搜索引擎优化(SEO)

2008-12-24 10:02 435 查看
Silverlight对于搜索引擎来说是不可被搜索的,因为所有的文本信息都被包含在Silverlight控件内以XAML的方式Render的,而不是以XHTML方式。Synergist提出了用ASP.NET + XSLT来将Silverlight的内容同时转换成对应的XHTML在同一页面上以隐藏的DIV等标签来输出,这样所有的内容就可以被搜索引擎搜索。

通过使用<asp:XML>控件并指定相应的XSLT样式表,我们可以到到这样的效果:

<div id="SLHost" style=”Display:none”>

<asp:Xml ID="XHTML" runat="server" DocumentSource="seo.xaml" TransformSource="XAML2XHTML.xslt" EnableViewState="False"/>

<script type="text/javascript">

createSilverlight();

</script>

</div>[/b]

在转换的XSLT中,实现了下边的转换规则:

· <Canvas>元素转换成<div>标记

· <TextElement>元素转换成容纳文本的<div>标记

· <Run>元素转换成<span>标记

· <Image>元素转换成<img>标记

· <MediaElement>元素转换成<a>超链接标记

当然,你还可以定义自己的映射规则,毕竟这些是不需要显示出来的,仅仅是隐藏在生成的XHTML中而已。当然你也不用关心样式了。来看看这个简单的XSLT实现了什么:

<?xml version="1.0" encoding="utf-8" ?>

<xsl:stylesheet version="1.0" xmlns:sl="http://schemas.microsoft.com/client/2007" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" exclude-result-prefixes="sl">

<xsl:output omit-xml-declaration="yes" indent="yes" />

<xsl:template match="/">

<xsl:comment>This is the text that is in the Silverlight XAML:</xsl:comment>

<xsl:apply-templates select="*" />

</xsl:template>

<xsl:template match="sl:Canvas">

<div>

<xsl:apply-templates select="*" />

</div>

</xsl:template>

<xsl:template match="node()" />

<xsl:template match="sl:Image">

<div>

<img src="{@Source}" />

</div>

</xsl:template>

<xsl:template match="sl:MediaElement">

<div class="Media">

<a href="{@Source}">Media</a>

</div>

</xsl:template>

<xsl:template match="sl:TextBlock">

<div>

<xsl:value-of select="@Text" />

<xsl:value-of select="text()" />

<xsl:apply-templates select="*" />

</div>

</xsl:template>

<xsl:template match="sl:LineBreak">

<br />

</xsl:template>

<xsl:template match="sl:Run">

<span>

<xsl:value-of select="@Text" />

<xsl:value-of select="text()" />

</span>

</xsl:template>

</xsl:stylesheet>[/b]

Synergist还未我们做了例子,不妨试一下吧。很好的tip:)

(原文地址:http://blogs.msdn.com/synergist/archive/2007/10/03/simple-silverlight-seo-with-asp-net-and-xslt.aspx)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: