2016-02-05 2 views
0

У меня есть шаблон xslt, который создает файл FOP, который впоследствии я хочу оценить со скоростью. Когда у меня есть что-то вроде этого:Переменные оцениваются дважды в шаблоне XSLT и Velocity

<fo:basic-link internal-destination="${variableOutside}"> 
     ${variableInside} 
</fo:basic-link> 

Обе переменные «variableInside» и «variableOutside» должны быть оценены по скорости и НЕ по XSLT.

Однако после первого преобразования XSLT, что я получаю:

<fo:basic-link internal-destination="$"> 
     ${variableInside} 
</fo:basic-link> 

То есть, variableInside уже оценили, потому что XSLT принимает это не символьная строка, а переменная, и, поскольку он Безразлично Для меня это не имеет значения, оно оставляет его пустым.

VariableOutside, однако, остается неиспользованным, потому что он не является атрибутом, который я предполагаю.

Теперь, я знаю, что могу избавиться от фигурных скобок, и это будет работать, но иногда, мне нужно только конвертировать одну часть текста, так, например:

${variableOutside}.field1 

должны стать

valueofvariable.field1 

И если я не использую фигурные скобки, Velocity предположит, что я ищу поле1 внутри переменной Outside, которой не существует.

Итак, мой вопрос: как мне избежать фигурных скобок? Я пробовал с «/» и «\» (двойной и одиночный), а также с { и }, но ни один из них не работает.

ответ

1

Если вы хотите, чтобы в буквальном смысле выходные фигурные скобки в качестве атрибута, а не иметь XSLT рассматривать их в качестве значения атрибута шаблонов, использовать двойные фигурные скобки

<fo:basic-link internal-destination="${{variableOutside}}"> 
+0

О, так просто !!! Благодаря! Я пробовал все остальные комбинации. #facepalm – luanjot