gpt4 book ai didi

java xslt 转换本地名称

转载 作者:行者123 更新时间:2023-12-02 09:14:43 26 4
gpt4 key购买 nike

我有一个 xslt 样式表,应该进行一些通用转换。相关部分是

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:template match="myForm/*">
<xsl:element name="formularfeld">
<xsl:attribute name="name">
<xsl:value-of select="fn:local-name()" />
</xsl:attribute>
<xsl:value-of select="." />
</xsl:element>
</xsl:template>
</xsl:stylesheet>

当我在 XMLSpy 中运行时,样式表按预期工作。但是,当我从 Java 8 SE 或 ServiceMix 7 调用时,我得到错误:“Klasse“xpath-functions”kann nicht gefunden werden。”外部方法“xpath-functions.localName”可以使用(muss“public”sein)。 fatal error :“外部方法“xpath-functions.localName”kann nicht gefunden werden(muss“public”sein)”。(找不到类xpath-functions。找不到外部方法xpath-funckions.localName)

        StreamResult streamResult = new StreamResult(xmlOutWriter);
Reader inputReader = new StringReader(input);
Reader xsltReader = new StringReader(stylesheet);
TransformerFactory factory = TransformerFactory.newInstance();
Source xslt = new StreamSource(xsltReader);
Transformer transformer = factory.newTransformer(xslt);

transformer.setOutputProperty(OutputKeys.ENCODING, StandardCharsets.UTF_8.name());
transformer.setParameter("timestamp", timestamp);
Source inputSource = new StreamSource(inputReader);
transformer.transform(inputSource, streamResult);

最佳答案

显然您正在使用 XSLT 1.0 处理器。在 XSLT 1.0 中,没有函数的命名空间。即使在 XSLT 2.0 中,命名空间也是可选的。您只需更改:

<xsl:value-of select="fn:local-name()" />

<xsl:value-of select="local-name()" />

并删除 xmlns:fn="http://www.w3.org/2005/xpath-functions" 声明。

关于java xslt 转换本地名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59088628/

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