问题标签 [exslt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
107 浏览

numbers - 如何使用 XSLT 1 查找字符串中的所有数字

How to find all numbers in a string for XSLT 2 甚至 3有一些很好的解决方案。我怎样才能在限制范围内完成完全相同的事情XSLT 1(在 EXSLT 的可能帮助下)?

这是一个例子:

所需的输出将是:

0 投票
1 回答
765 浏览

xslt - 如何从一组 XML 元素中获取数据并提供给另一个 XML 组

我正在尝试使用辅助或不同 xml 文件中的数据更新以下 XML 中的元素。输入 XML 和辅助 XML 文件都具有相同数量的段。我需要在辅助 XML 的第一段中取一个值并更新 INPUT xml 中的一个元素等等。我不确定是否可以使用 XSL 来完成,任何人都可以指导我。

更具体地说,我正在尝试根据辅助 XML 的 //PDetails/PStatus/Code 和 //PDetails/PStatus/Description 值更新 INPUT XML 的值<indicator></indicator><iOSection>

以下是输入 XML 文件:

下面是辅助 XML 文件 - 它在名为 RSPDetails 的 xsl 变量中可用

当 //PDetails/PStatus/Code = '0' 和 //PDetails/PStatus/Description = 'Cancelled' 时的值<indicator>应该是 'YES' ,在所有其他情况下它应该是 'NO'

条件应适用于<iOSection>位置 1 使用<PDetails>位置 1 数据和<iOSection>位置 2 使用<PDetails>位置 2 数据,依此类推

期望的输出是:

我在 XSL 下尝试过,但没有更接近

0 投票
1 回答
428 浏览

php - dyn:evaluate() 没有正确评估?

出于某种原因,当通过 dyn:evaluate() 在 XSLT 中执行时,我的 XPath 查询不起作用。我正在使用 PHP 并hasEXSLTSupport()评估为true

这是我的原始 XML 文档:

我正在使用这个 XPath 语句:

在我的 XSLT 中,我使用此部分来检查它是否有效:

Where$query使用 XPath 表达式计算字符串(我知道,因为我也检查xsl:value-of过)。

我没有收到任何错误。事实上,做一个<xsl:value-of select="boolean($elementValue)" />评估false!这意味着它不会得到任何回报。

我的样式表标题是:

似乎 XPath 没有得到评估,即使它完全有效(我检查了 PHP 和 Notepad++ 的 XPatherizerNPP 扩展)。我错过了什么?

编辑

我的实际脚本在几个类和文件夹中,所以我发布了我正在运行的更简单的版本。即使 Notepad++ 告诉我应该这样做,它的 dyn:evaluate() 仍然不起作用,并且我只是将其他类中的函数复制粘贴到一个中以便于参考。

我的mock.xml是我正在解析的脚本

我的countFieldValues.xml样式表调用 PHP 在其 readSubtree php 函数调用中一次解析单个子树。

testscript.php打电话给班级并执行一切

我的class.php是处理器。它使用 PHP 中的 XMLReader 和 XSLTProcessor 类。

更新:

我找到了一些dyn:evaluate()返回节点集的表达式。但他们有点奇怪。

这是他们评估为真的时间:

但这些评估为假:

这是怎么回事...?

更新:

在迈克尔的建议下,我运行了他的测试并得到了这个结果:

失败部分是目标是一个空元素。

0 投票
2 回答
1220 浏览

xml - XSLT - 遍历节点集

我有一个这样的xml:

我需要从 col1 中获取转义集合并遍历其行。我正在使用 exsl:node-set 函数。这是我的简化 xsl:

我可以使用 xsl:value-of 函数从变量 $collection 中正确读取值,但我无法像没有行一样对其进行迭代。任何想法我做错了什么?

0 投票
3 回答
1828 浏览

java - 如何在 JBoss eap 6.1 服务器中启用 XSLT 2.0 处理器,以消除 XSLT 2.0 功能不可用等错误

我正在 XSLT 2.0 中尝试日期格式。当我尝试在我的工作区中运行它时,它运行良好并且我得到了正确的响应。但是当我在 JBoss eap 6.1 上部署我的 jar 后尝试实现相同的目标时,我收到以下错误:

16:35:02,311 错误 [XSLTUtil] (DefaultQuartzScheduler-camel-12_Worker-2) XSLTUtil|0|TransformerException:使用 xslt 文件转换 xml 时发生错误:javax.xml.transform.TransformerException:org.xml.sax.SAXException:找不到函数:format-dateTime javax.xml.transform.TransformerException:找不到函数:format-dateTime|

我的 Xsl 文件:这里我尝试使用 format-dateTime 将当前日期格式化为其他格式。

这是我用于转换/映射我的 XML 和 XSL 文件的 XSLT 实用程序类。在下面的 java 文件中,我正在从本地目录中读取 xsl 文件。将 jar 部署到 JBoss 服务器后,我会读取文件位置并将其传递给 XSLTFilename 变量。

这段特定的代码在我的工作区中运行良好。我需要在我的 JBoss 服务器上配置一些东西来解决这个问题吗?请让我知道我到底错过了什么。

0 投票
1 回答
302 浏览

xslt - exslt 节点集中的不同值

我有一个程序从 exslt 中的函数接收节点集。它包含重复的节点(Tom Waits 出现两次):

此示例产生(在浏览器中解析):

我知道我应该能够使用 set:distinct(nodeset) 过滤结果,<xsl:apply-templates select="set:distinct(ext:node-set($someHeroes)/person)"/>可能是这样的,但不知何故我找不到这样做的方法。任何帮助,将不胜感激。

0 投票
1 回答
1029 浏览

xml - EXSLT : date:format-date : 解析日期,不解析时间

设置: Apache Xalan 2.7.1

输入 :

XSLT:

输出 :

问:为什么我无法弄清楚为什么时间没有与日期一起被解析。时间应该等于 11:48:00。


注意:只能应用 xslt 1.0 解决方案。

0 投票
1 回答
240 浏览

xml - 撒克逊错误:与函数调用匹配的方法不止一种

我有以下部分生成的 xsl 以及带有重载方法的扩展类。Xalan 能够很好地改造它。但是,Saxon 会产生以下错误。我不确定为什么它不能用两个字符串参数绑定到方法。任何帮助表示赞赏。

与函数调用 Compare:lessThan 匹配的方法不止一种,类型信息不足以确定应该使用哪一种

`

Java 扩展类方法

0 投票
0 回答
43 浏览

xslt-1.0 - XSLT 1.0:基于空格分隔属性的键

我有一个包含元素的 XML a,其属性@ref包含至少一个指针,并且可以包含任意数量的由空格分隔的指针:<a ref="#p1 #p2"/>. 在 XSLT 1.0 样式表中,我需要将模板应用于文档中所有且仅b引用的那些元素a/@ref

所以,我认为这个想法是定义一个<xsl:key name="k1" match="a" use="my:refs(@ref)"/>函数,将 的值@ref拆分为其组成部分,然后有一个<xsl:template match="b[key('k1', @xml:id)]"/>. 如果我正确解释规格:

use 属性是指定键值的表达式;对于与模式匹配的每个节点,都会对表达式进行一次评估。如果结果是一个节点集,那么对于节点集中的每个节点,与模式匹配的节点都有一个指定名称的键,其值为节点集中节点的字符串值;

我需要提供一个函数来@use返回由(减去前导'#')node-set的值组成的字符串。a/@ref

我的解决方案是定义<xsl:key name="k1" match="a" use="str:tokenize(@ref, '# ')/><xsl:template match="a[key('k1', @xml:id)">.

当我使用 Xalan 作为处理器时,这给了我想要的结果。但是,Saxon 9.6.0.7 抱怨循环键定义。

现在我有点困惑:我的解决方案是否有效?如果是这样,撒克逊人为什么抱怨?还有其他/更好的(/真实的)解决方案吗?[看评论]。

编辑:附加问题:如何在 XSLT 2.0 中获得结果?仅仅tokenize(@ref, '#')在键定义中使用是不够的,因为有空格,而对于normalize-space(tokenize(@ref, '#'))Saxon 会给出相同的错误 XTDE0640。

谢谢,达里奥


示例 XML:

输出应该是

(不需要特别的顺序)。

0 投票
2 回答
162 浏览

xml - Saxon HE vs Saxon PE: File URI Resolution

My question is a very easy one. I just want to know if buying the professional version of Saxon will help with file URI resolution, since the professional version has the EXPath extension.

I'm asking this because no matter how hard I try, (passing command line parameters, using file:///C|/path/to/text.csv, etc.) Saxon-HE refuses to let my stylesheets load a raw text file using unparsed-text('file:///C:/path/to/text.csv'), and will only resolve the file if it comes from one of the network drives that are mounted, unparsed-text('file://example.com/Dept/path/to/text.csv').

I have to ask this because the Saxon documentation explicitly states that unparsed-text() is NOT dependant on any custom URI resolver classes being used.