我正在寻找一种基于 Web 的结构化文档创作解决方案,适用于多种多样的文档类型,因此内容模型也各不相同。许多(但不是全部)文档类似于具有顶级元数据(例如关键字、作者和标题)的杂志文章,然后是一系列可能包含其他部分的各种类型的有序部分。
内容在不断发展,因此需要相当频繁地创建新的文档类型。 要求是文档模板本身可以使用创作系统定义(而不是硬编码软件)。
有人建议我查看基于 Xforms 的解决方案,例如 betterForm、XSLTForms 和 Orbeon,其中可以创建 Xforms 来定义文档模板,然后可以使用 Xforms 创建 XML 文档。
我知道 XRX 是一个好主意,一切都在 XML 技术的范围内,但是虽然有一些非常好的用户界面来创建 Xforms,然后使用这些 Xforms 创建 XML 文档,但在我看来 Xforms 不会不支持不同可选部分类型的排序和嵌套。
如有任何建议,我们将不胜感激。
编辑:
我一直在更深入地研究 Xforms 技术并得出结论,使用它来创作我需要创建的结构化文档类型并不是它的设计目的。
具体来说,我有包含重复多态部分的文档:例如,我有一篇包含部分的文章。我想添加、删除、重新排序和删除部分。对于每个部分,我想选择下一个部分是文本部分、图像部分还是引用部分等。我可能想将文本部分更改为图像部分。
如果我选择使用 Xforms 来实现这一点,这意味着我基本上需要在运行时动态重写底层 Xforms 标记,以便为我的文档创建一个定制模板,并为我的特定文章布置所有正确类型的部分,在这种情况下。
虽然 XForms 提供了诸如 xforms:repeat 和 xforms:switch 之类的元素,但缺乏对运行时表单结构动态操作的本地支持,并且没有本地机制来建模继承(而 XML Schema 具有抽象类型)使得建模多态内容非常困难,而且不太可能存在任何开箱即用的 Xforms 解决方案,而且构建定制的 Web 应用程序(这并非不可能)仍然很困难。
如果我错了请纠正我!
最佳答案
XForms 本身不支持排序,但可以通过如下方式实现它:
<xf:group ref="preceding-sibling::*[1]">
<xf:trigger>
<xf:label>Move Up</xf:label>
<xf:action ev:event="DOMActivate">
<xf:insert nodeset="self::*" origin="following-sibling::*[1]" position="before"/>
<xf:delete nodeset="following-sibling::*[1]"/>
</xf:action>
</xf:trigger>
</xf:group>
<xf:group ref="following-sibling::*[1]">
<xf:trigger>
<xf:label>Move Down</xf:label>
<xf:action ev:event="DOMActivate">
<xf:insert nodeset="self::*" origin="preceding-sibling::*[1]" position="after"/>
<xf:delete nodeset="preceding-sibling::*[1]"/>
</xf:action>
</xf:trigger>
</xf:group>
可以用类似的方式进行嵌套。
创建结构时,目前需要在工作实例中定义此结构才能复制它。添加节点而不复制它们将需要额外的功能。
-阿兰
关于xml - 基于 Web 的结构化文档创作解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13777777/
我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',
给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最
导读:随着叮咚买菜业务的发展,不同的业务场景对数据分析提出了不同的需求,他们希望引入一款实时OLAP数据库,构建一个灵活的多维实时查询和分析的平台,统一数据的接入和查询方案,解决各业务线对数据高效实时查询和精细化运营的需求。经过调研选型,最终引入ApacheDoris作为最终的OLAP分析引擎,Doris作为核心的OLAP引擎支持复杂地分析操作、提供多维的数据视图,在叮咚买菜数十个业务场景中广泛应用。作者|叮咚买菜资深数据工程师韩青叮咚买菜创立于2017年5月,是一家专注美好食物的创业公司。叮咚买菜专注吃的事业,为满足更多人“想吃什么”而努力,通过美好食材的供应、美好滋味的开发以及美食品牌的孵
matlab打开matlab,用最简单的imread方法读取一个图像clcclearimg_h=imread('hua.jpg');返回一个数组(矩阵),往往是a*b*cunit8类型解释一下这个三维数组的意思,行数、数和层数,unit8:指数据类型,无符号八位整形,可理解为0~2^8的数三个层数分别代表RGB三个通道图像rgb最常用的是24-位实现方法,即RGB每个通道有256色阶(2^8)。基于这样的24-位RGB模型的色彩空间可以表现256×256×256≈1670万色当imshow传入了一个二维数组,它将以灰度方式绘制;可以把图像拆分为rgb三层,可以以灰度的方式观察它figure(1
C#实现简易绘图工具一.引言实验目的:通过制作窗体应用程序(C#画图软件),熟悉基本的窗体设计过程以及控件设计,事件处理等,熟悉使用C#的winform窗体进行绘图的基本步骤,对于面向对象编程有更加深刻的体会.Tutorial任务设计一个具有基本功能的画图软件**·包括简单的新建文件,保存,重新绘图等功能**·实现一些基本图形的绘制,包括铅笔和基本形状等,学习橡皮工具的创建**·设计一个合理舒适的UI界面**注明:你可能需要先了解一些关于winform窗体应用程序绘图的基本知识,以及关于GDI+类和结构的知识二.实验环境Windows系统下的visualstudio2017C#窗体应用程序三.
需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc
您将如何构建一个简单的Sinatra应用程序?我正在制作,我希望该应用具有以下功能:“应用程序”更像是一个包含所有信息的管理仪表板。然后另一个应用程序将通过REST访问信息。我还没有创建仪表板,只是从数据库中获取东西session和身份验证(尚未实现)您可以上传图片,其他应用可以显示这些图片我已经使用RSpec创建了一个测试文件通过Prawn生成报告目前的设置是这样的:app.rbtest_app.rb因为我实际上只有应用程序和测试文件。到目前为止,我已经将Datamapper用于ORM,将SQLite用于数据库。这是我的第一个Ruby/Sinatra项目,所以欢迎任何和所有建议-我应
我正在使用Ruby/Mechanize编写一个“自动填写表格”应用程序。它几乎可以工作。我可以使用精彩CharlesWeb代理以查看服务器和我的Firefox浏览器之间的交换。现在我想使用Charles查看服务器和我的应用程序之间的交换。Charles在端口8888上代理。假设服务器位于https://my.host.com。.一件不起作用的事情是:@agent||=Mechanize.newdo|agent|agent.set_proxy("my.host.com",8888)end这会导致Net::HTTP::Persistent::Error:...lib/net/http/pe