Estoy tratando de implementar una declaración if -else en XSLT pero mi código simplemente no analiza. ¿Alguien tiene alguna idea?
<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>
xml
xslt
if-statement
Miedoso
fuente
fuente
Respuestas:
Tienes que volver a implementarlo usando la
<xsl:choose>
etiqueta:fuente
Si la declaración se usa para verificar una sola condición rápidamente. Cuando tenga varias opciones, use
<xsl:choose>
como se ilustra a continuación:Además, puede usar varias
<xsl:when>
etiquetas para expresarIf .. Else If
oSwitch
patrones como se ilustra a continuación:El ejemplo anterior sería equivalente al pseudocódigo siguiente:
fuente
if else
condición era solo un ejemplo o más bien un pseudocódigo. Bueno, considero tu preocupación y la he editado ..Si puedo ofrecer algunas sugerencias (dos años después, pero espero que sea útil para futuros lectores) :
h2
elemento .ooooooooooooo
texto .if/then/else
construcción XPath 2.0 si usa XSLT 2.0.Solución XSLT 1.0 (también funciona con XSLT 2.0)
Solución XSLT 2.0
fuente
El enfoque más directo es hacer una segunda prueba si, pero con la condición invertida. Esta técnica es más corta, más fácil para los ojos y más fácil de entender que un bloque anidado de elegir cuándo:
Aquí hay un ejemplo del mundo real de la técnica que se usa en la hoja de estilo para un sitio web del gobierno: http://w1.weather.gov/xml/current_obs/latest_ob.xsl
fuente
if
prueba coincida con el complemento de la primera hace que cualquier modificación posterior sea más propensa a errores.<xsl:choose>
sería mucho más directo, su significado es mucho más claro.Originalmente de esta publicación de blog . Podemos lograrlo si no, usando el siguiente código
Entonces esto es lo que hice
Mi salida
fuente