【问题标题】:XSL - Externalizing Xpath queries to a property fileXSL - 将 Xpath 查询外部化到属性文件
【发布时间】:2015-12-06 00:41:23
【问题描述】:

我浏览了各种关于从外部属性文件中读取属性的帖子。看起来有一个函数 - getProperty,它可以使用键从属性文件中读取值。我正在使用带有弹簧集成的撒克逊解析器。我正在尝试这样的事情,如帖子中所述:-

弹簧上下文文件:

   <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:{f:getProperty('query1')} 中第 30 行 char 23 处的 XPath 语法错误: XTSE0650: 不存在名为 getProperty 的模板

我现在有两个问题——首先,我该如何摆脱这些错误?

其次,我可以将 xPath 查询存储在属性文件中吗?该帖子描述了一种方法,用于读取属性文件并使用与其键相关的值。但是,我认为 getProperty 只会打印查询的等效文本,而不是评估查询并处理它。有没有办法做到这一点?

发布 - How to read a .properties file inside a .xsl file?

【问题讨论】:

    标签: xpath spring-integration xslt-2.0 saxon


    【解决方案1】:

    我无法帮助您解决 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 或更高版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-07
      • 2018-02-21
      • 1970-01-01
      • 2018-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多