gpt4 book ai didi

java - 使用 java 的 XSLT 1.0 中的正则表达式

转载 作者:行者123 更新时间:2023-11-29 04:26:24 25 4
gpt4 key购买 nike

我有这个简单的测试:

<xsl:if test="boolean(java:java.util.regex.Pattern.matches('a', 'a'))">
<xsl:message terminate="no">success</xsl:message>
</xsl:if>

虽然它抛出这个错误:

ERROR:  'Cannot convert argument/return type in call to method 'java.util.regex.Pattern.matches(string, string)''
FATAL ERROR: 'Cannot convert argument/return type in call to method 'java.util.regex.Pattern.matches(string, string)''

我知道 java 实用程序可以正常工作,因为下面的代码可以正常编译:

<xsl:value-of select="java:format(java:java.text.SimpleDateFormat.new('dd/MM/yyyy, hh:mm a'), java:java.util.Date.new())"/>

我是在错误地使用 Pattern.matches() 还是我遗漏了什么技巧?我似乎无法在 xslt 中找到任何关于 java 的可靠文档。

我已经在文档的顶部声明了 java 命名空间:

xmlns:java="http://xml.apache.org/xslt/java"

最佳答案

Pattern.matches 的签名是

static boolean matches(String regex, CharSequence input)

请注意,第二个参数不是 String 而是 CharSequence 并且 String(XSLT) 和 之间没有定义映射字符序列 (Java)。因此,您必须通过创建实现所需接口(interface) CharSequence(例如 java.lang.String)的类的对象来手动进行转换。

如果您将 XSLT 测试表达式更改为

java:java.util.regex.Pattern.matches('a', java:java.lang.String.new('a'))

有效。

Xalan-Java 的文档对此进行了描述,请参阅 https://xml.apache.org/xalan-j/extensions.html#ext-functions获取更多详细信息。

尽管如此,我发现它并不总是像记录的那样工作;手动创建 java.lang.String 类型的对象有时是行不通的。然后你必须尝试使用​​其他实现所需接口(interface)的类,在这种情况下,任何采用 Java 字符串并提供所需 Java 字符序列接口(interface)的类,例如java.lang.StringBufferjava.lang.StringBuilder

关于java - 使用 java 的 XSLT 1.0 中的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46089128/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com