如果在XSLT中定义

0 xslt

我怎样才能检查定义的变量$ var01?问题是:

<input type="text" name="search_do" style="width: 150px;" value="{$search_do}" />
Run Code Online (Sandbox Code Playgroud)

但它不起作用,如果没有定义$ search_do ,我会收到消息"运行时错误".

PS我无法编辑php后端,只是XSL模板

Tom*_*lak 5

如果$search_do未定义,则尚未声明(在当前范围内).

这很简单 - 在XSLT中没有"条件变量定义".它们有时不能定义,有时也不定义,它们总是一个另一个."定义检查"是完全没必要的,这就是为什么没有.您始终可以从代码中查看是否存在变量.

但是,变量是严格限定的.仅在其父元素内有效.这意味着你做不到

<xsl:if test="some-condition">
  <xsl:variable name="search_do" value="foo" />
  <!-- search_do goes out of scope right away! -->
</xsl:if>

<!-- $search_do will not be valid here -->
<input type="text" name="search_do" value="{$search_do}" />
Run Code Online (Sandbox Code Playgroud)

反而

<xsl:if test="some-condition">
  <xsl:variable name="search_do" value="foo" />

  <!-- use it as long as it is in scope -->
  <input type="text" name="search_do" value="{$search_do}" />
</xsl:if>
Run Code Online (Sandbox Code Playgroud)