非常教程

Erlang 20参考手册

xmerl

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

类型

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

例子:

<xsl:template match="title">
  <div align="center">
    <h1><xsl:value-of select="." /></h1>
  </div>
</xsl:template>

变成:

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:

<xsl:template match="doc/title">
  <h1>
    <xsl:apply-templates/>
  </h1>
</xsl:template>

变成了二郎:

template(E = #xmlElement{ parents=[{'doc',_}|_], name='title'}) ->
  ["<h1>",
   xslapply(fun template/1, E),
   "</h1>"];
Erlang 20

Erlang 是一种通用的面向并发的编程语言,可应付大规模开发活动的程序设计语言和运行环境。

主页 https://www.erlang.org/
源码 https://github.com/erlang/otp
版本 20
发布版本 20.1