Próbuję zaimplementować instrukcję if -else w XSLT, ale mój kod po prostu nie analizuje. Czy ktoś ma jakieś pomysły?
<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
Odjechany
źródło
źródło
Odpowiedzi:
Musisz go ponownie zaimplementować za pomocą
<xsl:choose>
tagu:źródło
Jeśli instrukcja jest używana do szybkiego sprawdzenia tylko jednego warunku. Jeśli masz wiele opcji, użyj,
<xsl:choose>
jak pokazano poniżej:Możesz także używać wielu
<xsl:when>
tagów do wyrażaniaIf .. Else If
lubSwitch
wzorców, jak pokazano poniżej:Poprzedni przykład byłby odpowiednikiem poniższego pseudokodu:
źródło
if else
warunek był tylko przykładem lub raczej pseudokodem.Jeśli mogę zaproponować jakieś sugestie (dwa lata później, ale mam nadzieję, że będą pomocne dla przyszłych czytelników) :
h2
element.ooooooooooooo
tekst.if/then/else
konstrukcji XPath 2.0, jeśli używasz XSLT 2.0.Rozwiązanie XSLT 1.0 (działa również z XSLT 2.0)
Rozwiązanie XSLT 2.0
źródło
Najprostszym podejściem jest wykonanie drugiego testu if, ale z odwróconym warunkiem. Ta technika jest krótsza, łatwiejsza dla oczu i łatwiejsza do wykonania niż zagnieżdżony blok typu „wybierz, kiedy”:
Oto rzeczywisty przykład techniki używanej w arkuszu stylów witryny rządowej: http://w1.weather.gov/xml/current_obs/latest_ob.xsl
źródło
if
test pasuje do uzupełnienia pierwszego, sprawia, że każda kolejna modyfikacja jest bardziej podatna na błąd.<xsl:choose>
byłoby o wiele prostsze, a jego znaczenie o wiele bardziej jasne.Pierwotnie z tego wpisu na blogu . Możemy to osiągnąć, używając poniższego kodu
Więc oto co zrobiłem
Moje wyjście
źródło