我们使用 XSLT 生成数据报告。数据当前作为 XML 文档存储在 Oracle 中(不使用 XMLTYPE,而是使用普通的 CLOB)。我们选择正确的 XML 文档并创建一个文档:
<DATABASE>
<XMLDOCUMENT> ... </XMLDOCUMENT>
<XMLDOCUMENT> ... </XMLDOCUMENT>
...
</DATABASE>
在某些情况下,完整的 XML 文档包含 +100000 个文档。这意味着首先将一个巨大的 XML 文档加载到内存中,从而导致各种内存问题。
我们如何防止这种情况发生?我们在 .NET 2.0 中使用 XslCompiledTransform
类。
我知道有两种解析 XML 文档的形式:DOM 和 SAX。但据我所知,SAX 方式不可能与 XSLT 结合使用。 DOM 解析方法迫使我们将整个东西加载到内存中。
我们有哪些选择?首先将完整文档写入磁盘是否有帮助? Oracle 在大型 XSLT 转换方面是否表现更好?
最佳答案
根据您想进行的转换类型,STX可能是 XSLT 的替代品:
Streaming Transformations for XML (STX) is a one-pass transformation language for XML documents. STX is intended as a high-speed, low memory consumption alternative to XSLT, using the W3C XQuery 1.0 and XPath 2.0 Data Model. Since STX does not require the construction of an in-memory tree, it is suitable for use in resource constrained scenarios.
关于.net - 超大文件的 XSLT 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1690194/