문제

In my xsl file i have this:

<xsl:choose>
<xsl:when test="$search_resource = 'people'">
    <xsl:variable name="search__url"><xsl:value-of select="$search_url"/>employees</xsl:variable>
</xsl:when>
<xsl:otherwise>
    <xsl:variable name="search__url"><xsl:value-of select="$search_url"/></xsl:variable>
    otherwise
</xsl:otherwise>
</xsl:choose>
<form id="searchForm_valeo" action="{$search__url}"></form>

but after viewing the page a got this error:

XSLTApplyError: Internal error: Failed to evaluate the AVT of attribute 'action'.

I have tried to print the value of the variable and it was correct. But to add it as a value of action attribute of form element i got the error

I have even tried to use this action="{search__url}" and this : action="{@search__url}" but i got action atribute empty. any idea of the root cause ?

도움이 되었습니까?

해결책

You’re defining $search__url inside the choose, it won’t be defined outside it. Try rearranging your elements:

<xsl:variable name="search__url">
  <xsl:choose>
    <xsl:when test="$search_resource = 'people'"><xsl:value-of select="$search_url"/>employees</xsl:when>
    <xsl:otherwise><xsl:value-of select="$search_url"/>otherwise</xsl:otherwise>
  </xsl:choose>
</xsl:variable>

I left the otherwise string inside the <xsl:otherwise/> but I’m not sure if you intended that. Also, it’s pretty confusing that you’re defining $search__url based in part on $search_url, you might want to use more expressive variable names.

다른 팁

The problem is your variable is being conditionally created. The XSLT compiler won't like that because it will consider that the variable may, in some circumstances, not exist.

Instead, condition just the variable's value, not its existence.

<xsl:variable name='search__url'>
    <xsl:choose>
        <xsl:when test="$search_resource = 'people'">
            <xsl:value-of select="$search_url"/>employees
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="$search_url"/>
            otherwise
        </xsl:otherwise>
    </xsl:choose>
</xsl:variable>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top