`
k_lb
  • 浏览: 821955 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论
  • kitleer: 据我所知,国内有款ETL调度监控工具TaskCTL,支持ket ...
    kettle调度

DOMPlus (Fastm的DOM版本) 发布

 
阅读更多

https://fastm.dev.java.net/servlets/ProjectDocumentList

使用方法和Fastm一样简单。
Fastm的使用方法是
render( fastm template, pojo model) => result

DOMPlus的使用方法
bind(DOM node, pojo model) => SAX, or DOM

domplus0.1a下载包里面包括,readme.txt.
所有的source, 和 test。还包括最新的还没有正式发布的fastm source。

html , xml, result html 也都在test的source目录下。
由于unit test case需要比较template result,所以都放到了test 的 src的资源目录下面。sample 也是test.

DOMPlus和Wicket一样,采用了很少量的自定义XML Attribute。
Fastm, DOMPlus和Wicket一样,都属于Model Match技术 --
用户提供一份View Model,然后Match Engine把View Model和template匹配在一起。template本身不包含任何logic,script。

所不同的是,类似于Swing,Wicket要求用户提供一个特殊的View Model。Table, List等框架定义的数据类型。而且Wicket难以脱离Web环境使用。

Fastm, DOMPlus 不需要用户提供特殊类型的View Model, 只需要提供POJO就可以。
POJO可以是任何Object. bean, map, DOM。
所以,对于DOMPlus来说。
DOM + DOM => DOM or SAX
XML + XML => XML

恰好是XSL的功能。XSL也是XML(XSL) + XML => XML
所不同的是,DOMPlus的XML Template是Pure HTML,所见即所得。HTML Template干净程度直追XMLC,等同或者超过Wicket(更别说Tapestry)。

用法:
Fastm Template只有2个自定义标记。BEGIN-END 和 {}。标记动态块和变量。
DOMPlus也是如此。针对DOM Node类型,只有3个自定义Attribute。
nodeTarge标记动态Element;attributesTarget标记动态attriburtes;textTarget标记动态text。

比如,下面这段HTML

<table border="1">
<tr nodeTarget="row">
<td bgcolor="red" attributesTarget="bgcolor=@bgcolor" nodeTarget="col" textTarget="data">grid value</td>
</tr>
</table>

和下面这段XML Data

<data>
<preface>dynamically set title</preface>
<row>
<col bgcolor="green"><data>grid 1</data></col>
<col bgcolor="yellow"><data>grid 2</data></col>
<col bgcolor="green"><data>grid 3</data></col>
</row>
<row>
<col bgcolor="yellow"><data>grid 4</data></col>
<col bgcolor="green"><data>grid 5</data></col>
<col bgcolor="yellow"><data>grid 6</data></col>
</row>
</data>

配合起来,就产生一个填充了数据行列的table。

DOMPlus和所有的基于DOM Node的技术一样,比如XMLC等,最小的处理单位都是Node。对于希望只替换部分text的需求来说,可以引入外来的text parser engine.
比如,fastm, regular expression, velocity, freemarker等。

<a href = "http://www.domain.com/app/{id}.text"

DOMPlus的一个例子就是采用fastm作为text parser。
当然,fastm同样可以接受DOM作为Model。

缘起:why write DOMPlus.

一位使用Fastm的程序员朋友,督促我采用Wicket Tag的方式,放弃XML Comment的标签方式。
另一位使用Fastm的程序员朋友干脆督促我,让Fastm实现自定义标签。
我正好也需要进一步改进重构fastm,提高动态include template iteration, template recursion (递归树形数据需要的递归template)的空间和时间效率。所以,就一起改进了。
以至于,fastm能够支持自定义如下的mark.
<p being=''block"/> // 动态块
<span name="variable"> default value </span> // 变量
<p end ="block">

但是做到这样,第一位朋友仍然不满意,他希望fastm能够达到Wicket的效果,能够支持tag之间的嵌套层次关系。
于是我就干脆开发了DOMPlus。把fastm的思路移植到XML DOM。
我也尝试把DOMPlus移植到Javascript。DOM + DOM = DOM 对 Ajax来说,用起来太容易不过了。只是我的JavaScript的调试能力有限。而且重构困难。所以,写完了,还没有进行调试和运行。说实话,还不知道 how。以后我可能会继续。
如果DOMPlus的JavaScript版本存在的话,可能是XSL之外的一个Ajax 处理复杂HTML Layout(尤其是多重循环,多重数据)的更加简单易用的可选工具。
Java Script也有TrimPath JST等Scripted Template. 但这些template并不是Pure HTML, 可能无法直接在browser里面显示。

----
数据寻址方式。
如果Model是POJO, 一般遵守OGNL style。
如果Model是DOM, 一般遵守XPath style。

当然,可以采用JXPath之类的工具,把对POJO的访问也统一为XPath。
分享到:
评论

相关推荐

    fastm

    这是一个开源的java技术,懂php的人知道php生成页面可以通过模版技术来实现,在java的web开发中,jsp,taglib,jstl等等都是动态的页面技术,因此有人就在开源社区写了个javaweb开发的模版工程,从此java web开发...

    fastm.jar

    fastm.jar fastm.jar

    bbs论坛源码项目1.zip

    CWBBS的模板技术受启发于Fastm及国内外知名的模板系统,着重于CWBBS社区的应用,并且通过plugin的方式,可以对模板进行扩展。模板目前主要应用于CMS和博客的首页。 通用模板通常是将模板文件预先解析,并以树的形式...

    lightweb-开源

    lightweb-轻量级Web框架一个非常简单,快速的Web框架,具有DispatchServlet,Action接口和Config Reading部分。 映射一个网址-&gt;一个动作实例。 lightweb非常适用于模板技术,例如Velocity,fastm。

    机械原理课程设计 破碎机.doc

    机械原理课程设计 破碎机.doc

    电子设计论文施密特触发器电子设计论文施密特触发器

    电子设计论文施密特触发器电子设计论文施密特触发器

    电子设计论文往返式流动灯电子设计论文往返式流动灯

    电子设计论文往返式流动灯电子设计论文往返式流动灯

    基于深度学习来实现序列到序列.zip

    深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。

    美国扩大电动汽车充电基础设施政策(英文).pdf

    政策背景与动机: 签署法案:2021年11月15日,拜登总统签署了《基础设施投资和就业法案》(IIJA),旨在通过多项措施推动美国电动汽车充电基础设施的扩张。 市场增长:随着电动汽车市场的快速增长,对充电基础设施的需求也日益增加,政府政策成为推动这一发展的关键力量。 电动汽车充电基础: 充电技术:电动汽车充电技术通常分为三级,各级充电速度和功率不同,满足不同场景下的充电需求。 充电站类型:包括公共、私人及工作场所充电站,各自具有不同的访问限制和使用特点。 市场趋势与现状: 市场增长:EV市场增长依赖技术进步、成本降低及充电便利性的提高。 充电站数量:截至2022年10月,美国公共和私人充电站总数超过50,000个,其中93%为公共充电站。 区域差异:充电站分布存在地区差异,部分低收入社区充电基础设施不足。 政策与项目: NEVI公式计划:通过IIJA设立的国家电动汽车基础设施(NEVI)公式计划,为各州提供资金以建设EV充电站。 税收抵免:扩展了替代燃料汽车加油站的税收抵免政策,包括EV充电站,以激励投资者。 联合办公室:DOT和DOE成立联合办公室,负责NEVI计划的实施和监管,确保

    电子设计论文照明过暗提醒电路电子设计论文照明过暗提醒电路

    电子设计论文照明过暗提醒电路电子设计论文照明过暗提醒电路

    前端,HTML+CSS的综合案例,网页开发

    我选用的软件是:Visual Studio CODE,这个软件在前端开发中十分常用,且提供了很大的便利。 当然也可以用记事本开发,记得把后缀名改成.html 还有我的CSS使用的是内部样式表。 写在head标签下。用到的标签有  <h1></h1>    <img src="lyf.jpg" class="god">     <p>    </p> 就是这三个标签,构成了HTML的主体架构。 而CSS则是设置了以下形式。 font-size: 16px;             line-height: 32px;             font-family: "Microsoft Yahei";             text-align: left;             text-indent:2em;          text-decoration: none;             color: #888888         width:66px

    MFC MAPI 源码和可执行文件

    大名鼎鼎的MFC MAPI 源码和可执行文件,是开发OUTLOOK插件的好帮手。

    机械原理课程设计插床机构机械设计.doc

    机械原理课程设计插床机构机械设计.doc

    基于深度学习的音频分类 前端App.zip

    深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。

    基于BERT模型的深度学习中文文本分类实现,包含大约20000条新闻的训练和测试集,包装有简单HTTP接口可供调用。.zip

    深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。

    《化工设备机械基础》课程设计 IB储罐设计.doc.doc

    《化工设备机械基础》课程设计 IB储罐设计.doc.doc

    机械原理课程设计网球自动捡球机.doc

    机械原理课程设计网球自动捡球机.doc

    EKFUKFCKF录屏.mp4

    EKFUKFCKF录屏.mp4

    仿新浪读书小程序源码学习

    仿新浪读书小程序源码学习

    基于科大讯飞AI营销算法比赛实现CTR深度学习方法.zip

    深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。

Global site tag (gtag.js) - Google Analytics