第四十七章 开发自定义标签 - 服务器文档对象模型

简介: 第四十七章 开发自定义标签 - 服务器文档对象模型

第四十七章 开发自定义标签 - 服务器文档对象模型

CSP编译器处理CSP文档时,它首先查找与规则匹配相关的所有标记。 当编译器扫描文档时,它会创建一个与CSP文档中包含的标记结构匹配的对象树。 这个树被称为服务器端文档对象模型,它直接类似于显示HTML页面时浏览器中可用的文档对象模型。

服务器端文档对象模型由类%CSP.AbstractAtom 的子类的实例组成,表示一个HTML文档的单元。一个HTML文档由两种类型的ATOM对象组成:RuleTextAtom,每种对象都由它们各自的类表示:%CSP.Rule%CSP.TextAtom。元素由%CSP.Rule的子类的实例表示,它表示一个HTML标记、其属性值的集合、其内部的HTML以及它可能包含的任何内部标记的集合。TextAtom表示不是元素的任何内容。为了提高效率,CSP编译器只为规则匹配中涉及的标记创建Element对象;其余的(例如,<b><i>标记)包含在TextAtom对象中。

例如,假设<MYTAG>标签有一个规则,下面的CSP文档:

<html>
<body>
Hello!
<MYTAG MSG="Welcome">
</body>
</html>
复制代码

构造以下服务器端文档对象:

  • 一个带有TagNameHTML元素,包含子元素:
  • bodyTagName元素包含子元素:
  • 带有Hello!文本的TextAtom
  • 具有MYTAG标记名和Welcome属性(MSG)的元素。

服务器端文档对象模型只在页面编译期间创建; 它在运行时不存在(同样是为了提高效率)。 这就是为什么操作可能包含在编译时执行的表达式和代码的主要原因:以利用服务器端文档对象模型。

CSP编译器构建了文档对象模型之后,它通过访问树中的对象(深度优先)并触发与每个 %CSP.Rul相关联的规则来处理文档。并将结果呈现为可执行代码。根据定义,%CSP.TextAtom 对象没有规则,因此它们直接呈现在可执行代码中。

访问规则属性值

执行规则时,对%CSP的引用。与之关联的规则对象可通过当前对象使用。

例如,假设想要定义一个自定义<MESSAGE>标记,该标记使用粗体斜体文本显示由VALUE属性指定的消息:

<MESSAGE VALUE="Yo!">
复制代码

对此的规则定义可能如下所示:

<csr:rule name="MESSAGE" match="MESSAGE" empty>
<csr:action>
<B><I>##(..GetAttribute("VALUE"))##</I></B>
</csr:action>
</csr:rule>
复制代码

每当遇到<MESSAGE>标记时,就会触发消息规则(即调用RenderStartTag)。

  1. 写出< B >< I >标签。
  2. 写出标记对象的值
  3. 关闭< B >< I >标记。
相关文章
|
12天前
|
存储 人工智能 自然语言处理
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
ChatMCP 是一款基于模型上下文协议(MCP)的 AI 聊天客户端,支持多语言和自动化安装。它能够与多种大型语言模型(LLM)如 OpenAI、Claude 和 OLLama 等进行交互,具备自动化安装 MCP 服务器、SSE 传输支持、自动选择服务器、聊天记录管理等功能。
85 15
ChatMCP:基于 MCP 协议开发的 AI 聊天客户端,支持多语言和自动化安装 MCP 服务器
|
1月前
|
安全 开发工具 Swift
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发
Swift 是苹果公司开发的现代编程语言,具备高效、安全、简洁的特点,支持类型推断、闭包、泛型等特性,广泛应用于苹果各平台及服务器端开发。基础语法涵盖变量、常量、数据类型、运算符、控制流等,高级特性包括函数、闭包、类、结构体、协议和泛型。
30 2
|
1月前
|
弹性计算 安全 网络安全
阿里云服务器四种常见购买方式适用对象与购买流程参考
阿里云服务器有多种购买方式,不同的方式适合对象与购买流程不一样,常见的购买方式有自定义购买、一键购买、云市场购买和通过活动购买四种方式。本文为大家介绍这四种方式的区别、适合对象以及详细的流程,以供参考和选择。
|
1月前
|
关系型数据库 API 数据库
后端开发的艺术:从零到一构建高效服务器
在数字化时代,后端开发是支撑现代互联网应用的基石。本文旨在探讨后端开发的核心概念、关键技术以及如何构建一个高效的服务器。我们将从基础的编程语言选择开始,逐步深入到数据库设计、API开发和性能优化等关键领域。通过实际案例分析,我们将揭示后端开发的复杂性和挑战性,同时提供实用的解决方案和最佳实践。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的见解和启发。
|
2月前
|
网络安全 Docker 容器
VScode远程服务器之远程 远程容器 进行开发(五)
VScode远程服务器之远程 远程容器 进行开发(五)
52 1
|
2月前
|
数据可视化 Linux 网络安全
如何使用服务器训练模型
本文介绍了如何使用服务器训练模型,包括获取服务器、访问服务器、上传文件、配置环境、训练模型和下载模型等步骤。适合没有GPU或不熟悉Linux服务器的用户。通过MobaXterm工具连接服务器,使用Conda管理环境,确保训练过程顺利进行。
130 0
如何使用服务器训练模型
|
2月前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
53 3
|
2月前
|
NoSQL PHP Redis
布谷语音app源码服务器环境配置及技术开发语言
布谷语音app源码服务器环境配置及技术语言研发。。
|
2月前
|
Kubernetes 网络安全 容器
VScode远程服务器进行开发(三)
VScode远程服务器进行开发(三)
52 0
|
2月前
|
存储 PyTorch API
NVIDIA Triton系列09-为服务器添加模型
本文介绍了如何为NVIDIA Triton模型仓库添加新模型。通过示例模型`inception_graphdef`的配置文件`config.pbtxt`,详细解释了模型名称、平台/后端名称、模型执行策略、最大批量值、输入输出节点及版本策略等配置项。内容涵盖了模型的基本要素和配置细节,帮助读者更好地理解和使用Triton服务器。
41 0