Saxon是XSLT,XQuery,XPath和XSD的实现。支持最新的W3C标准,包括XSLT 3.0,XQuery 3.1,XPath 3.1和XSD 1.1。开源和商业版都有Java,.NET和C版本。产品集的最新成员是Saxon-JS,这是一个将在大多数浏览器中运行的XSLT运行时。
X包括在命令行 Saxon 上无法正常工作,但可以与 oXygen 一起使用
我有一些抄写手稿的 XML 文件,这些手稿来自这些手稿所在书籍的共享描述。它在我的 XML 中通过三个包含语句进行格式化,这些语句排列为 f...
我在 saxonica.com、Google 和 Chat GPT 上进行了一些研究,以找到在不引发序列化和解析的情况下进行链式/管道式转换的最佳方法。我找到了用 s9api、JA 来做到这一点的方法...
使用 collection() 时 document-uri() 不起作用
我正在使用 saxonche 版本 12.3.0,在 Python 3.11.5 中使用 pip 安装。 在 XSLT 中使用 collection() 时,document-uri() 似乎不起作用。 我创建了一个小测试: Python 进口萨克森...
我已经能够让 sql:prepared-query($connection, $sql)() 用于简单的 SQL。 从表中选择列 1 这很好用,我可以使用 $sql-result-map[1]?column1 访问该值 它还...
我需要能够从 XSLT (Saxon 12) 输出带有强制换行符的 HTML,基本上是为了分隔段落。我尝试过但不起作用的事情: 将 放入 xsl...
我在将 Saxon 配置为在 oXygen 和 eXist-db 中使用 MySQL 时遇到困难。这是我在 eXist-db xquery 中的尝试。没有错误,我确实得到了一个连接对象(因此字段扩展...
从 saxon 8 迁移到 10.6 EE 后,XSLT 转换陷入困境
我的客户有一个大小为 28 MB(约 7L+ 行代码)的输入 xml 文件,需要使用 Saxon 进行转换。 转换在 Saxon 8 中运行。迁移到 Saxon 10.6 EE 后,转换...
为了为文档创建目录,我搜索仅捕获 h[0-9] 节点并删除所有其他未在目录中的节点。 因此,在 XSLT2 中,我做了以下几行: 为了为文档创建目录,我搜索仅捕获 h[0-9] 节点并删除所有其他未在目录中放置的节点。 因此,在 XSLT2 中,我做了以下几行: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"> <xsl:output method="text"/> <xsl:template match="*[not(matches(name(), '^h[0-9]$'))]"> <!-- This is the relevant line --> <!-- I let it empty in order to delet its content --> </xsl:template> </xsl:stylesheet> 我使用 saxon-xslt -o output.txt example.xml maketoc.xslt 编译它 但是,不幸的是,not(matches())模板不会影响目标行。而且基本不影响线路。 那么,如何删除所有不匹配h[0-9]正则表达式的节点呢? 您还没有显示源文档,但最可能的解释是源文档最外层元素的名称与 h[0-9] 不匹配,这意味着该元素将被删除,并且其子元素将被删除不予处理。 也许你应该添加一条规则 <xsl:template match="*[*]"> <xsl:apply-templates select="*"/> </xsl:template> 确保处理继续到此类元素的子元素。
我试图通过迭代对象数组并创建一个新数组来收集我感兴趣的字符串。我稍后会在转换中使用这个新数组来生成输出。 下面是我的...
我正在尝试创建一个数组并向其附加一些值,并通过迭代该数组来输出转换后的文本。但输出忽略 xsl:text 的内容。 我正在尝试创建一个数组并向其附加一些值,并通过迭代该数组来输出转换后的文本。但输出忽略了 xsl:text 的内容。 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xmlns:map="http://www.w3.org/2005/xpath-functions/map" xmlns:array="http://www.w3.org/2005/xpath-functions/array" version="3.0"> <xsl:strip-space elements="*" /> <xsl:template name="test" match="/"> <xsl:param name="data" select="data"></xsl:param> <xsl:variable name="myData" select="$data" /> <xsl:variable name="myArray" as="array(xs:string)"> <xsl:sequence select="array{}" /> </xsl:variable> <xsl:sequence select="array:append($myArray, 'John')" /> <xsl:sequence select="array:append($myArray, 'Peter')" /> <xsl:for-each select="1 to array:size($myArray)"> <xsl:text>Person name is : </xsl:text> <xsl:value-of select="array:get($myArray,.)" /> </xsl:for-each> </xsl:template> </xsl:stylesheet> 此输出为 ["John"] ["Peter"] 在我期待的时候 Person name is : John Person name is : Peter 我相信您的尝试的主要问题是指令: <xsl:sequence select="array:append($myArray, 'John')" /> 不修改 $myArray 变量。它只是将向 $myArray 中的(空)数组追加成员的结果写入输出,而数组本身的大小仍为 0。 如果您使用: <xsl:variable name="myArray" select="array:append($myArray, 'John')" /> 和: <xsl:variable name="myArray" select="array:append($myArray, 'Peter')" /> 你应该得到你想要的结果。 顺便说一句,你可以缩短: <xsl:variable name="myArray" as="array(xs:string)"> <xsl:sequence select="array{}" /> </xsl:variable> 至: <xsl:variable name="myArray" select="array{}"/>
在 Saxon 中声明命名空间时出现“XPST0003:XQuery 语法错误”
我正在尝试使用 java s9api 的 xQuery API,但是当我尝试声明命名空间并运行一个简单的规则来测试它时,我恢复了错误“XPST0003:XQuery 语法错误 # ... if (funcJav...
使用 UCA 排序规则对字符串进行排序,将连字符、斜线和空格视为相等
问题 我正在使用 Saxon-EE 11,我的平台语言是 en-us。 我正在尝试通过指定 UCA 排序规则来实现 指令的自定义排序行为。忽略...
我在使用 ant 使用 -? 运行 saxon 程序时遇到问题arg。根据我的经验,这在 Linux(Ubuntu 风格)和 Windows 10 上失败。 以下是 build.xml 中失败的代码: 我在使用 ant 运行 saxon 程序时遇到问题 -? arg。根据我的经验,这在 Linux(Ubuntu 风格)和 Windows 10 上失败。 这是 build.xml 中失败的代码: <java classname="net.sf.saxon.Transform" classpath="${saxon.dir}/${saxon.jar};." failonerror="true"> <arg value="-?" description="help information"/> </java> 请注意,这似乎有效: $ java -cp "java/lib/saxon-he-11.2.jar;java/lib/xmlresolver-4.2.0.jar;java/lib/xmlresolver-4.2.0-data.jar" net.sf.saxon. Transform '-?' SaxonJ-HE 11.2 from Saxonica Usage: see http://www.saxonica.com/documentation/index.html#!using-xsl/commandline Format: net.sf.saxon.Transform options params Options available: -? -a -catalog -config -cr -diag -dtd -ea -expand -explain -export -ext -im -init -it -jit -json -l -lib -license -nogo -now -ns -o -opt -or -outval -p -quit -r -relocate -repeat -s -sa -scmin -strip -t -T -target -TB -threads -TJ -Tlevel -Tout -TP -traceout -tree -u -val -versionmsg -warnings -x -xi -xmlversion -xsd -xsdversion -xsiloc -xsl -y --? Use -XYZ:? for details of option XYZ Params: param=value Set stylesheet string parameter +param=filename Set stylesheet document parameter ?param=expression Set stylesheet parameter using XPath !param=value Set serialization parameter 典型的堆栈跟踪如下所示: BUILD FAILED C:\x3d-code\www.web3d.org\x3d\stylesheets\build.xml:364: The following error occurred while executing this line: C:\x3d-code\www.web3d.org\x3d\stylesheets\build.xml:164: java.lang.UnsupportedOperationException: The Security Manager is deprecated and will be removed in a future release at java.base/java.lang.System.setSecurityManager(System.java:416) at org.apache.tools.ant.types.Permissions.setSecurityManager(Permissions.java:103) at org.apache.tools.ant.taskdefs.ExecuteJava.run(ExecuteJava.java:216) at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:155) at org.apache.tools.ant.taskdefs.Java.run(Java.java:891) at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:231) at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:135) at org.apache.tools.ant.taskdefs.Java.execute(Java.java:108) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:299) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:577) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99) at org.apache.tools.ant.Task.perform(Task.java:350) at org.apache.tools.ant.Target.execute(Target.java:449) at org.apache.tools.ant.Target.performTasks(Target.java:470) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1401) at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:36) at org.apache.tools.ant.Project.executeTargets(Project.java:1264) at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:437) at org.apache.tools.ant.taskdefs.CallTarget.execute(CallTarget.java:106) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:299) at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104) at java.base/java.lang.reflect.Method.invoke(Method.java:577) at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:99) at org.apache.tools.ant.Task.perform(Task.java:350) at org.apache.tools.ant.Target.execute(Target.java:449) at org.apache.tools.ant.Target.performTasks(Target.java:470) at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1401) at org.apache.tools.ant.Project.executeTarget(Project.java:1374) at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) at org.apache.tools.ant.Project.executeTargets(Project.java:1264) at org.apache.tools.ant.Main.runBuild(Main.java:818) at org.apache.tools.ant.Main.startAnt(Main.java:223) at org.apache.tools.ant.launch.Launcher.run(Launcher.java:284) at org.apache.tools.ant.launch.Launcher.main(Launcher.java:101) Total time: 0 seconds 如果有人能够想出适当的 ant 配置或语法来完成这项工作,那就太酷了。 在 Windows 10 和 Java 20 上发现同样的 bug,解决方案是在 java 命令中添加 fork="yes"。自 Java 18 以来,这一直是一个问题,截至本文发布之日尚未修复。
Saxonica EE:xslt 的编译和转换我们可以覆盖或忽略
我们正在使用 saxonica EE 许可证,我想知道我们是否可以忽略或覆盖(首选忽略)选择值(调用一些其他应用程序逻辑,我们要忽略),示例代码为 b...
错误:无法使用 Saxon EE 的 XSLT 2.0 找到匹配的 0 参数函数(许可证文件位于与 JAR 相同的文件夹中)
我正在使用 saxon EE 处理器通过 XSLT-2.0 进行 XML 转换。但它给出了 XSL 文件错误。 以下是 XSL 文件的代码 我正在使用 saxon EE 处理器通过 XSLT-2.0 进行 XML 转换。但它给出了 XSL 文件错误。 以下是XSL文件的代码 <?xml version="1.0"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:setfile ="java:com.output.extensionFile"> <xsl:param name="outDir" select="setfile:getCurrentDir(setfile:new())"/> </xsl:stylesheet> 下面是我们调用转换器以将 XML 转换为 HTML 的代码。 { javax.xml.transform.TransformerFactory tFactory = new EnterpriseTransformerFactory(); XslImportResolver myResolve = new XslImportResolver(); tFactory.setURIResolver( myResolve ); javax.xml.transform.Transformer transformer = tFactory.newTransformer (new javax.xml.transform.stream.StreamSource(xslLocation)); Registry registry = Registry.getRegistry( this ); transformer.transform( new StreamSource( xmlLocation ), new StreamResult( new FileOutputStream( htmlLocation ) ) ); } 导入 Java 类的 Java 代码 public class extensionFile { // Empty Constructor public extensionFile() { } public Object getCurrentDir() { return ReportStatic.getCurrentDir(); } } 我们收到以下错误: 第 78 行第 73 列 xsl:param/@select 表达式中 {...e:getCurrentDir(setfile:new...} 附近的 char 22 处出现静态错误: XPST0017:找不到名为 Q{java:com.output.extensionFile}new() 的匹配 0 参数函数。用于诊断 调用 Java 方法,使用 -TJ 命令行选项或设置 Configuration 属性 功能键.TRACE_EXTERNAL_FUNCTIONS 您是否运行了建议的诊断程序? 根据给出的信息,最可能的解释是(a)该类的全名不是您所建议的,或者(b)该类不在类路径上。 -TJ 诊断应该会揭示解释。
如何使用一个 xml 输出文件 saxon xslt 3.0 将 xml 文件集作为输入传递到 Ant xslt 任务中
我有一个 XML 文件的文件夹。我想将每个文件中的一些行复制到一个 XML 文件中,然后将其用作查找。我有一个 xslt 文件和一个 ANT 构建文件,但我确信必须有一个...
SAXON-HE 问题 - 当 Saxon-HE 11_5 添加为依赖项时,Oracle Unified Directory (OUD) 将无法启动
我们正在为 Oracle 的 Oracle Unified Directory (OUD) 产品开发一个插件,在这种情况下,我们需要在 Java 中添加对 XSLT 的支持。所以我尝试添加 SAXON-HE 11_5 作为 Maven 依赖项...
如何通过 Oxygen 中的 Saxon 正确运行 SQL 扩展
我正在尝试通过 Oxygen 测试 Saxon EE 的 sql 扩展的使用情况。我收到驱动程序加载失败的错误: 发动机名称:Saxon-EE 11.4 严重程度:致命 问题 ID:SXSQ0003 描述...
注释 <xref> 标签并保持文本为纯文本,如果部分/@id 与文件夹内 xml 或文件夹外 xml 文件不匹配
如果同一文件夹xml文件或其他文件夹xml文件中的section/@id不匹配,我们要注释标签: 每个文件夹都有多个/单个 xml 文件和 和部分...