首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何获取发生Saxon XSLT编译错误的行号?

基础概念

Saxon 是一个用于处理 XML 和 XSLT 的 Java 库。XSLT(可扩展样式表语言转换)是一种用于将 XML 文档转换为其他格式(如 HTML、PDF 等)的语言。在 XSLT 编译过程中,可能会遇到各种错误,获取这些错误的行号有助于快速定位和解决问题。

获取 Saxon XSLT 编译错误的行号

Saxon 提供了详细的错误信息,包括错误发生的行号。可以通过捕获和处理 Saxon 的异常来获取这些信息。

示例代码

以下是一个简单的 Java 示例,展示了如何使用 Saxon 处理 XSLT 并捕获编译错误:

代码语言:txt
复制
import net.sf.saxon.s9api.*;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;

public class SaxonErrorHandling {
    public static void main(String[] args) {
        try {
            Processor processor = new Processor(false);
            XsltCompiler compiler = processor.newXsltCompiler();
            XsltExecutable stylesheet = compiler.compile(new FileInputStream(new File("path/to/your/stylesheet.xslt")));

            Xslt30Transformer transformer = stylesheet.load30();
            transformer.transform(new FileInputStream(new File("path/to/your/input.xml")), new FileOutputStream(new File("path/to/output.xml")));

        } catch (SaxonApiException e) {
            System.err.println("Saxon XSLT 编译错误: " + e.getMessage());
            if (e.getCause() instanceof TransformerConfigurationException) {
                TransformerConfigurationException tce = (TransformerConfigurationException) e.getCause();
                System.err.println("错误行号: " + tce.getLineNumber());
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

参考链接

常见问题及解决方法

  1. 找不到 Saxon 库
    • 确保已将 Saxon 库添加到项目的类路径中。可以通过 Maven 或手动添加 JAR 文件来实现。
  • XSLT 文件路径错误
    • 确保提供的 XSLT 文件路径是正确的,并且文件存在。
  • XML 文件格式错误
    • 确保输入的 XML 文件格式正确,没有语法错误。
  • 权限问题
    • 确保程序有足够的权限读取和写入相关文件。

通过捕获和处理 Saxon 的异常,可以获取详细的错误信息,包括错误发生的行号,从而快速定位和解决问题。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

执行XSLT转换

XSLT(Extensible StyleSheet Language Transformations,可扩展样式表语言转换)是一种基于XML语言,用于描述如何将给定XML文档转换为另一个XML或其他...使用Saxon处理器,编译样式表和isc:Evaluate缓存是特定于连接;必须管理自己连接才能利用这两个特性。...请注意,当使用Saxon处理器时,要利用已编译样式表和isc:Evaluate缓存,这一步是必需。可以选择创建已编译样式表并将其加载到内存中。请参阅本章后面的“创建编译样式表”。...如果使用Saxon处理器,请确保在创建编译样式表时指定网关参数。如果打算重复使用同一样式表,则此步骤非常有用。然而,此步骤也会消耗内存。当不再需要编译样式表时,请务必将其删除。...errorHandler - 编译样式表时使用可选自定义错误处理程序。对于这两个类中方法,这是%XML.XSLT.ErrorHandler实例。

3.4K20

添加和使用XSLT扩展函数

自定义错误处理当出现错误时,XSLT处理器(Xalan或Saxon)执行当前错误处理程序error()方法,将消息作为参数发送到该方法。...类似地,当发生致命错误或警告时,XSLT处理器会根据需要执行datalError()或Warning()方法。对于所有这三种方法,默认行为是将消息写入当前设备。...要自定义错误处理,请执行以下操作:对于Xalan或Saxon处理器,在创建%XML.XSLT.ErrorHandler子类。...这些方法中每一个都接受单个参数,即包含由XSLT处理器发送消息字符串。这些方法不返回值。要在编译样式表时使用此错误处理程序,请创建子类实例,并在编译样式表时在参数列表中使用它。...若要在执行XSLT转换时使用此错误处理程序,请创建子类实例,并在使用Transform方法参数列表中使用它。

4.3K20
  • 「原创」如何快速获取银行、联行号数据?

    由于做是POS前置交易系统,涉及到和商户进件以及交易相关业务,需要向上游支付机构上送“联行号”,但是由于系统内数据不全,经常出现找不到银行或者联行号有误等情况,导致无法进件。   ...先输入联行号进行查询,然后进去详情页,才能取到想要数据。所以第一步需要先获取查询接口,于是我又打开了熟悉控制台。 ?   ...从上图可以发现这些请求都是在获取广告,并没有发现我们想要接口,这个是啥情况,难道凭空变出来嘛。并不是,主要是因为这个网站不是前后端分离,所以这个时候我们需要从它源码下手。 ?...剩下两个网站相对比较简单,只需要更改相应行号,进行请求就可以获取到相应数据,所以这里不过多赘述。 爬虫编写   经过上面的分析了,已经取到了我们想要接口,可谓是万事俱备,只欠代码了。...比较下来其他两个就比较简单,直接替换联行号就可以了,还有就是这个三个网站也没啥反扒机制,所以很轻松就拿到了数据。

    3.9K60

    如何避免软件工程中最昂贵错误发生

    她们每周工作时间将近80多个小时,伴随还有一堆堆错误需要更改。时间对于初创公司来说无疑是重中之重,她们该如何处理目前这个困境呢?...在我职业生涯早期,也曾碰到过类似的困境——原本估计4个月完成项目,在通过重写后,最终用了9个月才完成。在这个痛苦过程里,最令人抓狂事情之一是如果市场出现新机遇,由这引起改动是最优先。...我向他提了一个问题,“你们工程团队曾遇到过最昂贵错误是什么?” 他回答是,“尝试从零开始开展代码重写。”...他们花费了一个星期来调试并最终编译成功。调试过程中,很多错误是由于Java和C#不同语义表达引起,例如==双等号不同含义。 “这真的真的非常痛苦。”Schillace说道。...经过一段时间历练,也不一定就能避免所有错误,因为评估工作仍然复杂而我们也会因为有了经验而高估了自己。这是一个有关虚幻优越感事例。

    47120

    如何修复WordPress发生max_execution_time致命错误

    安装或更新主题、插件或WordPress核心时,很容易弹出此错误。 为什么会发生max_execution_time错误? 每个WordPress站点都有处理服务器请求最大执行时间限制。...如何确定是否发生WordPress max_execution_time错误 查看您是否已超过最大执行时间主要方法是在上传插件、主题或WordPress更新时检查仪表板中消息。...一封来自WordPress关于如何修复最大执行错误电子邮件 对于所有导致“技术困难”消息错误,请务必阅读我们解决这些问题指南。但是,要特别关注修复最大执行时间错误,请继续阅读。...首先,请通过以下方法尽力确定问题出在哪里: 卸载最近安装项目,尤其是在安装插件或主题或更新到最新版本WordPress后立即发生错误时。...小结 WordPress发生max_execution_time错误是由于PHP脚本缓慢而发生,通常出现在插件、主题和偶尔WordPress版本更新中。

    5.2K00

    如何获取 C# 类中发生数据变化属性信息

    可以看到,在我们对 Sample 类进行初始化赋值时,记录了两次关于类属性数据变更记录,而当我们进行重新赋值时,只有属性 A 发生了数据改变,因此只记录了属性 A 数据变更记录。...因此,既然通过一个个属性进行比较方式过于繁琐,这里我们通过反射方式直接对比修改前后两个实体类,批量获取发生数据变更属性信息。...// public virtual string DisplayName => DisplayNameValue; /// /// 获取特性中是否忽略该字段数据变化参数信息...attributeInfo.Ignore) properties.Add(i); } // 2、判断指定属性数据是否发生变更 // foreach...""; if (oldValue.Equals(newValue)) continue; // 获取当前属性在页面上显示名称

    3.5K40

    如何处理C++编译webrtc无法成功获取sdp问题?

    近期我们在编译WebRTC时碰到了一些问题,通过C++编译WebRTC项目,获取sdp数据为空。我们使用windows api调用go服务端接口,接收到数据为空。...image.png 返回数据如下: image.png 通过数据打印出来,发现bufRev没有数据,也没有出现其他错误信息。...通过这个接口测试,select函数返回是1,而且可以接收服务端返回数据并进去打印。再使用Postman测试接口也发现没有问题,如此则说明c++写调用接口有点问题。...既然问题已经发现是超时问题,那么把超时时间设置大点(timeout.tv_usec = 1000 * 6 * 1000),测试是否可行。经过测试发现把时间设置大一点,调用接口能获取到接口数据。...image.png 但是有一点,把时间设置大不现实,因为这样服务端有反馈数据,那么客户端也要等到这个设置时间点来获取到服务端数据,说白了就是要等到设置时间点来拿数据。

    86210

    EasyCVR集成大华数据时,获取SDK数据错误如何解决?

    EasyCVR是我们接入协议最广泛视频管理平台,除了标准协议GB28181、RTSP/Onvif、RTMP等,还支持厂家私有协议与SDK,如海康Ehome、海康SDK、大华SDK等,同时我们也还在积极拓展其他主流厂家...有用户反馈在EasyCVR集成大华sdk获取人群流量统计时,获取sdk时间数据对不上。...收到用户反馈后,技术人员立即开始排查,在数据库中获取数据如下:分析如下:使用大华sdk在vs2019中获取到的人群流量数据是正确,时间间隔也正常。按照每隔一个小时就会有人群流量统计。...下面是EasyCVRdhnetsdk.dll大小:vs2019调试人群流量统计dhnetsdk.dll:解决办法:将EasyCVRdll替换成最新大华dll即可。...再次通过大华SDK获取到的人群流量数据已经正确了,并存入数据库,如下:EasyCVR视频融合云服务平台支持海量视频汇聚管理,可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、智能分析等视频服务

    1.1K20

    MYSQL 8 从metadata开始到如何获得语句由于获取锁失败错误

    那么下面有一个问题,如果对一个表锁定解锁顺序是如何,当我们针对一个表进行了 X锁加持,后面我们先进行了一个插入操作,然后在进行对表rename操作, 此时真正顺序应该是 1 X 锁定标...,用户prepare状态会被保持直到XA_COMMIT 或者 XA_ROLLBACK 除了这个问题以外,就是关于如何发现曾经MYSQL 发生错误,一般情况MYSQL 5.X我们都是去找到ERROR...LOG ,里面去找寻可能发生信息,但是MYSQL 8 我们在performance_schema 中已经有了 events_errors 系列,这些表可以让你从各个层面来了解MYSQL 在最近都发生过什么错误...; 以上这个表,主要是从访问数据库用户角度来出发,查看这个用户曾经发生过什么样错误,我们可以改写一下这个查询语句,来更精确对这个账号发生过什么错误进行判断。...,和发生次数递增,这里可以做定期信息收集,然后对比同一个时期信息差,来发现更多问题。

    1.9K30

    WebRTC开源平台编译EasyRTC如何确认网页是否可以正常获取摄像头设备?

    在5G带来全球化系统下,全球网络覆盖已经成为必然趋势,TSINGSEE青犀视频开发EasyRTC网页远程通话会议系统全球覆盖特性保证了实时视频跨网、跨地域也能稳定传输,在弱网环境下仍能保证高质量通信...在EasyRTC部署过程中,经常出现软件部署完毕后,客户点击摄像头却无法进入房间,并弹出“获取摄像头失败,请检查设备”情况。 有的客户会认为是我们代码有错,导致这种问题出现。...但实际此部分代码是前端直接调用 WebRTC 接口获取设备摄像头,一般不会出错。如果需要检查,我们可以访问 WebRTC 官方demo查看确认是否可以获取到音视频设备。...://webrtc.github.io/samples/src/content/devices/input-output/ 如果可以访问到音视频设备,将会将设备显示到列表框中,如下图: 如果不能正常获取到设备...TSINGSEE青犀视频研发团队也在前段时间完成了EasyRTC版本区分,目前分为SFU版和MCU版,针对不同使用场景,可以选择不同版本,有兴趣可以阅览:EasyRTC新研发MCU版本与SFU版本方案介绍与选择

    63900

    selenium+java自动化测试框架_android自动化测试框架

    ,来进行单个事务用例跑测 (1)首行我们需要用TesgNg提供数据驱动方法(@DataProvider),来获取一个场景用例表数据,这个场景从excel第一个附表获取 通过action名,调取用例表...(用例表是以action名命名附表),用例表如下所示(ExpectedObject表示用例校验对象页面Element标签,用;分隔,分号前面的表示ID,分号后面的表示xpath): 以下为用例表数据获取代码...,实现动态获取具体事务类和执行相关操作(每个事务类名和方法名都与action场景名一致),以下截选相关场景部分调用代码: @Test(dataProvider="action")...),为了能输出漂亮一点报告格式,我们还引入一个saxon-8.7.jar。...以上脚本始终是在Eclipse下编译和调用,如果要实现灵活迁移,随便换任何一台只装了JDK电脑都能运行,那么我们就要来点改造 1、首行是保证我们写代码中,所以需要引用文件地方,都用相对路径方式

    1.5K20

    StackOverflow上87万访问量问题:什么是“找不到符号”?

    本篇文章,我们来探讨一下访问量足足有 87+ 万次问题——什么是“找不到符号”,它是什么意思,它是如何发生,以及如何修复它。 额外多 BB 几句。...因此,这段代码在编译阶段是不会通过。 ? 当我们对编译错误置之不理,尝试运行它时候,程序会抛出以下错误。 ? “找不到符号”,意味着要么源代码有着明显错误,要么编译方式有问题。...总之呢,是我们程序员搞鬼,把编译器搞懵逼了,它有点力不从心,很无辜。 ? 02、“找不到符号”是如何发生 1)拼写错误 程序员毕竟也是人,是人就会犯错。...“;”使得 for 循环主体被切割成了两个部分,“{}”中 i 超出了“()”中定义 i 范围。 3)方法用错了,或者不存在 比如说,Java 如何获取数组和字符串长度?...日志会给出具体行号,以及错误类型。根据提示,想一下自己代码要表达什么意思,然后做出修复具体动作。

    1.5K41
    领券