当前位置: 首页 > 知识库问答 >
问题:

xsl:当扩展函数被禁用时,结果文档被禁用

狄德泽
2023-03-14

我想有多个文件输出与xsl,所以我使用xsl:结果文档,我有这个错误

xsl:当扩展函数被禁用时,结果文档被禁用

看来我需要启用外部功能,这样它才能工作。但问题是,我没有使用命令行,我不能只是把-ext:打开。这里我用camel和spring XML调用xslt。如果我理解得很好,我需要更改xslt的配置属性,以便将allow external函数设置为true。

以下是我试图修复的:

<bean id="xslt-saxon" class="org.apache.camel.component.xslt.saxon.XsltSaxonComponent">
        <property name="saxonConfiguration">
          <bean class="net.sf.saxon.Configuration"/>
        </property>
        <property name="saxonConfigurationProperties">
          <map>
            <entry key="http://saxon.sf.net/feature/allow-external-functions" value="true" value-type="java.lang.Boolean"/>
          </map>
        </property>
    </bean>

然后当我打电话给xslt-saxon时:

<to uri="xslt-saxon:file://{{format.transformer.file}}"/>

但它不起作用,错误是:

No component found with scheme: xslt-saxon

即使我在pom中向saxon添加依赖项。xml它不起作用。我不知道下一步该怎么做,你知道吗?

编辑:

现在,在使用xslt saxon时不再出现错误,但第一个错误仍然存在。这是因为允许外部功能的映射不起作用。

共有1个答案

百里光熙
2023-03-14

我可以通过Camel通过Saxon运行XSL转换,只需向

.to("xslt:transformation.xsl?saxon=true")

不需要Spring XML或启用外部函数,它只是在我添加依赖项时工作

<artifactId>camel-saxon</artifactId>

顺便说一下,我骑的是骆驼2.17。

我的示例是输入XML

<?xml version="1.0" encoding="UTF-8"?>
<Camel>
    <Component>
        <XSL>The XSL component</XSL>
        <File>The file component</File>
    </Component>
</Camel>

我的转变。xsl

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="xs"
    version="2.0">
    <xsl:template match="/">
        <Camel-Components>
            <xsl:for-each select="Camel/Component/*">
                <xsl:result-document href="test-{position()}.txt">
                    <xsl:value-of select="."/>
                </xsl:result-document>
            </xsl:for-each>
        </Camel-Components>
    </xsl:template>
</xsl:stylesheet>

这给了我两个新文件,注意动态文件名定义为test-{post()}. txt

  • test-1。txt=

这两个文件都是在保存转换样式表的同一路径中创建的,因为我只提供了一个文件名,没有提供路径。

 类似资料:
  • 例子 #if (GCC_VERSION > 4000) #define DEBUG_FUNCTION __attribute__ ((__used__)) #define DEBUG_VARIABLE __attribute__ ((__used__)) #else #define DEBUG_FUNCTION #define DEBUG_VARIABLE #endif DEBUG_FUNCT

  • 问题内容: 在抓取https://www.netflix.com之类的网站时,被robots.txt禁止:https://www.netflix.com/> 错误:未下载以下响应:https : //www.netflix.com/ 问题答案: 在2016年5月11日发布的新版本(scrapy 1.1)中,抓取功能先在抓取之前下载了robots.txt。要更改此行为,请使用ROBOTSTXT_OB

  • 我无法获得关于Crashlytics的碰撞报告。我注意到logcat说“Send to Reports Endpoint disabled”。 有什么想法如何启用发送报告吗?另外一件奇怪的事情是,我在项目设置中的API密钥与google-services.json中的密钥不匹配。不确定这是否有关。 ================================2020-09-06 12:27:2

  • 问题内容: PHP中是否可以使用任何函数来检测该函数是否可用? 问题答案: 编辑:根据Ziagl的评论修复了爆炸。

  • 我正在使用Google Maps v2,我想确定我的位置。我使用Genymotion emulator。我需要激活测试设备上的GPS。如果我在模拟器上测试,并且如果我尝试使用LocationManager,它没有激活“null”。我正在使用Eclipse的“DDMS”透视图将地理位置发送到模拟器。窗→ 打开透视图→ 另外→ DDMS。但并非所有字段都可单击。 `

  • 我使用这段代码点击下拉列表: 我得到错误可能是因为有一个显示登录栏的层。之后,该元素被禁用,代码抛出异常。 是否可以实现一个等待元素不被禁用的listen?