Xml FLT Can';t验证XSD布尔值
我正在为我的工作做一个网络项目,我正试图通过点击模板一侧的复选框将谷歌调查添加到页面中。使用此方法的原因是将脚本添加到所有模板中,但能够在特定页面上关闭/打开脚本。如果选中,则显示调查。如果不是,则不显示调查 我的XSD架构布尔代码是:Xml FLT Can';t验证XSD布尔值,xml,xsd,boolean,freemarker,Xml,Xsd,Boolean,Freemarker,我正在为我的工作做一个网络项目,我正试图通过点击模板一侧的复选框将谷歌调查添加到页面中。使用此方法的原因是将脚本添加到所有模板中,但能够在特定页面上关闭/打开脚本。如果选中,则显示调查。如果不是,则不显示调查 我的XSD架构布尔代码是: <xs:element name="ShowSurvey" type="xs:boolean"/> 这是要在发布者的模板端呈现的复选框 我的FTL代码是: <#if !Page.ShowSurvey> <script typ
<xs:element name="ShowSurvey" type="xs:boolean"/>
这是要在发布者的模板端呈现的复选框
我的FTL代码是:
<#if !Page.ShowSurvey>
<script type="text/javascript" async="" defer="" src="//survey.g.doubleclick.net/async_survey?site=#############"></script>
</#if>
当我重新生成模板时,会收到以下错误消息:
使用TemplateName.ftl重新生成格式副本时出错:freemarker.core.NonBooleanException:freemarker_模板第13行第23列出现错误,此处表达式页需要布尔(真/假)表达式。ShowSurvey的计算结果不为真/假它是freemarker.ext.dom.NodeListModel的实例
我做错了什么?有人能帮我照一下吗
提前感谢。FreeMarker的XML包装器不支持XSD,因此这里有一个类似于
“true”
的字符串,而不是布尔值。因此,您必须自己将其转换为布尔值。类似于
的内容,其中xsdBool
是:
<#function xsdBool s>
<#if s == 'true' || s == '1'><#return true></#if>
<#if s == 'false' || s == '0'><#return false></#if>
<#stop "Malformed XSD boolean: " + s>
</#function>