XQuery
欢迎来到 XQuery 示例集维基教科书! XQuery 是 万维网联盟 建议 用于从文档和数据库中选择数据。
有一个 Github 项目 用于跟踪本书的问题,至少在 eXist db 人员之间进行协作,以便更新此资源。
当前翻新中的主要任务是
- 使示例代码再次可执行
- 删除使用过时源的复杂案例研究
- 添加 XQuery 3.0 示例。
您可以在此处搜索本书
这是一个协作项目,我们鼓励所有使用 XQuery 的人贡献他们的 XQuery 示例。所有示例程序必须符合知识共享 2.5 署名-相同方式共享许可协议 [1]。
示例的执行使用 eXist 演示服务器。
- 讲师:如果您正在使用此书学习或教授 XQuery,请在我们的 访客登记册 中签名
- 贡献者:请查看我们的 命名约定,以确保您的示例与教科书一致
- 学习者:如果您正在寻找特定 XQuery 语言结构、技术或问题的示例,但找不到示例,请在 需要示例 部分添加建议。
使用 XQuery 和 XML 的常见任务
不需要函数和模块知识的示例。
- HelloWorld - 一个简单的测试,用于查看 XQuery 是否已正确安装。
- FLWOR 表达式 - 关于 XQuery FLWOR 语句工作原理的基本示例。
- 序列 - 使用序列是 XQuery 的核心。
- XPath 示例 - 针对 XML 和 XPath 新手提供的 XPath 示例。
- 正则表达式 - 正则表达式可以轻松地解析文本。
- 搜索多个集合 - 如何搜索数据库中的多个集合。
- 显示列表 - 如何获取 XML 结构中的值列表并返回逗号分隔的列表。
- 从 XHTML 文件中提取数据 - 如何使用 doc() 函数从 XHTML 页面获取数据。
- 在 HTML 表格中显示数据 - 如何在 HTML 表格中显示 XML 数据。
- 限制结果集 - 如何限制 XQuery 中返回的记录数量。
- 过滤单词 - 如何测试单词是否在列表中。
- 保存和更新数据 - 如何使用单个 XQuery 保存新记录或更新现有记录。
- 量化表达式 - 测试序列中的所有项目。
- 日期和时间 - 处理日期和时间值的示例表达式。
假设了解函数和模块。
- 使用 XQuery 函数 - 如何阅读 XQuery 函数文档和使用 XQuery 函数
- 创建 XQuery 函数 - 如何创建自己的本地 XQuery 函数
- 返回最长字符串 - 一个从字符串列表中查找最长字符串的函数
- 净工作日 - 如何计算两个日期之间的工作日数量
- 标签云 - 统计和查看关键字数量
- 字符串分析 - 正则表达式字符串分析
- 操作 URI - 如何获取和管理 URI
- 解析查询字符串 - 使用备用分隔符解析查询字符串。
- 拆分文件 - 将大型 XML 文件拆分成多个较小的文件。
- 填充 Portlet - 如何使用 XQuery 填充网页区域
- 过滤节点 - 如何使用标识转换来过滤节点和添加节点
- 限制子树 - 您有一个信息树,并且您想仅在特定级别进行“修剪”
- 高阶函数 - 将函数作为参数传递给函数
- 计时斐波那契算法 - 一对斐波那契算法和计时显示
- 使用中间文档 - MusicXML 文件分析
- 格式化数字 - 使用图片格式格式化数字
- 上传文件 - 如何使用 HTML 表单上传文件
- TEI 索引 - 如何构建基于 TEI 的索引
- 对表格的查询 - 如何从表格数据中提取数据
- 命名空间构造器 - 如何在构建文档时动态添加命名空间
- XML 搜索简介 - XML 搜索术语概述
- 基本搜索 - 一个简单的搜索页面
- 搜索、分页和排序 - 搜索和查看搜索结果
- 关键词搜索 - 使用 Google 风格的结果进行全文搜索
- 员工搜索 - 一个 Ajax 示例
- Lucene 搜索 - 使用 eXist 的基于 Lucene 的全文搜索
- 高级搜索 - 使用多个搜索字段创建复杂的搜索
- 开放搜索 - 创建一个 OpenSearch 文件来描述您的搜索页面
- 索引配置文件的自动生成 - 用于自动生成索引配置文件的脚本
使用 XQuery 在 XML 和其他表示形式之间进行转换
- 解析 CSV - 在序列上使用 FLWOR 来解析 CSV 文本。
- 获取 URL 参数 - 如何从 URL 获取参数。
- 获取 POST 数据 - 如何获取发布到 XQuery 的 XML 数据。
- 检查必需参数 - 如何使用 if/then/else 检查必需参数。
- 加法器 - 在交互中保留状态:创建一个添加两个数字的 Web 服务。
- 链接 Web 表单 - 使用 URL 参数、会话或 cookie 将数据从一个网页传递到另一个网页。
- 简单的 XForms 示例
- 化学元素的增量搜索 - AJAX
- 发送电子邮件 - 如何从 XQuery 中发送电子邮件。
- 使用 Graphviz 进行图形可视化
- Google Chart Sparkline - 使用 Google Charts API 创建 Tufte Sparkline
- Google Chart Bullet Bar - 使用 Google Charts API 创建子弹条形图
这些示例使用 name() 对 XML 文档的结构进行反射,以实现用于 XML 转换的通用函数。
XQuery 具有许多功能,允许您转换 XML 并创建完整的文档风格转换库。与传统的“数据库”文档不同,复杂的 XML 文档具有“复杂内容”,其中包括以不可预测的顺序排列的内联元素。本节提供了基于使用 XQuery typeswitch 函数的这些转换的基础。typeswitch 函数转换取代了 XSLT 转换,但也可以访问索引以非常快速地转换大型集合。
- 转换风格 三种转换风格的概述
- Typeswitch 转换 使用 typeswitch 函数进行文档风格转换。
- 转换习惯用法 处理转换任务
- 生成骨架 Typeswitch 转换模块 使用 XQuery 为基于 typeswitch 的文档转换生成骨架模块
- Web XML 查看器 使用 typeswitch 函数将 XML 文档转换为 HTML
与 HTML 页面不同,分页式报告使用页面之间文本流的概念。这些示例展示了如何将原始 XML 转换为适合打印的高质量 PDF 文件。这些示例使用称为 XSL-FO 的标记标准,代表“格式化对象”。
- 安装 XSL-FO 模块 - 更新 1.4 配置以从 Apache 网站获取当前软件
- 从 XSL-FO 文件生成 PDF - 将 XML-FO 转换为 PDF 文件
- XSL-FO 表格 - 从 XML 文件生成 XSL-FO 表格
- 将 HTML 表格转换为 XSL-FO 表格 - 使用 XQuery 类型转换变换将 HTML 表格转换为 XSL-FO 表格
- XSL-FO 图像 - 在生成的 (PDF) 文件中嵌入图像
- 发布概述 - 如何将文档从内部内联网服务器传输到公共网站
- 发布到 Subversion - 如何使用 SSL 和摘要身份验证将文档从内部内联网传输到公共 SVN 服务器
- 比较两个 XML 文件 - 使用 eXist compare() 函数来测试两个 XML 文件是否完全相同
- XML 差异 - 显示两个 XML 文件之间的差异
- 使用 XQuery 比较 - 使用 XQuery 比较列表
- 使用 XQuery 比较时间 - 使用 XQuery 比较日期项
- 同步远程集合 - 使用 lastModified 时间戳查看哪些项目已更改
- 查找重复文档 - 使用哈希函数查找重复文档
文本编码倡议。
- 特殊字符 - 处理换行符和其他特殊字符。
- 使用中间文档 分析 MusicXML 文档
- MusicXML 到 Arduino
- XQuery SQL 模块 - 在 XQuery 中调用 SQL
- 从 SQL 中获取 XQuery - 使用 XQuery 访问经典关系数据库 - 员工/部门/薪资
- 列出 OWL 类 - 一个简单的 XQuery 脚本,将显示 OWL 文件中的所有 OWL 类
- 简单的 RSS 阅读器
- XHTML + 语音 Opera 的 Twitter 收音机
- XQuery 和 XSLT 在 XQuery 中执行 XSLT 转换
- 基本身份验证 - 使用 HTTP 基本身份验证登录到远程 Web 服务器
- 摘要身份验证 - 使用 HTTP 摘要身份验证登录到远程 Web 服务器
- OAuth - 一种用于保护网络服务中一组用户拥有数据的标准
- Freebase - 使用 XQuery 通过 JSON 从 Freebase 获取数据
- Google Docs - 使用 XQuery 从 Google Docs 获取数据
虽然 Google Charts 功能仅在您连接到互联网时才有效,但这些示例表明 XQuery 是将 XML 数据转换为图表 的理想工具。
- Google Charts 使用 XML 和 XQuery 通过 REST 生成 Google Charts
- Google Chart Sparkline - 如何使用 Google Charts API 创建图表的演示
- Google Chart Bullet Bar - 如何使用 Google Charts API 创建仪表板子弹条的演示
- 文件大小直方图 - 生成文件大小直方图的 XQuery 报告
在 XForms 教程和食谱 中还有可用于创建前端的示例 XForms
数字仪表盘是将大量信息压缩到单个网页的单屏。本节将利用上一节中的许多 Google Charts 示例。
- 仪表板架构 - 如何设计具有快速响应时间的仪表盘
页面抓取是从任何 HTML 网页中提取格式良好的 XML 数据的过程。在创建 mashup 应用程序时,这也称为 收获过程。
- DBpedia 与 SPARQL - 足球队
- DBpedia 与 SPARQL 和 Simile 时间轴 - 专辑年表 使用维基百科数据创建专辑发布的时间轴
- DBpedia 与 SPARQL - 体育场位置
- Emp-Dept 案例研究
- 绘制三元组
- SPARQLing 国家区号
- 南安普敦酒吧
- 字母海报
- Simile 展览 使用 Simile JavaScript 库的浏览器可视化
- 潜在语义索引 查找文档之间的语义距离
- 内容管理系统的站点地图 XQuery 函数可以轻松地执行许多常见的网站内容管理功能
- 正常运行时间监控器 使用 XQuery 监控远程网络服务
- XQuery IDE - XQuery 集成开发环境
- 图像库 - 使用 XQuery 预览图像
- XML 架构到实例 - XQuery 函数,用于从 XML 架构文件 (.xsd) 生成示例 XML 实例
- Lorem Ipsum 文本 - 生成示例文本,用于插入测试页面布局
- XQuery 和 XML 架构 - 生成 XML 实例文档
- 生成 XQDocs - 自动生成模块和函数的 XQuery 文档
- XqUSEme - Firefox 扩展,允许运行 XQuery,包括针对已加载文档(即使针对最初未格式化(格式错误)的 HTML)的查询。
- 调用图 - 从模块自省中生成一个调用图作为 SVG 文件
- 系统属性 - 获取所有标准和 Java 系统属性及其值的列表
- 环境变量 - 获取所有外部环境变量及其值的列表
- 生成基于 xqDoc 的 XQuery 文档 - 使用 xqDoc 注释标准生成模块文档
- 验证文档 - 使用 XML 架构验证文档
- 使用目录进行验证 - 使用目录文件验证文档
- 验证层次结构 -
- 使用 Schematron 进行验证 - 应用特定规则检查文档
- 登录和注销 - 如何登录和注销用户
- URL 驱动的授权 如何使用 URL 重写来检查有效用户
- 数字签名 - 如何使用自定义模块来使用 XML 数字签名标准
- 更改集合和资源的权限 - 如何更改集合和资源的权限
- Fizzbuzz
- Project Euler
- 拓扑排序
- 幻灯片
- 数独
- Pachube 馈送
- 世界气温记录 - 将文本数据格式转换为 XML、索引和数据呈现
- UWE 学生在线
- 数据库工具 - 一套用于数据库管理的数据库工具函数
- 获取压缩的 XML 文件
- 解压缩 Office Open XML docx 文件 - 解压缩和存储 docx 文件
用于与任何 git 版本控制系统交互的模块
此模块同时使用 FTP、SFTP(使用 SSH 协议)并使用标准化和一致的格式。
此模块允许您与远程系统上的远程 FTP 服务器交互。它包括用于列出、获取和放置文件的函数。
- 执行外部进程 - 从 XQuery 中执行 shell 命令
- 序列模块 - 三个额外的函数(map、fold 和 filter)
- 基本会话管理 - 会话管理的基础知识,包括获取设置会话变量
- Subversion - 如何使用 subversion 客户端从 XQuery 中更新 subversion 存储库
- 已注册模块 : util:registered-modules()
- 已注册函数 : util:registered-functions()
- 动态模块加载 : util:import-module()、util:eval()
- 高阶函数 : util:function()、util:call()
- 计时斐波那契算法 : util:function()、util:call()、util:system-time()
- XMP 数据 : util:binary-doc(), util:binary-to-string(), util:parse()
- 基本身份验证 : util:string-to-binary(), httpclient:get()
XSL-FO(格式化对象)是一种将 XML 转换为 PDF 的方式。 函数参考
- 安装 XSL-FO 模块 - 在 eXist 中设置您的 XSL 模块
- 从 XSL-FO 文件生成 PDF - 从 FO 文件生成 PDF
- XSL-FO 表格 - 将表格添加到您的 PDF
- XSL-FO 图像 - 将图像添加到您的 PDF
- XSL-FO SVG - 将 SVG 图像添加到您的 PDF
- 使用触发器记录事件 - 如何设置触发器以记录存储、更新和删除集合中的事件
- 使用触发器分配标识符 - 如何使用触发器为新文档或新节点分配标识符
- 发送电子邮件 电子邮件是通知触发器何时触发的其中一种方式
- URL 重写基础 如何使您的 URL 看起来漂亮
使用实现 XQuery 的原生和混合 XML 数据库
- BaseX - 带有可视化前端的原生开源 XML 数据库
- DataDirect XQuery - 支持关系型、EDI、平面文件和 XML 输入/输出的 Java XQuery 引擎
- eXist - 开源原生 XML 数据库
- DB2 pureXML - DB2 9.1 包含 pureXML 功能
- MarkLogic Server - MarkLogic Server 商业 XML 内容服务器
- Microsoft SQL Server 2005 -
- NetKernel - NetKernel
- Oracle Berkeley DB XML - 开源嵌入式存储管理
- Oracle XML DB - Oracle Server 11g 包含 XML DB (XDB) 功能
- Sedna - 开源原生 XML 数据库
- Stylus Studio - XQuery 映射/编辑/调试,附带 Saxon(和 SA)和 DataDirect XQuery
- EMC xDB - EMC Documentum xDB 商业原生 XML 数据库
- XQilla - 开源 XQuery 库和命令行实用程序
- Zorba - 开源 XQuery 引擎 C++ 实现,带有 C、Java、Php、Python、Ruby 库绑定和命令行实用程序
- Qizx - 开源和专业 XQuery 引擎 Java 实现
调试 XQuery
[edit | edit source]其他来源
[edit | edit source]函数库
[edit | edit source]- FunctX XQuery 函数库 由 Priscilla Walmsley 创建
讨论组
[edit | edit source]
索引
[edit | edit source]- 应用领域索引 - 已编辑
符号键
表示 XQuery/最佳实践