跳转到主要内容

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内容中提取和显示元数据)

    • XMLBinaryXMLImage字段,用于在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

BaseX

Owncloud

Alfresco

Dropbox(通过dropdav.com SaaS)

Dropbox(通过xmldirector.dropbox)

  • dropbox://dropbox.com

  • 访问Dropbox必须使用OAuth进行认证(请参阅xmldirector.dropbox文档)

SME(storagemadeeasy.com)

Otixo.com

本地文件系统

AWS S3

  • 对象存储路径:s3://bucketname

  • 将AWS访问密钥作为用户名,将AWS密钥作为密码

  • 需要安装boto模块(可以使用pip或使用zc.buildout)

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内容的一部分。

示例

一个名为myxmlXMLPath字段可能包含以下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)发布

源代码

请参阅https://bitbucket.org/onkopedia/xmldirector.plonecore

错误追踪器

请参阅https://bitbucket.org/onkopedia/xmldirector.plonecore

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

https://travis-ci.org/xml-director/xmldirector.plonecore.svg?branch=master

致谢

xmldirector.plonecore的开发得到了德国血液学和医学肿瘤学会(DGHO)客户项目的资助。

作者

Andreas Jung/ZOPYX
Hundskapfklinge 33
D-72074 Tuebingen, 德国
www.zopyx.com

变更日志

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 (16.6 MB 查看散列值)

上传时间

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面