Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xml Saxon JS处理包含元素的CDATA时是否存在已知错误_Xml_Saxon_Xslt 3.0_Saxon Js - Fatal编程技术网

Xml Saxon JS处理包含元素的CDATA时是否存在已知错误

Xml Saxon JS处理包含元素的CDATA时是否存在已知错误,xml,saxon,xslt-3.0,saxon-js,Xml,Saxon,Xslt 3.0,Saxon Js,我想知道Saxon JS处理包含CDATA元素的方式是否存在已知错误 我有一个有效的XSLT 3.0和XML过程,包括从包含CDATA的元素中获取文本,并在转换中应用HTML标记。我将尝试在不发布脚本的情况下提问 我正在使用Saxon HE 9.8.0.3并尝试最新的Saxon JS。 从.xsl文件转换到.sef文件的所有内容都可以工作,但从包含CDATA的元素获取的文本的预期格式除外 我有一个元素,它只包含包含的多行文本 我用如下方式调用模板: 我与 变量中包含的中的文本的最终操作输出如下

我想知道Saxon JS处理包含CDATA元素的方式是否存在已知错误

我有一个有效的XSLT 3.0和XML过程,包括从包含CDATA的元素中获取文本,并在转换中应用HTML标记。我将尝试在不发布脚本的情况下提问

我正在使用Saxon HE 9.8.0.3并尝试最新的Saxon JS。 从
.xsl
文件转换到
.sef
文件的所有内容都可以工作,但从包含CDATA的元素获取的文本的预期格式除外

我有一个元素
,它只包含
包含的多行文本

我用如下方式调用模板:

我与

变量中包含的
中的文本的最终操作输出如下:

同样,当我从Java中的命令行使用Saxon HE、XML和XSLT 3.0的原始转换时,输出的HTML标记是正确的。转换脚本对于Saxon JS和所有逻辑都几乎相同,除了CDATA部分中最初的文本格式。文本输出,但未格式化

是否有任何原因导致此错误可能是因为Saxon JS处理CDATA节的方式与Saxon JS处理CDATA节的方式不同

Michael

见saying

Saxon JS没有实现 规范:模式感知、序列化、流式传输、, 高阶函数,并禁用输出转义

见谚语

Saxon JS没有实现 规范:模式感知、序列化、流式传输、, 高阶函数,并禁用输出转义


是的,存在一个已知问题:

在没有看到更多代码的情况下,我不确定这个问题是否相关。这个bug说,如果存在任何有效的空格剥离,CDATA节将被转换为文本节点,但其他情况下不会,因此一个有用的实验是看看如果添加到样式表中会发生什么

<xsl:strip-space elements="a-dummy-element-name"/>

这将触发空格剥离,这也会将CDATA节点转换为普通文本节点


但是,这并不能解决代码依赖于禁用输出转义的问题。如果您的CDATA/text节点包含需要复制到HTML页面中的HTML标记,那么在Saxon JS下执行此操作的唯一方法是将HTML解析为节点树,并将节点添加到HTML DOM中。如果HTML是格式良好的XML,则可以使用parse-XML()函数执行此操作;如果没有,您可能需要调用Javascript。

是的,存在一个已知问题:

在没有看到更多代码的情况下,我不确定这个问题是否相关。这个bug说,如果存在任何有效的空格剥离,CDATA节将被转换为文本节点,但其他情况下不会,因此一个有用的实验是看看如果添加到样式表中会发生什么

<xsl:strip-space elements="a-dummy-element-name"/>

这将触发空格剥离,这也会将CDATA节点转换为普通文本节点


但是,这并不能解决代码依赖于禁用输出转义的问题。如果您的CDATA/text节点包含需要复制到HTML页面中的HTML标记,那么在Saxon JS下执行此操作的唯一方法是将HTML解析为节点树,并将节点添加到HTML DOM中。如果HTML是格式良好的XML,则可以使用parse-XML()函数执行此操作;如果没有,您可能需要调用Javascript。

我想知道这是否是您认为的CDATA部分,还是仅仅使用
禁用输出转义
。如何将XSLT 3与Saxon JS结合使用?是否有任何API用于序列化结果,以便
禁用输出转义
可以产生任何效果?我的XSLT大部分是2.0,但我在样式表中声明了version=“3.0”。也许我应该提到,我将为使用Saxon JS而修改的.xsl文件转换为使用OxygenXML 19.1的.sef文件。如果不发布所有代码,可能只有Saxon开发人员能够回答。感谢您的输入。我想知道这是否是您认为的CDATA部分,而不仅仅是使用
禁用输出转义
。如何将XSLT 3与Saxon JS结合使用?是否有任何API用于序列化结果,以便
禁用输出转义
可以产生任何效果?我的XSLT大部分是2.0,但我在样式表中声明了version=“3.0”。也许我应该提到,我将为使用Saxon JS而修改的.xsl文件转换为使用OxygenXML 19.1的.sef文件。如果不发布所有代码,可能只有Saxon开发人员能够回答。感谢您的输入。我没有注意到Saxon JS站点上发布的被排除的功能。但是,我不确定这是唯一的问题。我看不到任何证据表明我上面列出的来自
docText
的调用与模板
docText/text()
匹配。我通过从我的工作解决方案中删除匹配的模板进行测试,并得到类似的文本连接。无论如何,你在上面指出的排除至少让我知道我需要寻找一个不同的解决方案。感谢您的时间。内置模板规则将处理任何未由您自己的模板处理的
docText
元素的子节点,然后文本节点的内置模板将输出文本节点。因此,考虑到您目前发布的信息以及Saxon JS的限制,结果似乎与预期相符。在CDATA部分,您有什么样的上下文,您不能用
解析xml片段
将其解析为节点,并用
xsl:copy of
xsl:sequence
输出它们吗?我之前已经发布了我的上下文,您已经做出了一些有用的详细响应。我的CDATA包含纯文本,带有由第en行指示的有限标记