首页 > 其他分享 >第四十五章 开发自定义标签 - 规则和操作

第四十五章 开发自定义标签 - 规则和操作

时间:2022-11-13 09:11:53浏览次数:32  
标签:第四十五章 自定义 标记 标签 HTML 规则 CSP

第四十五章 开发自定义标签 - 规则和操作

CSP允许你开发自定义的HTML标签用于CSP文件。CSP标记语言本身是使用自定义标记机制实现的。自定义标签提供了一种方式:

  • 使用熟悉的语法为HTML作者提供附加功能
  • web应用程序开发可重用的组件

规则和操作

CSP编译器将带标记的HTML文档转换成Caché类(参见“CSP编译器”)。CSP编译器的一些功能来自于它能够

  1. 识别CSP文档中嵌入的#()#表达式,以及
  2. 识别HTML(或XML)文档中的某些标签或标签组合,并用开发人员提供的动作替换它们。这被称为标签匹配,在本章中有所描述。

如果熟悉XMLXSL技术,会认识到CSPXSL的一种变体,添加了额外的特性来为应用程序生成HTML

以下CSP页面示例包含一个自定义标记<my:COMPANY>,该标记在HTML页面中显示公司名称:

<html>
<body>
<my:COMPANY>
</body>
</html>

处理该页面时,望CSP编译器用合适的HTML文本替换<my:COMPANY>标记,例如:

<html>
<body>
<b>Octoglomerate</b>
</body>
</html>

CSP编译器对<my:COMPANY>标记采取的操作是在带有<csr:action>标记的规则文件中定义的。规则文件是带有.csr (Caché Server Rule)文件扩展名的XML文档,它定义了识别标签的规则以及找到这些标签时要执行的操作。它还可以包括附加信息,例如规则的描述。

<my:COMPANY>标记的规则文件可能如下所示,并可能被命名为company.csr:

<csr:rule name="myCOMPANY" match="my:COMPANY" empty>
<csr:action>
<b>Octoglomerate</b>
</csr:action>
</csr:rule>

这个规则文件规定:

使用<csr:rule>标记,该文件定义了一个名为myCOMPANY的规则。
属性empty指定<my:COMPANY>标记没有结束标记。

规则名具有与Caché类相同的命名限制。
规则只在定义它的Caché名称空间中活动,以%开头的规则除外,这些规则定义在%SYS名称空间中,并且对所有其他名称空间可见。

<csr:action>标记指定要采取的操作。
<csr:action>标签的内容必须是HTML和以下任何一种:

  • #()# 表达式
  • ##()## 表达式
  • <script>标签
  • 附加的<csr:>标记(稍后讨论)。
  • <csr:action>标签不能包含CSP标签;
    也就是说,CSP编译器不对操作的内容执行标记转换。
 Do $System.CSP.LoadRuleFile("company.csr")

这会将指定文件中的规则定义加载到当前名称空间中。还可以使用StudioFile > New > Caché Server Page来加载和编译规则文件。将文件保存在/csp/user目录中。可以使用csp示例提供的rulemgr.csp页面来观察哪些规则是有效的。

CSP的大部分是使用规则文件实现的。可以在Studio%SYS命名空间、工作区窗口、命名空间选项卡中的CSP文件下查看系统规则文件。

标签:第四十五章,自定义,标记,标签,HTML,规则,CSP
From: https://www.cnblogs.com/yaoxin521123/p/16885397.html

相关文章

  • 自定义标记
    目录介绍注册标记使用标签介绍自定义标记首先要在pytest.ini文件当中注册也可以通过fixture注册,不注册的话不影响使用但是执行的时候就会有警告注册标记#pytest.in......
  • 第二章--使用自定义类
    代码:publicclassClassAndObjectTest{ publicstaticvoidmain(String[]args) { //创建类的实例,定义一个对象变量引用这一实例 MyClassobj=newMyClass(); //......
  • JSP—El表达式,java脚本,java表达式,jstl标签库
    jsp简介JSP(全称JavaServerPages)是由SunMicrosystems公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成HTML、XML或其他格式文档的We......
  • HTML-语义化标签和表格标签
    语义化标签语义化标签定义:html5中为了提高程序的可读性提供了一些标签1.<header>2.<footer> HTML5代码<header></header><footer></footer>表格标签table:定......
  • HTML-链表标签和块标签
    链表标签a:定义一个超链接属性:href:指定访问资源的URL(统一资源定位符)target:指定打开资源的方式_self:默认值,在当前页面打开_blank:在空白页面打开......
  • HTML标签-图片标签和列表标签
    HTML标签-图片标签图片标签:img:展示图片属性:src:指定图片的位置代码案例:  HTML标签列表标签案例:旅游网站首页1、确定使用table来完成布局2、如果某一行只有一......
  • 自定义函数二分法查找,数组问题
    intfind(intarr1[],intx,inty){intleft=0;intright=y-1;while(right>=left){if(x>arr1[(left+right)/2])left=(left+right)/2+1;elseif(x<arr1[(l......
  • HTML标签-文件标签和文本标签1和文本标签2
    HTML标签-文件标签文件标签:构成html最基本的标签html:html文档的根标签head:头标签。用于指定html文档的一些属性。引入外部的资源title:标题标签body:体标签<!DOCTYPEh......
  • node07_自定义一个html转义模块
    在日常开发的过程中除了转换时间之外,我们可能还会遇到需要将html代码转义成文本,以及将文本转义成html的需求,下面我们来自定义一个转义的模块。具体的思路就是使用正则表达......
  • node_06自定义一个格式化时间模块并使用
    在上一篇博客中,我们知道了自定义模块的定义以及如何暴露出去让其他模块使用。在日常的开发过程中我们经常会遇到一些处理时间格式的问题,下面我们来自定义一个处理时间的模......