saxon 相关问题

Saxon是XSLT,XQuery,XPath和XSD的实现。支持最新的W3C标准,包括XSLT 3.0,XQuery 3.1,XPath 3.1和XSD 1.1。开源和商业版都有Java,.NET和C版本。产品集的最新成员是Saxon-JS,这是一个将在大多数浏览器中运行的XSLT运行时。

SAXON XSLT 3.0 无法在生成的 <rdf:RDF /> 输出中生成 xml:base 属性

我正在使用 SAXON 和 XSL 3.0 转换来生成 RDF 文件作为我的目标输出。根据 W3C RDF 规范,为了正确解析相对 IRI,我需要在通用中指定一个 xml:base URI...

回答 1 投票 0

SAXON XLST 3.0 无法在生成的 <rdf:RDF /> 输出中生成 xml:base 属性

我正在使用 SAXON 和 XSL 3.0 转换来生成 RDF 文件作为我的目标输出。根据 W3C RDF 规范,为了正确解析相对 IRI,我需要在通用中指定一个 xml:base URI...

回答 1 投票 0

Xpath。使用 fn:collection() 和 fn:base-uri() 获取 JSON 文件的 URI

我有一个包含多个 json 文件 (.json) 的文件夹。任务是获取文件夹中每个 json 文件的 uri。我在 xslt 文件中使用 fn:collection 和 fn:base-uri 。但是当我退出时我收到错误...

回答 1 投票 0

XSLT for-each-group group-starting-with tail(current-group())

这是 Martin Honnen 的回答的后续内容。 这是我对他的建议的尝试: XSLT 小提琴链接 在电子表格形式中,数据如下所示: 在 XML 中,这是数据输入: <

回答 1 投票 0

Saxon XSLT 可以将 XML 保存到 eXist-db 吗?

Saxon XSLT 可以将 XML 保存到 eXist-db 吗?我搜索了文档和论坛,但找不到任何明确记录的内容。我可以使用 doc('http://localhost:8080/exist/rest...

回答 1 投票 0

是否可以仅合并通过 xinclude 添加到 XML 的元素的一部分?

我有一个 XInclude,我正在将其合并到我的 XML 中,以便不必重复内容。这对于我的大多数用途都很有效,但在特定情况下,对象略有不同。那个...

回答 1 投票 0

在 Saxon XSLT 中收集处理期间获取文件名

我正在尝试使用 XSL-T 处理充满 SVG 文件的目录。我目前已经尝试过: 我正在尝试使用 XSL-T 处理充满 SVG 文件的目录。我目前已经尝试过: <?xml version="1.0"?> <xsl:stylesheet version="2.0" xmlns="http://www.w3.org/2000/svg" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xpath-default-namespace="http://www.w3.org/2000/svg" exclude-result-prefixes="xsl"> <xsl:output method="xml" doctype-public="-//W3C//DTD SVG 1.1//EN http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"/> <xsl:strip-space elements="*"/> <xsl:template name="main"> <svg xmlns="http://www.w3.org/2000/svg"> <defs/> <xsl:apply-templates select="collection(concat(resolve-uri('src/images'),'?select=*.svg;content-type=application/xml'))"/> </svg> </xsl:template> <xsl:template match="/"> <xsl:apply-templates select="svg"/> </xsl:template> <xsl:template match="svg"> <xsl:element name="symbol"> <xsl:attribute name="id"><xsl:value-of select="tokenize(document-uri(/),'/')[last()]"/></xsl:attribute> <xsl:attribute name="viewBox"><xsl:value-of select="@viewBox"/></xsl:attribute> <xsl:apply-templates select="path"/> </xsl:element> </xsl:template> <xsl:template match="path"> <xsl:element name="path"> <xsl:apply-templates select="@d,@fill"/> </xsl:element> </xsl:template> <xsl:template match="@d"> <xsl:attribute name="d"><xsl:value-of select="."/></xsl:attribute> </xsl:template> <xsl:template match="@fill"> <xsl:attribute name="fill"><xsl:value-of select="."/></xsl:attribute> </xsl:template> </xsl:stylesheet> 从命令行使用它:java net.sf.saxon.Transform -it:main -xsl:"%XSL%\svg-sprite.xsl" -o:"%OUT%\sprite.svg" 它已经非常接近工作了,但我需要获取包含的 SVG 文件的文件名,以用作 id 元素上的 <symbol> 属性。 我尝试了几种构造,使用 <xsl:for-each 而不是 <xsl:apply-templates 以及我能想到的其他所有内容,但我就是无法让它访问文件名。任何帮助将不胜感激。 我假设您对 document-uri 的尝试失败了,这是 Saxon 中的一个已知问题,因为规范的各种要求使得 Saxonica 改变了其实现;正在进行的 XPath 4 工作中存在一个放宽要求的问题,以便恢复 document-uri 的功能。 但在大多数使用情况下base-uri会这样做,尝试一下。 作为替代方案,您可以从 uri-collection 而不是 collection 开始,然后直接获得每个集合的 URI,您可以轻松提取其中的文件名,并使用 doc($uri) 处理文档,例如apply-templates。

回答 1 投票 0

如何使用 Saxon XSLT 处理 SVG 文件目录

我正在尝试使用 XSL-T 处理充满 SVG 文件的目录。我目前已经尝试过: 我正在尝试使用 XSL-T 处理充满 SVG 文件的目录。我目前已经尝试过: <?xml version="1.0"?> <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" doctype-public="-//W3C//DTD SVG 1.1//EN http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"/> <xsl:strip-space elements="*"/> <xsl:template name="main"> <svg xmlns="http://www.w3.org/2000/svg"> <defs/> <xsl:apply-templates select="collection(concat(resolve-uri('src/images'),'?select=*.svg;content-type=application/xml'))"/> </svg> </xsl:template> <xsl:template match="/"> <xsl:message>root</xsl:message> <xsl:apply-templates select="svg"/> </xsl:template> <xsl:template match="svg"> <xsl:message>svg</xsl:message> <xsl:attribute name="id"><xsl:value-of select="document-uri(/)"/></xsl:attribute> <xsl:attribute name="viewBox"><xsl:value-of select="@viewBox"/></xsl:attribute> <xsl:apply-templates select="path"/> </xsl:template> <xsl:template match="path"> <xsl:message>path</xsl:message> <xsl:attribute name="d"><xsl:value-of select="@d"/></xsl:attribute> <xsl:apply-templates select="@*"/> </xsl:template> <xsl:template match="@fill"> <xsl:message>@fill</xsl:message> <xsl:attribute name="fill"><xsl:value-of select="."/></xsl:attribute> </xsl:template> </xsl:stylesheet> 从命令行使用它: java net.sf.saxon.Transform -it:main -xsl:"%XSL%\svg-sprite.xsl" -o:"%OUT%\sprite.svg" 但是,当我在包含 29 个 SVG 文件的目录上运行它时,我得到的只是打印出 29 个 root。由于某种原因,<xsl:apply-templates select="svg"/> 似乎不起作用。 有谁知道如何解决这个困境,或者至少知道如何弄清楚为什么它没有应用定义的svg模板? 在 XSLT 的根元素上添加 xpath-default-namespace="http://www.w3.org/1999/svg"。基本上是 SVG 命名空间,我希望我已经记住并输入了正确的内容。

回答 1 投票 0

如何在Python本机类型中获取XQuery响应

我正在 XML 文件上使用 XQuery,并且需要 Python 本机格式的输出。按照文档,我尝试执行下面的代码,但是,我得到的输出位于 我正在 XML 文件上使用 XQuery,并且需要 Python 本机格式的输出。按照文档,我尝试执行下面的代码,但是,我得到的输出是 <class 'saxonche.PyXdmValue'>,并且我正在努力将其转换为本机 Python 数据类型。 from saxonche import * P = PyXQueryProcessor(license=False) Q = P.new_xquery_processor() Q.set_context(file_name="data.xml") res = Q.run_query_to_value(query_text=qry_str) 如何将响应类型(<class 'saxonche.PyXdmValue'>)转换为Python本机容器? 正如我在评论中所说,PyXdmValue表示 XDM 3.1 项目的 XDM 3.1 序列,这些项目可以是各种不同的类型,例如 XDM 节点、XDM 原子值(不同类型,例如字符串、布尔值、各种数字类型) ,各种日期/日期时间/持续时间类型)和功能项(包括地图和数组)。 因此,根据您的查询,您需要编写代码,考虑结果结构和项目类型。 举一个例子,查询 declare namespace map = 'http://www.w3.org/2005/xpath-functions/map'; declare namespace output = 'http://www.w3.org/2010/xslt-xquery-serialization'; declare option output:method 'adaptive'; map:merge( for $city in //city group by $country := $city/@country, $name := $city/@name return map:entry($name || '(' || $country || ')', avg($city/@pop)) ) 计算一个国家/地区某个城市的平均人口,并将结果作为包含 xs:string 键值和 xs:double 属性值的 XDM 地图返回。 输入文件示例如下 <cities> <city name="Milano" country="Italia" year="1950" pop="5.23"/> <city name="Milano" country="Italia" year="1960" pop="5.29"/> <city name="Padova" country="Italia" year="1950" pop="0.69"/> <city name="Padova" country="Italia" year="1960" pop="0.93"/> <city name="Paris" country="France" year="1951" pop="7.2"/> <city name="Paris" country="France" year="1961" pop="7.6"/> </cities> 在 Python 中,您可以将返回的 PyXdmMap 作为 [0] 的第一项 PyXdmValue 进行访问,例如使用字典理解将该 PyXdmMap 转换为 Python 字典: from saxonche import PySaxonProcessor with PySaxonProcessor() as saxon_proc: print(saxon_proc.version) xquery_processor = saxon_proc.new_xquery_processor() xquery_processor.set_context(file_name='cities2.xml') xdm_result1 = xquery_processor.run_query_to_value(query_file='group_cities2.xq') print(xdm_result1) python_dict1 = { key.string_value : xdm_result1[0].get(key)[0].double_value for key in xdm_result1[0].keys()} print(python_dict1) 输出例如 SaxonC-HE 12.4 from Saxonica map{"Milano(Italia)":5.26e0,"Paris(France)":7.4e0,"Padova(Italia)":8.1e-1} {'Milano(Italia)': 5.26, 'Paris(France)': 7.4, 'Padova(Italia)': 0.81}

回答 1 投票 0

在javascript中测试当前线程是否为主线程

在javascript中,如果当前线程已经是非主线程,我想执行一个操作,或者如果当前线程是主线程,则将其传递给非主线程。 为此,我如何测试是否...

回答 3 投票 0

当一个值未定义时,如何处理 Saxon XQuery 处理器返回的多个值?

我正在尝试在 Java 应用程序中使用 Saxon HE XQuery 处理器对 XML 文档执行即席查询。 例如: 对于 $x //TestHistory[last()]/results/TestResult 其中 $x/status = 'TestedF...

回答 1 投票 0

为什么“quot”实体没有被转义?

当我跑步时 (让[处理器(处理器。) 生成器(.newDocumentBuilder 处理器) xdm-node(.build 构建器 (流源。 (字符串读取器。 ...

回答 1 投票 0

Saxon 9.9.1 到 12.3 升级破坏了 sql:connect

我已经在9.9.1上成功运行sql连接。我正在升级到 12.3,并且收到我无法弄清楚的 sql 连接错误。查看文档,我看到的唯一区别...

回答 1 投票 0

String-join() 函数受 XML 结构(节点)顺序的影响

我通常广泛使用 String-join() 函数来处理和连接来自数据库的值,但是目前我观察到该函数的第二个变量是否首先获取/存在...

回答 1 投票 0

当我尝试使用 XSLT3 验证 xml 时遇到问题

我用 schematron 生成了一个 xslt 文件,但是当我尝试验证 xml 时抛出下一个错误 `DIAN-UBL21-model.xslt 第 17 行第 89 列错误:XTSE0150 提供的文件似乎不...

回答 1 投票 0

如何在 s9api 中为 Saxon 错误制作错误监听器?

我正在尝试监听 s9api 中发送到标准输出的错误,但我没有找到一个好的工作示例。这是我所拥有的: XsltCompiler 编译器=processor.newXsltCompiler(); 编译器。

回答 1 投票 0

Oxygen XML 中的 Saxon HE Java 扩展函数出现初始化错误

我正在尝试学习如何使用 ExtensionFunctionDefinition 类使用 Java 和 Saxon-HE 创建 XSLT 扩展函数。到目前为止,我已经能够提取然后重新编译一个 .jar 我们...

回答 1 投票 0

X包括在命令行 Saxon 上无法正常工作,但可以与 oXygen 一起使用

我有一些抄写手稿的 XML 文件,这些手稿来自这些手稿所在书籍的共享描述。它在我的 XML 中通过三个包含语句进行格式化,这些语句排列为 f...

回答 1 投票 0

链/管道变换的最佳方式

我在 saxonica.com、Google 和 Chat GPT 上进行了一些研究,以找到在不引发序列化和解析的情况下进行链式/管道式转换的最佳方法。我找到了用 s9api、JA 来做到这一点的方法...

回答 2 投票 0

使用 collection() 时 document-uri() 不起作用

我正在使用 saxonche 版本 12.3.0,在 Python 3.11.5 中使用 pip 安装。 在 XSLT 中使用 collection() 时,document-uri() 似乎不起作用。 我创建了一个小测试: Python 进口萨克森...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.