【问题标题】:"Reverse" XSLT (language to parse and build an XML DOM)“反向”XSLT(解析和构建 XML DOM 的语言)
【发布时间】:2012-08-02 19:11:32
【问题描述】:

我使用 XSLT 来转换它:

1)

<fruit>
  <apple count="2"/>
  <banana count="3"/>
</fruit>

进入这个:

2)

Apple: 2
Banana: 3

是否有一个库可以用作文本数据的解析器,它允许对预期标记进行描述性声明(想想 Extended Backus–Naur Form |EBNF| 和基于 Lex/Yacc 正则表达式的提示)并从中构建 XML DOM ?

【问题讨论】:

    标签: java parsing xslt lex ebnf


    【解决方案1】:

    是否有一个库可以用作文本数据的解析器,它允许对预期标记进行描述性声明(想想 Extended Backus–Naur Form |EBNF| 和基于 Lex/Yacc 正则表达式的提示)并从中构建 XML DOM ?

    是的。 FXSL 2.0 有一个函数 f:lr-parse() 正是这样做的。这是用纯 XSLT 2.0 编写的,并实现了一个通用(表驱动)LR-1 parser,它接受一个包含解析表的 XML 文件和一个包含要解析的“句子”的文本文件作为输入.

    我已经将这个函数用于许多解析器,从玩具算术表达式到中型 - JSON,到非常大的 - XPath 2.0 - 语言。

    请参阅我博客中的这篇文章Transforming JSON

    【讨论】:

      【解决方案2】:

      您不会认为您会找到任何语言的库来直接实现将任何形式的任何文本编译成 XML 这样广泛的目标。

      虽然可能并不完全符合您的要求,但了解 XSLT 2.0 可以从文本文件中获取输入、根据某些规则标记字符数据并输出 XML 可能很有用。有关证据,请参阅我的 blog entry here,它显示了一个 XSLT 2.0 通用解决方案,用于解决 csv 到 xml 转换的问题。

      【讨论】:

      • 肖恩,实际上 FXSL 2.0 有一个通用的 LR-1 解析器(f:lr-parse() 函数),完全用纯 XSLT 2.0 编写。
      猜你喜欢
      • 2015-07-20
      • 2012-05-06
      • 2010-12-25
      • 2014-10-31
      • 2023-04-07
      • 2010-09-16
      • 2020-01-17
      • 2014-05-19
      相关资源
      最近更新 更多