阻止cs的XslPath解析:如果测试字符串

时间:2012-10-12 17:24:10

标签: xslt

我正在使用XSL,我想把c:if if into into my generated,

<c:if test="${value=='yes'}">

但是标签的test =“”部分被解释为解析的XslPath和fials ......

有没有办法逃避或禁用它的测试部分作为XslPath

1 个答案:

答案 0 :(得分:0)

问题是由于XSLT将属性中的一对花括号视为AVT(属性值模板)的规范。

为了指定一个真正的大括号,它必须加倍。

使用

 <c:if test="${{value=='yes'}}"> 

这是一个完整的转型

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
 xmlns:c="some:c" exclude-result-prefixes="c">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="node()|@*">
     <c:if test="${{value=='yes'}}"/>
 </xsl:template>
</xsl:stylesheet>

当此转换应用于任何XML文档(未在此演示中使用)时,会生成所需的正确结果

<c:if xmlns:c="some:c" test="${value=='yes'}"/>