• ASP.NET 也可以做得很好 1.XSLT初识 一个HELLO例子


    1. XSLT初识 一个HELLO例子

    XSL 指扩展样式表语言(EXtensible Stylesheet Language)

    万维网联盟开始发展 XSL 的起因是由于对基于 XML 的样式表语言的需求。

    XSLT 指 XSL 转换。XSLT 将 XML 文档转换为其他文档,比如 XHTML

    概念不多讲,这里附上W3C的网址 ,希望您一定要去看看!

    老规矩,先写出个能运行的程序再说。

    既然XSLT是将XML文档转换为其它文档,那么我们就先建立一个XML文档吧。(名为:HelloHtml.xml)

    <?xml version="1.0" encoding="utf-8" ?>
    <root>
    <greeting>Hello Angel</greeting>
    </root>

    同样,还要再建立一个xslt文件,这里把它们放到同一个目录下。(名为:HelloHtml.xslt)

    <?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 method="html" indent="yes"/>
    <xsl:template match="root">
    <h1><xsl:value-of select="greeting"/></h1>
    </xsl:template>
    </xsl:stylesheet>

    想来xml文件应该不用讲解了,那就看看xslt文件吧:

    首先,它也是一个xml文档,stylesheet节点标记了此xsl样式文件的版本,xmlns(xml命名空间)等信息。output标记中method声明以什么形式转换文档,当然,它不仅仅能做html转换,也可以做其它诸如xml,text,pdf等转换。 ident声明了是否要对输出文档作缩进。

    template标记声明这是一个转换模板,match标记声明了它将对哪个节点下的元素进行匹配。

    value-of标记是个取值指令,它将会把xml文档中元素名为select中指定的元素的值取出来作为转换后的数据。

    由此分析,经转换后输出的html内容应该是:

    <h1>Hello Angel</h1>

    由于xslt为WEB标准,并且被大多数主流浏览器所支持,所以仅仅需要将xml文件与xslt文件都发送到客户端,浏览器就会自动将其转换为XHTML文档。

    接下来就是要给xml档引入xslt样式表了,这样xslt才能对xml文档进行转换,在xml文件的版本声明后加上这样一句:

    <?xml-stylesheet type="text/xsl" href="/HelloHtml.xslt"?>

    此时再浏览xml文件,就会看到浏览器不是仅仅显示一个XML的文档树了(有些浏览器显示纯xml文档是纯文本格式的),而应该是一个又大又粗的一号标题文本:



    但它并不是一个标准的XHTML文档,因为转换后生成的内容仅仅是如下的:

    <h1>Hello Angel</h1>

    而一个标准的xhtml文档至少应该是下面:(当然,这里是xhtml1.1版本的,DOCTYPE可能会有所不同)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title></title>
    </head>
    <body>
    <h1>Hello Angel</h1>
    </body>
    </html>

    如何才能输出这样一个文档呢?当然,看了上面的例子后,你一定能把除了DOCTYPE之外的其它元素都完整地输出,但关键就是要输出DOCTYPE,因为如果一个html/xhtml文档如果没有一个正确的doctype,将可能会触发浏览器的怪异模式,这将有可能造成浏览器对内容的显示非常混乱,当然,即使是小小的差异,只要是不可预料的也确实是件令人头痛的事情!

    其实output指令还有两个属性,一个是doctype-public,一个是doctype-system。正好对应html/xhtml DOCTYPE中的PUBLIC和后面的SYSTEM声明。

    那么我们只用这样写,便可以输出符合标准的html/xhtml文档了:

    <?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 method="html" indent="yes" doctype-public="-//W3C//DTD XHTML 1.1//EN"
    doctype-system
    ="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>
    <xsl:template match="root">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>Index</title>
    </head>
    <body>
    <h1>
    <xsl:value-of select="greeting"/>
    </h1>
    </body>
    </html>
    </xsl:template>
    </xsl:stylesheet>

    看似一切都搞定了,也没有多少东西,但事实上并不是这样的。因为可能我们想要把产品列表放到一个文档中,评论信息又放入一个文档中,然后还要把它们合并成为一个文档。大多数情况下我们是没有一个现成的xml文档的。那些东西也是要动态生成的。我们还可能需要复杂的选择运算等等。。。

    还有就是,本来网站上使用了点ajax对SEO就有点不太友好了,再加入xml/xslt这东东,网站的SEO怎么顾全呢?

    下接着会看看多文档合并的问题,接着是解决SEO问题。。。总之,会把如何使用xslt制作符合标准的网站告诉您。而且还要提前告诉您下,虽然接下来要在服务器端使用xslt,但我们已经可以摆脱WebForm的page以提升性能,再加上所有跟数据、样式、HTML相关的内容都是纯文本的,并没有丝毫编译到DLL中去,也将大大方便将来对网站的维护。

  • 相关阅读:
    jquery 实现点击图片居住放大缩小
    pycharm git工具与coding.net结合
    Python 小知识点(10)--异常结构记录
    Python 小知识点(9)--反射
    Python 小知识点(8)-- __new__
    @noi.ac
    @noi.ac
    @noi.ac
    @noi.ac
    @游记@ CQOI2019(十二省联考)
  • 原文地址:https://www.cnblogs.com/javennie/p/xsltgreeting.html
Copyright © 2020-2023  润新知