XSLT에서 if -else 문을 구현하려고하는데 코드가 구문 분석되지 않습니다. 누구든지 아이디어가 있습니까?
<xsl:variable name="CreatedDate" select="@createDate"/>
<xsl:variable name="IDAppendedDate" select="2012-01-01" />
<b>date: <xsl:value-of select="$CreatedDate"/></b>
<xsl:if test="$CreatedDate > $IDAppendedDate">
<h2> mooooooooooooo </h2>
</xsl:if>
<xsl:else>
<h2> dooooooooooooo </h2>
</xsl:else>
답변
<xsl:choose>
태그를 사용하여 다시 구현해야합니다 .
<xsl:choose>
<xsl:when test="$CreatedDate > $IDAppendedDate">
<h2> mooooooooooooo </h2>
</xsl:when>
<xsl:otherwise>
<h2> dooooooooooooo </h2>
</xsl:otherwise>
</xsl:choose>
답변
if 문은 하나의 조건 만 빠르게 확인하는 데 사용됩니다. 여러 옵션이있는 경우 <xsl:choose>
아래 그림과 같이 사용하십시오 .
<xsl:choose>
<xsl:when test="$CreatedDate > $IDAppendedDate">
<h2>mooooooooooooo</h2>
</xsl:when>
<xsl:otherwise>
<h2>dooooooooooooo</h2>
</xsl:otherwise>
</xsl:choose>
또한 아래 그림과 같이 여러 <xsl:when>
태그를 사용 하여 표현 If .. Else If
하거나 Switch
패턴 을 지정할 수 있습니다 .
<xsl:choose>
<xsl:when test="$CreatedDate > $IDAppendedDate">
<h2>mooooooooooooo</h2>
</xsl:when>
<xsl:when test="$CreatedDate = $IDAppendedDate">
<h2>booooooooooooo</h2>
</xsl:when>
<xsl:otherwise>
<h2>dooooooooooooo</h2>
</xsl:otherwise>
</xsl:choose>
이전 예제는 아래 의사 코드와 같습니다.
if ($CreatedDate > $IDAppendedDate)
{
output: <h2>mooooooooooooo</h2>
}
else if ($CreatedDate = $IDAppendedDate)
{
output: <h2>booooooooooooo</h2>
}
else
{
output: <h2>dooooooooooooo</h2>
}
답변
몇 가지 제안을 제공 할 수 있다면 (2 년 후에 미래 독자에게 도움이되기를 바랍니다) :
- 공통
h2
요소를 제외시킵니다 . - 일반
ooooooooooooo
텍스트를 제외하십시오 . if/then/else
XSLT 2.0을 사용하는 경우 새로운 XPath 2.0 구성에 유의하십시오 .
XSLT 1.0 솔루션 (XSLT 2.0에서도 작동)
<h2>
<xsl:choose>
<xsl:when test="$CreatedDate > $IDAppendedDate">m</xsl:when>
<xsl:otherwise>d</xsl:otherwise>
</xsl:choose>
ooooooooooooo
</h2>
XSLT 2.0 솔루션
<h2>
<xsl:value-of select="if ($CreatedDate > $IDAppendedDate) then 'm' else 'd'"/>
ooooooooooooo
</h2>
답변
가장 간단한 접근 방식은 두 번째 if-test를 수행하지만 조건이 반전 된 것입니다. 이 기술은 선택시 중첩 블록보다 짧고, 눈에 더 쉽고, 올바른 방법입니다.
<xsl:variable name="CreatedDate" select="@createDate"/>
<xsl:variable name="IDAppendedDate" select="2012-01-01" />
<b>date: <xsl:value-of select="$CreatedDate"/></b>
<xsl:if test="$CreatedDate > $IDAppendedDate">
<h2> mooooooooooooo </h2>
</xsl:if>
<xsl:if test="$CreatedDate <= $IDAppendedDate">
<h2> dooooooooooooo </h2>
</xsl:if>
다음은 정부 웹 사이트의 스타일 시트에서 사용되는 기술의 실제 예입니다. http://w1.weather.gov/xml/current_obs/latest_ob.xsl
답변
원래이 블로그 게시물에서 . 아래 코드를 사용하여 다른 경우 달성 할 수 있습니다
<xsl:choose>
<xsl:when test="something to test">
</xsl:when>
<xsl:otherwise>
</xsl:otherwise>
</xsl:choose>
그래서 여기 내가 한 일이 있습니다.
<h3>System</h3>
<xsl:choose>
<xsl:when test="autoIncludeSystem/autoincludesystem_info/@mdate"> <!-- if attribute exists-->
<p>
<dd><table border="1">
<tbody>
<tr>
<th>File Name</th>
<th>File Size</th>
<th>Date</th>
<th>Time</th>
<th>AM/PM</th>
</tr>
<xsl:for-each select="autoIncludeSystem/autoincludesystem_info">
<tr>
<td valign="top" ><xsl:value-of select="@filename"/></td>
<td valign="top" ><xsl:value-of select="@filesize"/></td>
<td valign="top" ><xsl:value-of select="@mdate"/></td>
<td valign="top" ><xsl:value-of select="@mtime"/></td>
<td valign="top" ><xsl:value-of select="@ampm"/></td>
</tr>
</xsl:for-each>
</tbody>
</table>
</dd>
</p>
</xsl:when>
<xsl:otherwise> <!-- if attribute does not exists -->
<dd><pre>
<xsl:value-of select="autoIncludeSystem"/><br/>
</pre></dd> <br/>
</xsl:otherwise>
</xsl:choose>
내 결과