草庐IT

xml - XSLT 2.0 函数可以返回任意类型吗?

我正在尝试编写一个返回特定类型结果的XSLT2.0函数——比方说一个或多个元素。这是我尝试过的方法,但无济于事:这是我从Saxon处理器得到的错误:Erroratxsl:functiononline192column65offile:/e:/mlsh/recursive.xsl:XTTE0780:Requireditemtypeofresultoffunctionutil:find-parents2()iselement(parent,xs:anyType);suppliedvaluehasitemtypetext()Failedtocompilestylesheet.1errorde

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

我的目标是将包含各种内容(大约2到15GB)的大型单个XML文件拆分为多个XML文件,每个文件包含特定的实体类型,稍后可以通过SQL数据库导入。我目前正在使用Saxon-EE版本9.5.1.2J,但如果它能快速可靠地完成工作,任何其他XSL处理器都可以。这是我已经想到的:Saxon似乎是XSLT3.0事实上的标准处理器,而RaptorXML服务器似乎是另一个(更昂贵的)选择。其他XSL处理器通常只支持XSLT1.0。可以使用XSLT3.0流处理大文件,因此不需要将整个文件放入内存。注意:此功能仅在Saxon企业版中可用。您可以使用将输出写入不同的文件,但您可以不在相同样式表中多次使用它

c# - Java 和 .NET 流通过 IKVM 的互操作性

在我当前的项目中,我使用IKVM交叉编译多个处理XML各个方面的Java库。然后将这些库与几个.NET库和我的主线代码集成。一切正常,但我怀疑存在一些低效之处,尤其是在基于流的数据访问领域。许多Java库可以接受流式SAX类或其他流式对象,如OutputStream等。在某些情况下,我可以将适当的Java类包装在一个对应的.NET子类中,以弥合差距并在两者之间提供无缝流式传输语言。例如,创建一个派生自.NETMemoryStream和JavaOutputStream的类。然而,在大多数情况下,接口(interface)具有挑战性,我只能传递整个字符串-即使我在.NET端有可用的流并且J

xml - 如何在XSLT处理器中使用HTML5的 "about:"协议(protocol)

HTML5草案specifies(至少目前),URIabout:legacy-compat可用于依赖于符合XML的文档类型(不是)的文档。所以我碰巧有一堆HTML5验证XML文件,开头是:不幸的是,当我将这样的XHTML5文档与任何XSLT处理器(如Xalan或Saxon)一起使用时,它们自然会尝试解析(无法解析的)URI。有没有办法让他们忽略URI或在幕后伪解析它?尝试解决它发生在这些文件的早期,例如Saxon的-dtd:off开关在这里没有效果。编辑:低级方法sed-n'2,$p'|otherapp不幸的是,直到我开始使用document()才有效加载另一个XHTML5文件的XPa

java - 如何针对字符串中的 XML 运行 XQuery?

我有一些XML的字符串表示,我想在内存中对其运行XQuery。我一直在玩Saxon并想出了一个解决方案,但为了让它工作,我做了一件非常丑陋的事情。我有一种感觉,这是因为我缺乏使用Saxon的经验。这是一些有效的代码:importjavax.xml.transform.URIResolver;importnet.sf.saxon.Configuration;importnet.sf.saxon.s9api.*;publicclassXmlTest{publicstaticvoidmain(String[]args){try{finalStringtableXml=""+""+"FooBa

xml - 撒克逊语中的 xslt:message - 消息在哪里?

我使用SaxonXSLT版本9.6.0.1。样式表包含此代码:...errormessage...我的应用程序按预期终止,但出现以下异常:net.sf.saxon.expr.instruct.TerminationException:Processingterminatedbyxsl:messageatline45inatnet.sf.saxon.expr.instruct.Message.processLeavingTail(Message.java:253)atnet.sf.saxon.expr.instruct.Message.processLeavingTail(Message

xml - 如何简化这个 xproc 管道?

我刚刚开始研究XProc(使用Calabash)。我有一系列XSLT转换,我想将其应用于单个输入文档以生成单个输出文档。我以前使用简单的Python脚本来驱动转换,但XProc似乎很合适。下面的管道似乎对我有用。它本质上只是需要按正确顺序应用的XSLT转换的列表。问题是,它似乎是多余的。我希望有一些方法可以减少这种情况,但(到目前为止)我自己想不出来。 最佳答案 我转向了xproc-dev邮件列表寻求帮助,很快就有了解决方案proposed和implemented为了我。这使我能够将上述管道简化为这样(更改命名空间以保护无辜者):(

xml - 使用 xslt 2.0 拆分大型 xml 文件

我有这个源xml文件。USVaUSVbUSV10....元素“KE”大约出现了30000次。我想每5000个“KE”创建一个新的XML文件。在30000个KE元素的情况下,结果必须是6个单独的xml文件,并且结构是源xml的副本。如何使用XSLT2.0实现这一点?我正在使用saxonhe9-5-1-3j。非常感谢... 最佳答案 使用XSLT2.0功能xsl:for-each-group和KE元素位置的模数。然后,使用xsl:result-document元素生成输出文档。我的示例XSLT代码为3个KE元素的组创建了一个新的结果文档

xml - 使用 XSLT 标记匹配正则表达式的文本?

我正在尝试在HTML文档上使用XSLT2.0(Saxon-PE9.6)来创建标记,这些标记围绕来自指定的非拉丁Unicodeblock(允许空格)的所有连续字符运行。我需要将此过程应用于文档中的每个text()节点。我通过使用的两种方法取得了一些进展。并使用fn:replace()但我一直无法得出令人满意的完整解决方案。例如,这里有一些包含印地语的文本:输入:चायकाकपmeans‘cupoftea’inहिन्दि.期望的输出:चायकाकपmeans‘cupoftea’inहिन्दि.如何在XSLT2.0中实现此过程?这是我对的尝试:(注意:印地语使用梵文代码块U+0900到U

xml - xsl :result-document from within Altova XML with Saxon 的奇怪行为

我的输入文件:我的样式表:它不会创建两个结果文档。这是为什么?(使用saxon9he)这不应该创建两个名为a.xml和b.xml的XML文档吗? 最佳答案 如果您从oXygen或Altova运行样式表,这实际上是一个已知功能(或错误,如果您愿意)。我不确定现在的版本是否还有这个“特性”,但它的工作原理如下:如果没有主要结果文档(即生成一个空序列)还有一个次要结果文档(即带有xsl:result-document)在用户界面中显示第一个这样的结果文档让任何其他结果文档正常创建我相信这是因为这些工具使用某种UriResolver来重定向