关于从外部属性文件中读取属性,我浏览了各种帖子。看起来有一个函数 - getProperty,它可以使用键从属性文件中读取值。我正在使用具有spring集成的saxon解析器。我正在尝试这样的事情,如帖子所述: -
spring上下文件:
<int-xml:xslt-transformer id="xsltTransformer" input-channel="bulkStringInboundChannel"
output-channel="toBridgeChannel" result-type="StringResult" **transformer-factory-class="net.sf.saxon.TransformerFactoryImpl"**
xsl-resource="classpath:/META-INF/spring/integration/intake/intake-flow/bulkTransformer.xsl" />
XSL样式表:
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
....
<xsl:variable name="props" select="document('prop.xml')" />
<xsl:value-of select="f:getProperty('query1')"/>
....
Prop.xml:
query1 = /Batch/RequestID/text()
错误说明: XPST0003:第30行第23行的 {f:getProperty(&#39; query1&#39;)}中的XPath语法错误: XTSE0650:没有名为getProperty的模板
我现在有两个问题 - 首先,如何摆脱这些错误?
其次,我可以将xPath查询存储在属性文件中吗?该帖子描述了一种方法,用于读取属性文件并使用与其键相关的值。但是,我认为getProperty只会打印查询的等效文本而不是评估查询并对其进行处理。有没有办法实现这个目标?
答案 0 :(得分:0)
我无法帮助你处理问题的Spring方面,但对于Saxon方面,你可以使用如下代码调用JDK方法System.getProperty():
<xsl:value-of select="System:getProperty('user.dir')" xmlns:System="java:java.lang.System"/>
Java可扩展性需要Saxon-PE或更高版本。
如果您读取的属性的值是XPath表达式,则可以使用XSLT 3.0 xsl:evaluate指令执行它 - 这也需要Saxon-PE或更高版本。