在 XSLT 模板和 Velocity 中对变量进行两次评估
Variables being evaluated twice in XSLT template and Velocity
我有一个创建 FOP 文件的 xslt 模板,之后我想快速评估该文件。当我遇到这样的事情时:
<fo:basic-link internal-destination="${variableOutside}">
${variableInside}
</fo:basic-link>
两个变量 "variableInside" 和 "variableOutside" 都应该由 velocity 而不是 XSLT 来计算。
然而,在第一次 XSLT 转换之后,我得到的是:
<fo:basic-link internal-destination="$">
${variableInside}
</fo:basic-link>
也就是说,已经对 variableInside 求值,因为 XSLT 假定这不是文字字符串而是一个变量,并且由于它没有任何值,因此将其留空。
但是,VariableOutside 未被使用,因为我猜它不在属性中。
现在,我知道我可以去掉花括号,这会起作用,但有时,我只需要转换文本的一部分,例如:
${variableOutside}.field1
应该变成
valueofvariable.field1
如果我不使用大括号,Velocity 将假定我正在查找不存在的 variableOutside 内的 field1。
所以,我的问题是,如何转义花括号?我尝试过使用“/”和“\”(双精度和单精度)以及 { 和 },但其中 none 有效。
如果您想在属性中直接输出大括号,而不是让 XSLT 将它们视为属性值模板,请使用双大括号
<fo:basic-link internal-destination="${{variableOutside}}">
我有一个创建 FOP 文件的 xslt 模板,之后我想快速评估该文件。当我遇到这样的事情时:
<fo:basic-link internal-destination="${variableOutside}">
${variableInside}
</fo:basic-link>
两个变量 "variableInside" 和 "variableOutside" 都应该由 velocity 而不是 XSLT 来计算。
然而,在第一次 XSLT 转换之后,我得到的是:
<fo:basic-link internal-destination="$">
${variableInside}
</fo:basic-link>
也就是说,已经对 variableInside 求值,因为 XSLT 假定这不是文字字符串而是一个变量,并且由于它没有任何值,因此将其留空。
但是,VariableOutside 未被使用,因为我猜它不在属性中。
现在,我知道我可以去掉花括号,这会起作用,但有时,我只需要转换文本的一部分,例如:
${variableOutside}.field1
应该变成
valueofvariable.field1
如果我不使用大括号,Velocity 将假定我正在查找不存在的 variableOutside 内的 field1。
所以,我的问题是,如何转义花括号?我尝试过使用“/”和“\”(双精度和单精度)以及 { 和 },但其中 none 有效。
如果您想在属性中直接输出大括号,而不是让 XSLT 将它们视为属性值模板,请使用双大括号
<fo:basic-link internal-destination="${{variableOutside}}">