`
hite
  • 浏览: 51765 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

【探讨】关于标记语言 ——对JSTL语言的一点点认识

阅读更多

在展开讨论前,需要给标记语言下个定义。

——在我的理解里,标记语言是:

  1. 指那些使用 严格xml语法格式,
  2. 使用有限词汇词汇集
  3. 以tag为主体,以tag属性值为可变点
  4. 普遍缺少流程控制,缺少其他全领域语言里逻辑和运算元素的一个语言集合

写完毕这段话,我查了查资料:
wikipedia里有:

标记语言,也称置标语言,是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码。与文本相关的其他信息(包括例如文本的结构和表示信息等)与原来的文本结合在一起,但是使用标记(markup)进行标识。当今广泛使用的置标语言是超文本置标语言(HyperText Markup Language,HTML)和可扩展置标语言 (eXtensible Markup Language,XML)。置标语言广泛应用于网页和网络应用程序。标记最早用于出版业,是作者、编辑以及出版商之间用于描述出版作品的排版格式所使用的。

里面提到,标记语言可以分为3类置标语言通常可以分为三类:表示性的、过程性的以及描述性的,但是在我看来就是就是一类——内容性,他们共有的特点就是为了表达内容的组成。
这段来whodo网站

标记语言(markup language),则特指用一系列约定好的标记来对电子文档进行标记,来实现对电子文档的语义、结构、格式的定义。这些标记必须能够和容易的和内容相区分,易于识别。标记语言必须定义什么样的标记是允许的,什么样的标记是必须的,标记是如何与文档的内容向区分的,以及标记的含义是什么。

所以综合看了,标记语言应该是:

  1. 为表述内容,和内容的表现形式
  2. 内容是tag内部的cdata,样式由tag的属性来控制
  3. io,只有来引入其他标记部分的实体这种IO,除此之外不能有任何io
  4. 没有作用域,就是说tag的影响区域不的会传播到外面,也不会下沉到自己tag里面。
  5. tag的表达和tag的输出是一对一的关系。因为没有流程控制,没有运算符等元素。也就是这里是没有 “表达”到“输出”的非平凡映射。
  6. tag和tag属性是个有限集合,只有cdata区域是可以变化的。
  7. 由于标记语言书写的解释、或者编译是一次性的具有原子型,不存在逐步执行的问题。
  8. 标记语言没有完整性的标准,N*tag(n>0)都是完整的。

(但是,tag还有有一点的流程判断的,如配合使用标记的开始和结束,而且不一定是xml)


如果以此为准则,因为标记语言来自出版业,所有这种纯文本格式的语言对人也是友好的,而且它主要是人和人之间的交流。至于,日后xml的产生,那是为了给机器看,牺牲了诸多的可读性,也就是现在所说的内容和样式的分离。
所以目前尊重 内容+样式+行为 模式来做的html不是这里定义的标记语言,因为他没有样式信息;而本文的主角JSTL的主旨是,内容+流程控制——它完全符合上面的定义的绝大多数,但是如果为了给达到让那些可以使用标记语言来做做界面的人也可以编写动态页面这个龌龊的目的.JSTL为tag添加了大量的流程控制,变量,函数和操作。在继承了标记语言 对人友好,使用简单这些优点的同时,梦魇也从它一开始就围绕在每一个开发人员的头上,以我2年左右html和JSTL标记语言的经验,它有如下的问题:

  1. 标记语言本身不是单步执行的语言,而是以一个tag作为一个元操作来解释的,所以对添加了ifwhile元素的JSTL来说单步调试就是个奢望
  2. JSTL不是原生的标记语言,使用servlet弥合而成的,效率不高
  3. JSTL有标记语言一样的缺点,没有变量,导致JSTL,需要借助java的 scripts或者EL这种变量查找系统来以堆或者栈的方式来获得需要的变量,换言之,它不是完备的。
  4. 没有作用域,这个也需要借助java的scripts来弥补,或者只有文件范围的作用域
  5. 标记语言没有完整性的标准,一个tag是完整的,一系列tag的嵌套也是完整的。所以这就导致了JSTL里传入参数容易但是传出很难,而且按照JSP2.0的做法,(不是通过增加scope这种方式)解决了传出问题,但是又引起了另外一个问题——命名冲突。
  6. 标记语言没有namespace(tag的namespace不算),导致无法按照语言级别来屏蔽或者避免,或者解决命名冲突问题
  7. 缺乏积木性,学术点,叫 元坐标是不完备的。因为你不能写<a><b></a></b>
  8. 按照我们的定义标记语言不一定是xml,但是一般都倾向xml这种树型的数据结构和书写方式,导致代码很难看,因为它的结束始终需要结束标记来完成

不过,在wikipedia里有曰:

过程性标志能力包含有一个Turing-complete编程语言。过程性标志语言的范例有:nroff, troff, TeX, Lout 以及 PostScript.

他们是完备的,有明白的?解释下。

 

因为本人码龄不长,可能这里列出的元素还不完全。但是本着乔帮主倡导的focus原理。标记语言你就好好整你的内容(样式也可以的),瞎jb引入流程,变量等元素,搞定JSTL像经过傅里叶变换的java一样,既有标记语言的难用。还有JAVA语言的罗嗦。看看本来想代替HTML+css的xml+XSLT 这种 杀人 的语言吧。你说它牛逼吗?有变量,有跳转,有条件判断。 一个p大的事情,整的巨复杂。我相信它是完毕的,可以完成任何问题,但是你偏偏学什么JAVA,为了大规模的xml融合,复用来设计。没曾想现在,html的复杂性已经通过合理的跳转 或者onepage one app的思想来化解了。所以xslt死的惨不忍睹。

 

JSTl也是,就一个半吊子,死就在不远的将来。

 

via 

 

分享到:
评论

相关推荐

    jstl标记库

    jstl标记库jstl标记库jstl标记库jstl标记库jstl标记库jstl标记库jstl标记库jstl标记库jstl标记库jstl标记库jstl标记库jstl标记库jstl标记库jstl标记库jstl标记库jstl标记库jstl标记库jstl标记库jstl标记库jstl标记库...

    struts——jstl 扎包

    本文将深入探讨这两个技术,并结合它们的整合,即"struts-jstl 扎包",来阐述其核心概念、用法以及如何在项目中进行集成。 **Struts框架** Struts是Apache软件基金会下的一个开源MVC(Model-View-Controller)框架...

    el表达式jar包——jstl.jar+standard.jar

    EL表达式是用于在JSP中简便地访问JavaBean属性和执行基本运算的一种语言,而JSTL则提供了一组标准的标签库,可以简化页面逻辑,减少脚本let的使用。下面将详细介绍这两个概念及其关联的jar包。 **EL表达式** EL...

    Web开发——jstl标签真分页实战

    ### Web开发——jstl标签真分页实战详解 在Web开发中,为了提升用户体验、减少服务器负担并提高页面加载速度,真分页技术成为了一种重要的实现手段。本篇文章将详细解读如何利用JSP中的JSTL标签库实现真分页功能。 ...

    JSTL操作支持多国语言

    在"JSTL操作支持多国语言"这一主题中,我们将深入探讨如何利用JSTL实现网站或应用的多语言功能。 首先,为了支持多国语言,我们需要创建资源文件,这些文件通常以.properties格式存储,包含了不同语言版本的文本...

    JSTL标记库包下载

    JavaServer Pages Standard Tag Library(JSTL)是一个用于JSP页面的标准标签库,它提供了一系列的标签来简化JSP开发,使代码更加简洁、可读性更强,也更易于维护。JSTL主要由五个核心组件组成:Core、XML、JDBC、...

    JSTL 入门:表达式语言

    JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能...最后,您将了解 JSTL 经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对 JSTL 操作指定动态属性值。

    JSTL标签库——taglibs-standard jar包

    JSTL标签库——taglibs-standard jar包

    JSTL——taglibs.jar

    **JSTL(JavaServer Pages Standard Tag Library)是Java服务器页面标准标签库,它提供了一系列预定义的标签,用于简化JSP开发。JSTL的主要目标是减少在JSP页面中使用脚本语言,使页面更加清晰、易读且易于维护。在...

    jstl的两个jar包

    JSTL,全称JavaServer Pages Standard Tag Library,是JavaServer Pages(JSP)标准标签库,它提供了一系列标签来简化JSP页面的编写,使页面逻辑更清晰,代码更简洁。在Java Web开发中,JSTL经常与EL(Expression ...

    JSTL包 jstl-1.2.jar standard.jar

    `standard.jar`则是JSTL实现的另一个关键组件,它包含了EL(Expression Language)的实现,也就是JSTL的表达式语言支持。EL是一种轻量级的脚本语言,允许在JSP页面中以简洁的方式访问和操作Java对象。`standard.jar`...

    jstl1.1和jstl1.0

    JavaServer Pages Standard Tag Library (JSTL) 是一个用于简化JavaServer Pages (JSP) 开发的标签库,它提供了一系列预定义的标签,帮助开发者处理常见的任务,如迭代、条件判断、XML处理等,从而减少对Java脚本的...

    jstl参考手册大全.chm

    提供的两个CHM文件——"JSTL帮助文档.chm"和"JSTL_api.chm"是JSTL的官方文档和API参考,它们详细解释了每个标签的用法、属性和方法,是学习和使用JSTL的重要参考资料。通过阅读这些文档,开发者可以深入理解JSTL的每...

    JSTL标签库下载配置

    在本资源包中,你将找到两个重要的JSTL相关文件——`jstl.jar`和`standard.jar`,以及一个名为`JSTL标签库配置.doc`的文档,它们是配置和使用JSTL标签库所必需的。 **一、jstl.jar和standard.jar** 1. **jstl.jar*...

    jstl标签.rar

    “jstl标签.rar”这个压缩包中的资料,无疑是对JSTL的深度剖析,包含了各种JSTL标签的详细解释和实例演示,无论是对新手还是有经验的开发者,都是一个宝贵的参考资料。通过学习和实践,你可以更好地驾驭JSTL,让HTML...

    JSTL 入门 表达式语言.mht

    JSP 标准标记库(JSP Standard Tag Library,JSTL)是一个实现 Web 应用程序中常见的通用功能...最后,您将了解 JSTL 经过简化的表达式语言,它允许在不必使用功能齐全的编程语言的情况下对 JSTL 操作指定动态属性值。

    最新开发的一套jsp jstl

    JSP 是一个用于创建动态网页的Java技术,而JSTL是一个标准的标签库,它提供了一种在JSP页面上执行常见任务的方法,比如XML处理、数据库操作、条件逻辑等,以减少Java脚本的使用。 描述中的"具体使用方法见文档"提示...

Global site tag (gtag.js) - Google Analytics