Saxon是XSLT,XQuery,XPath和XSD的实现。支持最新的W3C标准,包括XSLT 3.0,XQuery 3.1,XPath 3.1和XSD 1.1。开源和商业版都有Java,.NET和C版本。产品集的最新成员是Saxon-JS,这是一个将在大多数浏览器中运行的XSLT运行时。
如何修复错误“net.sf.saxon.trans.XPathException:主要输出文件的系统标识符未知”
我最近将saxon版本从8.7升级到10.6。 当我使用 saxon 版本 8.7 时,xsl:result-document 工作得很好。 这就是我面临的情况: 这是我的 XML 格式: 我最近将 saxon 版本从 8.7 升级到 10.6。 当我使用 saxon 版本 8.7 时,xsl:result-document 工作得很好。 这就是我面临的情况: 这是我的 XML 格式: <?xml version="1.0" encoding="UTF-8"?> <Statements> <title>This is an example document</title> <Statement> <Invoice>1234567</Invoice> <Name>ABC</Name> </Statement> <Statement> <Invoice>9876543</Invoice> <Name>XYZ</Name> </Statement> </Statements> 这是我的 XSLT 的一部分: <xsl:template name="EnhanceAccount"> <xsl:result-document href="/data/ebpp/{$FileName}_EnhancedAccountInfo.jr1" method="text"> <xsl:text>InvoiceNumber</xsl:text> <xsl:text> </xsl:text> <xsl:for-each select="//Statement"> <xsl:value-of select="InvoiceNumber"/> <xsl:text> </xsl:text> </xsl:for-each> </xsl:result-document> </xsl:template> 我收到以下错误: net.sf.saxon.trans.XPathException:主体输出文件的系统标识符未知 在net.sf.saxon.lib.StandardOutputResolver.resolve(StandardOutputResolver.java:89) 在net.sf.saxon.lib.OutputURIResolverWrapper.resolve(OutputURIResolverWrapper.java:58) 在net.sf.saxon.expr.instruct.ResultDocument.makeReceiver(ResultDocument.java:528) 在net.sf.saxon.expr.instruct.ResultDocument.processLeft(ResultDocument.java:477) 文件已创建并包含内容: Invoicenumber 1234567 此后,就失败了。这里有什么问题呢?请帮忙! 如果从命令行运行,请确保使用 -o 选项。 如果从 Java API 运行,请确保转换结果的 Result 或 Destination 对象具有非空 SystemId 属性。 href的xsl:result-document属性被解释为相对于转换的“基本输出URI”,因此它需要该属性来决定将输出写入何处。
有没有人尝试过在node.js中使用XSLT样式表将xml文件转换为html网页?我的背景是Java。我通常使用 SAXON 将 XML 转换为 HTML 网页。我是 Node.js 的新手。 ...
Schematron 文件中的自定义命名空间“localFunction”导致转换崩溃
我有一个 Schematron 文件 (.sch),其中包含像“localFunctions”这样的命名空间。它用于调用同一文件中的本地函数。但是当我尝试进行验证时,编译 Sche...
无法访问 XSLT 处理器 3.0 中已解析的未转义 XML 的子元素
使用 Saxon-HE 10.9 和 XSLT 3.0,我尝试转换嵌入在较大 XML 文件中的未转义 XML 字符串。我已经通过使用完成了这个 使用 Saxon-HE 10.9 和 XSLT 3.0,我尝试转换嵌入在较大 XML 文件中的未转义 XML 字符串。我通过使用完成了这个 <xsl:template match="INTERNAL_MATCH" mode="dataset"> <xsl:variable name="unescapedXML" select="parse-xml(.)"/> <TESTVAL> <xsl:element name="output-params2"> <xsl:copy-of select="//$unescapedXML" /> </xsl:element> </TESTVAL> </xsl:template> 输出如下: <TESTVAL> <output-params2> <product ism:ownerProducer="USA"> <name>Test Product</name> <shortName>TP</shortName> <base type="testtype" id="1235"/> <base type="testtype2" id="1236"/> </product> </output-params2> </TESTVAL> 但是,我想访问此输出的子节点,而不是能够按类型解析基本元素,if type = 'testtype',然后将其 id 存储为变量。 我该如何实现这个目标?我尝试做访问器 <xsl:copy-of select="//$unescapedXML/product/base" /> 但它什么也没返回。 按类型解析基本元素,如果 type = 'testtype' 则存储它的 id 给出以下输入: XML <INTERNAL_MATCH><product ownerProducer="USA"><name>Test Product</name><shortName>TP</shortName><base type="testtype" id="1235"/><base type="testtype2" id="1236"/></product></INTERNAL_MATCH> 这个样式表: XSLT 3.0 <xsl:stylesheet version="3.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/> <xsl:template match="INTERNAL_MATCH"> <xsl:variable name="unescapedXML" select="parse-xml(.)"/> <TESTVAL> <output-params2> <xsl:value-of select="$unescapedXML/product/base[@type='testtype']/@id" /> </output-params2> </TESTVAL> </xsl:template> </xsl:stylesheet> 将返回: 结果 <?xml version="1.0" encoding="UTF-8"?> <TESTVAL> <output-params2>1235</output-params2> </TESTVAL> 重要: 我已从您的输入示例中删除了未声明的命名空间前缀 ism:。我假设在您的实际情况下,此前缀已正确声明并绑定到名称空间,否则您会收到错误而不是报告的结果。
刚刚使用 schxslt 使用 SaxonCS 编译的 xsl 文件对我的 xml 文件进行了验证。在 svrl 报告的输出中,失败的位置如下所示。 刚刚使用 schxslt 使用 SaxonCS 编译的 xsl 文件对我的 xml 文件进行了验证。在 svrl 报告的输出中,失败的位置如下所示。 <svrl:failed-assert location="/Q{http://www.edefter.gov.tr}defter[1]/Q{http://www.xbrl.org/2003/instance}xbrl[1]/Q{http://www.xbrl.org/int/gl/cor/2006-10-25}accountingEntries[1]/Q{http://www.xbrl.org/int/gl/cor/2006-10-25}entryHeader[298]" test="some-test"> <svrl:text>some-message</svrl:text> </svrl:failed-assert> 有没有可能的方法来检索带有命名空间的 xml 元素 <svrl:failed-assert location="/edefter:defter[1]/xbrli:xbrl[1]/gl-cor:accountingEntries[1]/gl-cor:entryHeader[298]" test="some-test"> <svrl:text>some-message</svrl:text> </svrl:failed-assert> 像这样。 我试图找到一种提供名称空间或导入模式的方法,但找不到方法。 编辑: 这是编译前svrl文件的命名空间 <xsl:transform version="2.0" xmlns="http://www.w3.org/1999/XSL/TransformAlias" xmlns:sch="http://purl.oclc.org/dsdl/schematron" xmlns:error="https://doi.org/10.5281/zenodo.1495494#error" xmlns:schxslt="https://doi.org/10.5281/zenodo.1495494" xmlns:schxslt-api="https://doi.org/10.5281/zenodo.1495494#api" xmlns:svrl="http://purl.oclc.org/dsdl/svrl" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 这是编译后的 svrl 报告的命名空间 <svrl:schematron-output xmlns:defterek="http://www.edefter.gov.tr/ek" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:edefter="http://www.edefter.gov.tr" xmlns:error="https://doi.org/10.5281/zenodo.1495494#error" xmlns:gl-bus="http://www.xbrl.org/int/gl/bus/2006-10-25" xmlns:gl-cor="http://www.xbrl.org/int/gl/cor/2006-10-25" xmlns:gl-muc="http://www.xbrl.org/int/gl/muc/2006-10-25" xmlns:gl-plt="http://www.xbrl.org/int/gl/plt/2010-04-16" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sch="http://purl.oclc.org/dsdl/schematron" xmlns:schxslt="https://doi.org/10.5281/zenodo.1495494" xmlns:schxslt-api="https://doi.org/10.5281/zenodo.1495494#api" xmlns:svrl="http://purl.oclc.org/dsdl/svrl" xmlns:xades="http://uri.etsi.org/01903/v1.3.2#" xmlns:xbrli="http://www.xbrl.org/2003/instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" title="Yevmiye defteri dokumanlarını kontrol etmek için gerekli olan schematron kuralları"> <svrl:ns-prefix-in-attribute-values prefix="gl-plt" uri="http://www.xbrl.org/int/gl/plt/2010-04-16"/> <svrl:ns-prefix-in-attribute-values prefix="gl-cor" uri="http://www.xbrl.org/int/gl/cor/2006-10-25"/> <svrl:ns-prefix-in-attribute-values prefix="gl-bus" uri="http://www.xbrl.org/int/gl/bus/2006-10-25"/> <svrl:ns-prefix-in-attribute-values prefix="gl-muc" uri="http://www.xbrl.org/int/gl/muc/2006-10-25"/> <svrl:ns-prefix-in-attribute-values prefix="xbrli" uri="http://www.xbrl.org/2003/instance"/> <svrl:ns-prefix-in-attribute-values prefix="ds" uri="http://www.w3.org/2000/09/xmldsig#"/> <svrl:ns-prefix-in-attribute-values prefix="xades" uri="http://uri.etsi.org/01903/v1.3.2#"/> <svrl:ns-prefix-in-attribute-values prefix="edefter" uri="http://www.edefter.gov.tr"/> <svrl:ns-prefix-in-attribute-values prefix="defterek" uri="http://www.edefter.gov.tr/ek"/> 在您的 Schematron 中,您可以提供自己的 schxslt:location 函数,例如 <schema xmlns="http://purl.oclc.org/dsdl/schematron" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:schxslt="https://doi.org/10.5281/zenodo.1495494" queryBinding="xslt3"> <xsl:function name="schxslt:location" as="xs:string"> <xsl:param name="node" as="node()"/> <xsl:sequence select="string-join($node/ancestor-or-self::*!node-name(), '/')"/> </xsl:function> 该示例只是向您展示如何设置自己的函数,函数体不是您想要生成的带有位置谓词的路径的实现,而只是生成带有节点名称的路径。但是您可以根据您的需求调整该函数,但尝试模仿 path 函数结果的原始 Schxslt 实现位于 https://github.com/schxslt/schxslt/blob/main/core/src/main/资源/xslt/2.0/compile/compile-2.0.xsl#L185。在该代码中,您似乎只想输出元素节点的 Q{ 加上位置谓词,而不是 node-name() 命名空间-uri 和本地名称串联。
Schematron 中使用 schxslt 和 saxonCS 编译的 base-uri 函数
我有一个 xml 文件和 .sch 文件来验证此 xml 文件。但有一些规则叫。 base-uri() 函数返回 nu...
希望使用来自 Saxon 的 Java 或 .NET 调用从 XSLT 执行 HTTP POST
我使用一种专有工具,通过 Saxon 10 引擎利用 XSLT。 我正在寻找一种将有效负载从 XSL 发送到 API 端点的方法。对于 GET 来说,有效负载太大(这......
我不明白如何使用 Saxon xslt 转换扩展具有默认值的属性
我正在使用 Saxon-J EE 12.5,我不明白如何使用默认值扩展属性,以及如何使用模式感知转换(我知道如果我.. .
我想使用XSLT将一个XML文件转换为另一个XML文件,并用属性替换某些XML元素的CDATA。 我还需要保留换行符,当然需要转换...
Saxon 和 XMLFilter:omit-xml-declaration=“yes” 没有效果
我们使用Saxon来生成一些导出文件。 这些转换通常由相继应用的多个 XSLT 转换组成。 为了提高性能,我引入了代码
如何将 XsltTransformer 的转换结果写入字符串,然后将其推送到 azure 服务总线?
我需要使用 XsltTransformer 将给定的 xml 转换为 json,XsltTransformer 编译 xslt,然后转换 xml。我希望 XsltTransformer 的目的地是 stri...
我正在使用 XSLT 2 (Saxon HE 10.9)。 我有以下目录树: 项目 - 索引.xml - 课程 - 我的A班 -MyClassA.xml 我正在将 MyClassA.xml 转换为新的文件格式。 这里有一个
我有一个 xslt 将从这里获得的 RFC 列表转换为内部格式(也是 xml 格式)。 xslt 代码非常明显,它包含与......的前两个级别匹配的模板。
如何在 XPath 3.1 和 XSLT 中构建具有错误处理功能的健壮 XML 解析器
我的用例:我想分析一个大型 XML 文档,其中包含名为ownedComment 的元素。每个元素都有一个称为 body 的属性。该属性的内容应该是一个字符串,
通过 Saxon XSLT API 从 Java 中的 XSLT 过滤数组?
原标题:XSLT“包含”方法未按预期工作 我有这个xml: ...
我在一个库中有一组不平凡的 XSLT 代码,我最终(很容易理解)对同一文件进行了一些循环和/或多次包含。 所以... xsl:stylesheet 第 10 行发出警告 ...
错误:无法找到或加载主类net.sf.saxon.Transform
编辑 我有一个 XSLT 将我的 xml 转换为 html 格式(我对 XSLT 一无所知,我有一个已经由某人编写的)。 这就是我在命令行中所做的 java -Xss2m -X...
我有一组 DocBook XML(文章)文档和以下要求:大多数文档应呈现(为 PDF)而不带编号部分,但某些文档确实需要编号...
文档 createCDATASection 方法与 Saxon 的奇怪行为(Maven Saxon-HE 工件 9.4)
我尝试使用 Saxon 代替 JDK 的默认实现(我猜是 Xalan)来进行 XML 转换和 Xpath。在我的代码中,我使用 document.createCDATASection(data) 方法创建一个 CDATA 节点....
https://qt4cg.org/specifications/xquery-40/xquery-40.html#id-deep-lookup 介绍映射和数组的深度查找运算符。虽然 BaseX 和 Saxon XQJ 处理器实现了这个 Xquery 4.0 (...