首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

xmerl_xs

模块

xmerl_xs

模块摘要

Erlang与XSLT有相似之处,因为这两种语言都有函数式编程方法。

描述

Erlang与XSLT有相似之处,因为这两种语言都有函数式编程方法。使用xmerl_xpath可以在Erlang中编写类似于XSLT的转换。

XSLT样式表通常用于将XML文档转换为其他XML文档或用于演示的(X)HTML。XSLT包含相当多的功能,学习它们都需要付出一些努力。本文档假定您对XSLT有基本的了解。

由于XSLT基于带有模式匹配和递归的函数式编程方法,因此可以在Erlang中编写类似的样式表。至少对于基本的转换。本文档描述了如何使用XPath实现、Erlangs模式匹配和一些函数来编写XSLT(如转换)。

对于一个Erlanger来说,这种方法可能更容易,但如果您需要使用真正的XSLT样式表以符合标准,那么Sablotron XSLT包就有一个适配器,它是用i C ++编写的。另见Tutorial

出口

built_in_rules(Fun, E) -> List

默认的退步行为。模板功能应该以以下内容结尾:

template(E) -> built_in_rules(fun template/1, E)...

select(String::string(), E) -> E

根据XPath从XML树中提取节点。

另见: value_of/1

value_of(E) -> List

类型

连接树中的所有文本节点。

例子:

代码语言:javascript
复制
<xsl:template match="title">
  <div align="center">
    <h1><xsl:value-of select="." /></h1>
  </div>
</xsl:template>

变成:

代码语言:javascript
复制
template(E = #xmlElement{name='title'}) ->
  ["<div align="center"><h1>",
    value_of(select(".", E)), "</h1></div>"]
  

xslapply(Fun::Function, EList::list()) -> List

类型

xslApplication是一个包装器,用于使事情看起来类似于xsl:Apply-模板。

例如,原始XSLT:

代码语言:javascript
复制
<xsl:template match="doc/title">
  <h1>
    <xsl:apply-templates/>
  </h1>
</xsl:template>

变成了二郎:

代码语言:javascript
复制
template(E = #xmlElement{ parents=[{'doc',_}|_], name='title'}) ->
  ["<h1>",
   xslapply(fun template/1, E),
   "</h1>"];

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com