Saxon - 我们可以查询它是否使用模式吗

Saxon - can we query if it's using a schema

有没有办法查询在 Saxon 中加载的数据是否具有已应用于数据的架构文件?我问是因为如果它不是模式,那么我们可以解析返回的字符串,如果它们符合 xml 日期时间标准的格式,则在我们的库中将它们转换为低级别。

例如,如果基础数据始终是字符串、数字或布尔值(JSON、XML,没有模式),那么我们会查看每个返回的字符串值,如果它在从“2002-05-30T09:00:00”我们解析它并将其转换为 OffsetDateTime。但前提是没有模式作为返回字符串的模式应该有其原因。

您可以通过测试节点的类型来判断节点是否已使用模式处理:没有模式,元素节点将始终为 element(*, xs:untyped) 类型,并且属性节点的 "typed value" ( data() 函数的结果)将是 xs:untypedAtomic 而不是(比如)xs:string.

节点是唯一可以应用架构的对象:如果它不是节点,则没有架构应用于它。

我不认为我完全理解你的问题,但从表面上看,你正在寻找的区别似乎是 xs:untypedAtomicxs:string 之间的区别。但前提是你称之为 "underlying data" 和 "returned strings"(无论它们是什么)的东西要小心保留这种区别。