XML-Director
项目描述
xmldirector.plonecore
xmldirector.plonecore是XML-Director项目(www.xml-director.info)的技术基础。XML-Director项目的目标是构建一个基于CMS Plone(www.plone.org)的企业级XML内容管理系统,支持XML数据库如eXis-db或Base-X。然而,底层实现也可以用于将任意后端通过WebDAV挂载到Plone。
xmldirector.plonecore将Plone 4.3或5.1与eXist-db或Base-X集成,或提供以下功能
将任意的eXist-db或Base-X集合挂载到Plone
集成ACE编辑器
从eXist-db或Base-X导出ZIP文件
将ZIP文件导入到eXist-db或Base-X
可插拔视图机制,通过文件名和视图名称配置XML数据库内容的自定义视图
通过Web创建、重命名或删除集合
通过Plone Dexterity行为扩展架构
支持通过eXist-db的RESTXQ层调用的XQuery脚本(允许根据您的应用程序需求调用XQuery脚本并返回输出格式(JSON、HTML、XML))
专用的连接器日志记录功能
小巧且可扩展
对将任意WebDAV服务挂载到Plone的实验性支持
XMLText - 用于在BaseX或eXist-db中存储XML内容的一个字段
XPathField - 通过XPath表达式检索存储在XMLText字段内的XML内容的一部分(例如,用于从XML内容中提取和显示元数据)
XMLBinary和XMLImage字段,用于在BaseX或eXist-db中存储二进制数据和图像。其功能与标准Dexterity文件和图像字段相同(除了不同的存储层)
xmldirector.plonecore的主要用途是将XML文档集合集成到Plone中,使用eXist-db或Base-X作为存储层。xmldirector.plonecore最初并不是Plone内容的存储层,尽管它可以在某些方式下用于在eXist-db或Base-X内部存储主要Plone内容(或内容的一部分)。它没有内置的将存储在XML文档中的元数据映射到Plone元数据或相反的支持。然而,这可以通过在xmldirector.plonecore之上构建的应用程序特定代码轻松实现。xmldirector.plonecore的设计目标是提供将Plone与eXist-db或Base-X集成的核心功能,而不实现任何进一步的具体应用程序需求。可以通过Dexterity行为、补充浏览器视图、事件生命周期订阅者和相关技术添加额外的功能。
需求
Plone 4.3(已测试)
Plone 5.0(已测试)
Plone 5.1(已测试)
支持的数据库
eXist-db 2.2和3.0
Base-X >= 8.2
OwnCloud
Alfresco
Marklogic Server
Dropbox(通过dropdav.com(Dropbox到WebDAV桥接,付费SaaS)或通过xmldirector.dropbox)
AWS S3
云联盟服务
Otixo.com
Storagemadeeasy.com
以下后端/协议的实验性支持(请勿在生产环境中使用XML Director与这些协议/后端一起使用)
FTP(总体上工作,连接池存在开放问题)
SFTP(总体上工作,连接池存在开放问题)
配置
转到Plone控制面板,单击XML-Director Core配置工具并配置您的服务
ExistDB
通过WebDAV访问您的XML数据库所需的用户名和密码
BaseX
通过WebDAV访问您的XML数据库所需的用户名和密码
Owncloud
通过WebDAV访问您的Owncloud实例所需的用户名和密码
Alfresco
通过WebDAV访问您的Alfresco实例所需的用户名和密码
Dropbox(通过dropdav.com SaaS)
您dropdav.com账户所需的用户名和密码
Dropbox(通过xmldirector.dropbox)
dropbox://dropbox.com
访问Dropbox必须使用OAuth进行认证(请参阅xmldirector.dropbox文档)
SME(storagemadeeasy.com)
您storagemadeeasy.com账户所需的用户名和密码
Otixo.com
您otixo.com账户所需的用户名和密码
本地文件系统
不支持凭据,引用的文件系统必须是可读的(和可写的)
AWS S3
对象存储路径:s3://bucketname
将AWS访问密钥作为用户名,将AWS密钥作为密码
需要安装boto模块(可以使用pip或使用zc.buildout)
FTP
通过FTP访问配置的目录路径所需的用户名和密码
SFTP
sftp://hostname/path/to/directory
通过SFTP访问配置的目录路径所需的用户名和密码。如果XML Director服务器(您的Plone实例)使用SSH密钥(无需密码)访问远程SFTP服务,则可以省略用户名和密码。当前正在调查使用SSH密钥的SSH认证与用户名+密码的处理方式,可能在未来的版本中发生变化。
协议/服务 |
原生支持 |
第三方SaaS支持(例如Otixo.com、storagemadeeasy.com) |
---|---|---|
本地文件系统 |
是 |
否 |
WebDAV |
是 |
是 |
ExistDB 2.2/3.0 |
是 |
是 |
BaseX 8.3 |
是 |
是 |
Amazon AWS S3 |
是 |
是 |
Alfresco |
是 |
是 |
Owncloud |
是 |
是 |
Dropbox |
(实验性) |
是 |
SFTP |
(实验性) |
是 |
FTP |
(实验性) |
是 |
使用xmldirector.plonecore
该软件包提供了一种新的内容类型Connector,可以将eXist-db或Base-X集成到Plone中——要么是从您的eXist-db/Base-X数据库的最高级集合,要么是从子集合。您可以浏览和遍历子集合,通过网页查看单个文档或编辑文本内容(使用内置的ACE编辑器集成)。
所有连接设置(URL、用户名和密码可以在连接器级别覆盖),以忽略Plone网站级别的eXist-db设置。
Dexterity字段
xmldirector.plonecore附带以下Dexterity字段,您可以在自己的字段架构中程序化使用或通过网页使用。
XMLText
可以用来存储有效的XML内容。该字段不使用Plone,而是使用ACE编辑器进行渲染。您可以在文档的编辑模式下通过单击Validate XML按钮执行客户端XML验证。包含无效XML内容的文档不能提交或保存。无效的XML将在编辑表单中通过错误消息被拒绝。
XMLXPath
可以使用XMLXPath字段来引用一个XMLText字段,以使用XPath表达式显示XML内容的一部分。
示例
一个名为myxml的XMLPath字段可能包含以下XML内容
<?xml version="1.0"?> <doc> <metadata> <title>This is a text</title> </metdata> <body>....</body> </doc>
为了提取并显示特定Dexterity字段中的<title>文本,您可以使用以下扩展表达式
field=<fieldname>,xpath=<xpath expression>
在这种情况下,您将使用
field=myxml,xpath=/doc/metadata/title/text()
请注意,当前语法非常严格,不允许任何空白字符,除了在<xpath expression>内。
XMLBinary, XMLImage
与Plone中的文件和图像字段相同,但使用BaseX或eXist-db作为存储层。
许可证
此软件包根据GNU公共许可证V2(GPL 2)发布
源代码
错误追踪器
Travis-CI
所有XML Director的发布和代码更改都自动针对Plone和各种后端版本的不同组合进行测试。当前的测试设置包括针对最常见的数据库和服务的14种不同组合。有关测试详情,请参阅https://github.com/xml-director/xmldirector.plonecore/blob/master/.travis.yml。完整的测试运行包括超过1400个单独的测试。
请参阅https://travis-ci.org/xml-director/xmldirector.plonecore
致谢
xmldirector.plonecore的开发得到了德国血液学和医学肿瘤学会(DGHO)客户项目的资助。
变更日志
2.1.1 (2017-07-23)
在重命名操作中修复了JS问题
2.1.0 (2017-04-04)
与Plone 5.1的兼容性
2.0.4 (2017-01-10)
固定fs==0.5.4
2.0.3 (2016-12-05)
修复了少量bug
2.0.2 (2016-08-26)
为设置自定义连接器类,在BaseWrapper类中添加了显式的setContext()方法
2.0.0 (2016-08-18)
完全兼容Plone 5.0(限于Plone 5.1 alpha)
用agGrid替换了DataTables.net
主要UI更改
更新到最新的ACE版本
切换到Dropzone.js进行多文件上传
1.6.1 (2016-04-08)
改进了跨驱动器的Unicode文件名处理
PEP8修复
1.6.0 (2016-03-18)
实验性的原生Dropbox支持(需要使用pip install dropbox安装Python的'dropbox' SDK,或在buildout中添加'dropbox'作为依赖)- 不适用于生产环境
针对Exist-DB的间歇性open()失败的解决方案:open()将被尝试最多三次(在调用之间有轻微的延迟,以便让后端有机会在两次调用之间恢复)
支持最新的plone.api版本(进行了轻微的猴子补丁)
将restapi权限检查移至ZCML配置
更新到ACE 1.2.3
更新到DataTables 1.10.11
支持最新的plone.api版本
1.5.0 (2016-02-17)
大量内部重命名:将所有webdav_*变量重命名为connector_*
调整测试以适应Marc Logic Server
1.4.2 (2016-02-02)
在本地fs测试的上下文中修复了restapi中的问题
1.4.1 (2016-01-18)
在__call__()()调用中将查询字符串传递到重定向调用中
1.4.0 (2016-01-11)
新的REST API
1.3.0 (2015-12-20)
向webdav_handle()方法添加了‘create_if_not_existing’参数
向包装基类添加了ensuredir()方法
1.3.0b1(2015-10-15)
支持OSFS(本地文件系统)、S3
每个连接器的独立URL配置
支持多文件上传
在测试联邦云解决方案的上下文中修复了Unicode问题
大量内部和UI修复
使用不同的存储后端进行了大量测试
更新测试
1.2.0 (2015-09-29)
重构了zip导出功能
支持新的WebDAV存储后端
Alfresco
Owncloud
Dropbox(通过dropdav.com SaaS)
1.1.1 (2015-08-25)
更新selenium版本绑定
在local.js中更好地封装了DataTables的JavaScript初始化代码
修复了Plone 5.0中的集成问题
1.1.0 (2015-08-21)
一些CSS样式微调
向ZIP导出API添加了可选的dirs参数,以便仅导出导出目录结构的一部分
添加了控制面板功能,用于安装针对Exist-DB的特定RESTXQ脚本(例如,all-locks.xql,该脚本由lockmanager introspection控制面板需要以获取所有锁)。
ZIP导入现在在给定的子目录内工作,而不再仅在连接器的顶级目录中工作
集合和集合项的删除操作
删除操作现在会要求确认
通过减少和缓存WebDAV操作,大幅加快ZIP导入速度
使用Datatables.net对集合和集合项进行操作
ZIP导出/导入现在对包含非ASCII字符的目录或文件名更稳健
改进了Plone 5.0的集成
1.0.4 (2015-07-22)
更新ACeditor到版本1.2.0
1.0.3 (2015-07-22)
使用Datatables.net替代TableUtils JS来为连接器日志视图提供支持
1.0.2 (2015-06-12)
更新Saxon 6.0.6HE
在日志API中添加了get_last_user()和get_last_date(),以获取执行最后一条日志条目的用户名。
1.0.0 (2015-05-30)
使用defusedxml模块保护XML Director免受恶意数据和XML相关安全攻击。
添加了对“force_default_view” URL参数的支持,以强制重定向到默认匿名视图。
支持记录HTML消息。
0.4.2 (2015-04-11)
更新了lxml、cssselect依赖项到最新版本。
分析了XSD解析缓慢的问题,并记录了/警告长时间运行的XSD解析。
首次在UI级别对Plone 5.0进行严肃的兼容性处理(后端测试一直通过,但我们直到5.0测试版1仍有严重的UI问题,并且仍然存在问题)。Plone 5测试版支持正在进行中,尚未完成。
0.4.1 (2015-04-07)
在PersistentLogAdapter API中添加了entry_by_uuid()。
修复了带有非ASCII文件名的上传的二进制文件/图像的Unicode问题。
在验证器注册表的parser_folder()中添加了‘version_suffix’参数。
JavaScript清理。
0.4.0 (2015-02-18)
添加了@@transformer-registery视图。
添加了@@transformer-registery-view视图。
更新了xmldirector.demo以使用Transformer注册表。
添加了(可选)调试选项,用于调试Transformer步骤(步骤的输入和输出数据写入磁盘)。
添加了更多测试。
通过集成Saxon 9.6 HE支持XSLT2+3转换。
0.3.6 (2015-02-06)
重新添加了Dexterity测试。
添加了XML模式、DTD、Schematron文件和RelaxNG模式的验证器注册表。
添加了@@validator-registry视图。
添加了基于注册验证文件的统一验证API。
记录了验证器注册表。
0.3.5 (2015-01-30)
重写了持久日志器内部结构:现在使用OOBTree来存储所有日志条目,而不是使用持久列表,以便支持通过最小-最大值过滤日志条目。
日志表现在使用带有可搜索列的分页视图。
Webdav密码设置不再需要(允许空密码)。
修复了带有空密码的Webdav身份验证问题。
将与示例相关的代码移动到专用包xmldirector.demo中。
0.3.4 (2015-01-13)
默认视图处理程序接受自定义请求/文件名参数,以覆盖下载文件的名称。
修复了视图注册表中的bug,其中BrowserView用作视图处理程序。
添加了PersistentLoggerAdapter,用于通过Zope注释采用任意持久对象进行持久日志记录。
0.3.3 (2015-01-05)
运行测试不应在XML数据库中留下任何测试目录痕迹。
核心功能几乎100%的测试覆盖率。
更多测试。
添加了关于内容类型的文档。
0.3.2 (2014-12-30)
xml内容的SHA256计算现在以更稳定的方式生成(但可能速度较慢)。
服务端XML验证的API。
添加了对Docker的支持。
添加了XSLT注册表。
为XMLDocument示例内容类型添加了莎士比亚XML数据。
添加了“test_all.sh”脚本来运行针对BaseX和eXist-db Docker容器的测试。
0.3.1 (2014-12-12)
在控制面板中添加了测试连接按钮。
将测试内容类型移动到专用配置文件democontent中。
为了使底层数据库索引.metadata.xml文件,已将元数据处理从JSON移至存储层的XML。
0.3.0 (2014-12-11)
将zopyx.existdb重命名为xmldirector.plonecore。
实验性支持Dexterity,新增四个字段。
XMLText - 用于XML内容。
XMLXPath - 通过XPath表达式引用XMLText部分。
XMLImage和XMLBinary - 与Dexterity中的图像和文件字段相同,但使用eXist-db作为存储层。
删除了emulation配置选项。
添加了plone.app.dexterity作为依赖项。
升级到ACE编辑器V 1.1.8。
为zip_upload()添加了进度条。
通过ZIP导入表支持导入单个文件到当前子目录。
0.2.11 (2014-11-08)
更新了文档。
0.2.10 (2014-11-08)
错误修复版本。
0.2.9 (2014-11-01)
支持本地覆盖凭据。
0.2.8 (2014-11-01)
针对通过WebDAV将Plone站点挂载到另一个Plone站点的轻微修复。
0.2.7 (2014-11-01)
通过WebDAV API对BaseX XML数据库进行实验性支持。限制:在WebDAV上执行REMOVE操作似乎无法对BaseX 7.9生效
0.2.6 (2014-11-01)
更多测试。
0.2.5 (2014-10-30)
实验性支持通过路径使用(非)受限的traverse()访问WebDAV资源
微小的URL修复
更多测试。
0.2.4 (2014-10-22)
为认证网站访客设置默认视图的配置选项
0.2.3 (2014-10-13)
修复保存ACE编辑器内容的问题
0.2.2 (2014-10-12)
页面模板中的错别字
0.2.1 (2014-10-12)
通过网页支持重命名集合
0.2.0 (2014-10-02)
各种小的错误修复
添加了基本测试
0.1.17 (2014-09-25)
修复了操作链接
0.1.16 (2014-09-25)
连接器不再是文件夹式对象
0.1.15 (2014-09-22)
完全移除索引支持(将特定的索引功能留给使用zopyx.existdb的策略包)
0.1.14 (2014-09-15)
修复了在创建/删除集合中的子路径处理问题
0.1.13 (2014-09-07)
支持通过TTW移除集合
0.1.12 (2014-09-05)
支持通过TTW创建新集合
0.1.11 (2014-08-21)
添加了“清除日志”操作
0.1.10 (2014-08-05)
log()函数添加了新的“详细信息”参数,用于添加详细的日志信息
0.1.9 (2014-08-01)
可读的时间戳
0.1.8 (2014-07-31)
微小的视觉更改
0.1.7 (2014-07-29)
重新编写了exist-db浏览器代码(正确处理路径、文件名等)
0.1.6 (2014-07-29)
修复了目录浏览器中的不正确视图前缀
0.1.5 (2014-07-13)
小的修复和清理
0.1.4 (2014-07-12)
使webservice查询API意识到所有输出格式(xml、html、json)
时区处理:使用环境变量TZ将eXist-db UTC时间戳转换为TZ时区(或默认为UTC)以用于显示目的,配合Plone使用
0.1.3 (2014-07-07)
添加了webservice API接口
各种错误修复
0.1.2 (2014-06-30)
各种错误修复
0.1.0 (2014-06-20)
初始发布
项目详情
xmldirector.plonecore-2.1.1.zip 的散列值
算法 | 散列摘要 | |
---|---|---|
SHA256 | 5921449f8629b00483748966ba82d6f828df43209b663ce45f348c7a64535e62 |
|
MD5 | 369dec1f181db8ba7cbf446b70c0e551 |
|
BLAKE2b-256 | 89c3ba356aa4700a74deebe63561511ca116c876f0ddc0dcf342173e180fd93f |