java xml xsl 多文件_使用单个XSL流将一个大型XML文件拆分为多个文件

我的目标是将包含各种内容(大约2到15 GB)的大型单个

XML文件拆分为多个

XML文件,每个文件包含一个特定的实体类型,稍后可以由SQL数据库导入.我目前正在使用Saxon-EE版本9.5.1.2J,但如果它能快速可靠地完成任务,那么任何其他XSL处理器都可以.

这是我已经想到的:

> Saxon似乎是XSLT 3.0的事实标准处理器,而Raptor XML服务器似乎是另一种(更昂贵的)选择.其他XSL处理器通常只支持XSLT 1.0.

>可以使用XSLT 3.0流处理大文件,因此整个文件不需要适合内存.注意:此功能仅适用于Saxon Enterprise Edition.

>您可以使用< xsl:result-document>将输出写入不同的文件,但不能在同一样式表中多次使用它来写入同一个文件(显然不是线程安全的).

>< xsl:for-each-group> group-by显然不是可流动的

>< xsl:stream>只能包含一个< xsl:iterate>块,没关系.但是:在迭代块内,您只能访问当前节点和一个子节点的属性(甚至< xsl:for-each>在该节点上工作).如果您尝试访问第二个节点的值,则会出现“SXST0060:多个子表达式消耗输入流”错误.

>< xsl:apply-templates>里面< xsl:stream> (而不是迭代)需要模式可流化(如下所示).但是,流只能像迭代一样使用一次 – 否则你也会得到错误“SXST0060:多个子表达式消耗输入流”.

我的结论是,当前可用的XSL处理器需要使用多个< xsl:stream>用于写入不同文件的标记,实际上意味着为每个输出文

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值