问题标签 [hxt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
341 浏览

xml - 使用 HXT 操作 XML

据我所知,与 XML AST 重构相比,普通 HXT 似乎更适合对 XML 的查询。但是,其中一个 HXT 模块Data.Tree.NTree.Zippers.TypeDefs似乎具有一些用于深入文档并进行本地工作的机制,而不是更全局的箭头。但是,我似乎无法得到任何工作。这是我之前的 HXT 问题的后续帖子- 所有代码都是相同的,除了现在trans替换this.

这是我的程序的入口点:

trans是定义的模块:

最后,这是我的输入文件:

和我的输出:

那么,为什么在我的输出中找不到“bar”?它不应该在之后出现</html>吗?再次,任何帮助都会很棒:)

0 投票
0 回答
605 浏览

xml - Haskell:如何编写 XSLT 转换函数而不返回 IO 或箭头

我想使用hxt-xslt基于包含 xslt 的第二个字符串将包含源 xml 的字符串转换为结果 xml 字符串。所以基本上,我想要一个类型的函数:

我四处搜索,文档中没有 xslt 的示例hxt,而我能找到的最接近的是来自这个 SO answer的代码。

我的问题是示例和库IO大量使用arrows。我想调整代码并“剥离” IOandarrow以获得一个返回 a Stringor的普通变换函数Maybe String,但我对箭头知之甚少。

我问这个是因为我需要解析嵌入在 CSV 文件中的 HTML。产生结果IOArrows使得 XSLT 代码很难与我的其余代码一起工作。

基于@chi对问题原始版本的评论,我查看了文档,我能得到的最接近的是以下代码(通过猜测和暴力破解中的 4 个函数中的 3 个Text.XML.HXT.XSLT.{Compilation,Application}):

示例 XML 和 XSLT 字符串来自w3schools 教程

到目前为止,代码是没有 IO 和箭头的。它输出:

我在这里有几个问题:

  1. 我注意到xread上面使用的不能采用标准 XML 标头,例如<?xml version='1.0' encoding='UTF-8'?>. 如果包含在 XML 或 XSLT 中,则返回错误。这是预期的还是我用错了?

  2. 使用SO answer 中的IO/Arrows 代码时,正确的输出应该是如下的 HTML 表:

我应该如何修复我的代码以获得纯 XSLT 转换?

谢谢。

0 投票
0 回答
98 浏览

haskell - 构造选择多个可能值的 HXT 箭头

我对 HXT 箭头 API 感到困惑。与 list monad 类似,任何不产生结果的箭头都将确定结果,[]并且 match 将成为所有匹配项的笛卡尔积的一维元素。

我有一个带有嵌套可选元素的 XML 文件,如下所示:

我怎样才能构造一个将遍历这棵树一次并产生类似于下面的固定结构的箭头?我只关心结构的一小部分。

或者

0 投票
1 回答
532 浏览

haskell - 链接器找不到 Parsec 库

我正在尝试使用HXT进行一些网络抓取,但是一个依赖项hxt-regex-xmlschema-9.2.0总是无法安装。错误是ld: library not found for -lHSparsec-3.1.7-ghc7.8.3。我不明白为什么链接失败。我安装了 parsec -cabal install parsec-3.1.7工作正常。我正在运行 OSX 10.10.1、GHC 7.8.3 和 gcc 4.9.1。

编辑:输出cabal install hxt-regex-xmlschema-9.2.0

0 投票
1 回答
119 浏览

haskell - 如何在不丢失重音词(西班牙语)的情况下解析 HTML 页面?

我正在阅读一个 HTML 网页,其中包含文字重音词(西班牙语):

我正在使用HXT

使用选项

withInputEncoding utf8

丢弃这些字符,得到以下单词:Ttulo , Ao , ngel , por qu nos vamos? 使用选项

withInputEncoding iso8859_1

将这些字符转换为字符串,得到如下结果词:Rom\225nticaMan\180sH\233ctor。其中\225\180\233字符串,而不是字符。

在 HXT 中正确管理这种情况并在不修改的情况下获取所有单词的最佳方法/方式/方法是什么?

谢谢。

0 投票
1 回答
181 浏览

xml - 如何使用 HXT 编辑 XML 文件中的特定元素?

简而言之,这就是我想要完成的事情:

"foo.xml"

预期结果(内容"bar.xml"):

...我试图解决这个问题:

问题:如何直接编辑选定的元素而不更改/删除它们的根元素?另请注意,该程序不会创建"bar.xml"文件,因此肯定有问题。跟踪显示,应用applic箭头后,文档由三个a元素("foo""bar""baz"; 不带感叹号)组成。

0 投票
2 回答
132 浏览

xml - HXT:如何使用箭头的输出作为函数参数?

很难给这个问题一个好的标题……我又被 HXT 困住了。我明白我想要做什么,但我不知道如何让它与箭头很好地配合。在这里,我对问题进行了简单的描述。

函数foo接受一个Int并返回一个箭头:

函数bar提取某些属性的值:

现在,我需要编写一个从s 到sbaz的映射并返回一个箭头:StringInt

逻辑baz:提取属性值bar并在地图中查找。如果M.lookup返回Just x,调用foo x,否则不执行任何操作(箭头的输入不变)。

AFAIK 每个这样的箭头都用作过滤器,因此实际上ArrowXml a => a XmlTree String类型意味着它需要一个XmlTree并返回(可能为空的)Strings 列表。这让我重新制定baz. 对于给定的输入XmlTree,可能有很多字符串,每个字符串都应该用于查找一个整数,并且首先找到的整数应该传递给foo. 如果所有这些都导致Nothing,请不要做任何事情。

这是我想出的:

不仅编译器不喜欢它,而且也很难推理。

0 投票
2 回答
146 浏览

xml - 如何在 HXT 中提取 XML 树的特定分支

举个例子:

我知道如何使用 atTag 函数获取所有“pou”:

但是如何只提取带有 SFC 标签的“pou”?有干净的方法吗?

先感谢您!

0 投票
2 回答
80 浏览

xml - 复制一个 XML 文件,保留一些元素的结束标签

我正在破解一个应该复制 XML 文件并编辑它的一小部分的东西。现在编辑没问题,但有趣的是,复制可能相当棘手。这本质上是“逆向工程”工作,现在我知道我应该以某种方式保留某些元素的结束标签(即使元素仅包含空格或为空)。问题是当 HXT 读取类似

然后将其打印为

我可以告诉它始终使用显式结束标记(或任何你称之为的)指定函数withOutputXHTML选项writeDocument,但是有些元素写为

应该“按原样”复制。

所以,基本上我的问题归结为:«如何复制此文件保留某些特定元素的结束标签?»:

供参考/实验的简单复制程序:

0 投票
1 回答
181 浏览

xml - 箭头一次添加一个元素

这个问题是关于 HXT 的,但我想它通常适用于概念 ArrowPlus。考虑以下程序:

你能告诉我会保存test.xml什么吗?我的期望:

我的逻辑:箭头bar复制其所有输入并添加一个“条”元素(this是标识箭头的别名):

因此,结果bar >>> bar >>> bar应该是三个 'bar' 元素(请注意,这eelem "bar" >>> eelem "bar"只会产生一个 'bar' 元素,因为箭头mkelem家族忽略了它们的输入(尽管它仍然可以用来生成它们的内容)并且只输出新创建的元素) .

说了这么多,我介绍test.xml一下程序执行后的内容:

问题:

  1. 是什么<//>

  2. 为什么有 7 个“条形”元素而不是 3 个?这种重复的原因是什么?

  3. 为什么当我替换bar >>> bar >>> barnone >>> bar >>> bar >>> bar我得到:

none零箭头在哪里。我们在这里处理箭头上的幺半群,对吧? none(≡ zeroArrow) 应该是它的标识,所以它应该是这样的: none <+> eelem "bar"它产生一个 'bar' 元素,随后的调用应该添加另外两个元素。但是我们什么都没有!

  1. 如何编写bar一次添加一个“条形”元素的正确版本的箭头?

很抱歉问了 4 个问题,但我想它们是密切相关的,所以应该不是问题。