<xsl:choose>
<xsl:when test="long convoluted expression">
<xsl:element name="Class">123</xsl:element>
<a lot more xsl:elements>
</xsl:when>
<xsl:when test="next very long expression">
<xml:element name="Class">124</xsl:element>
<a lot more xsl:elements>
</xsl:when>
<tens of more similar xsl:when>
</xsl:choose>
C'è un modo per semplificare il codice sopra con condizionali? Per ogni valore di classe assegnato agli oggetti, ne seguono decine di righe con attributi aggiuntivi. Questi attributi formano insiemi in base al valore della classe. La classe 0-99 ha un set di tag extra, classe 100-199 al secondo, che formano un incubo di manutenzione quando uno di questi set di tag extra cambia.Condizioni XSLT/ambito variabile
Stavo considerando una soluzione come questa:
<xsl:choose>
<xsl:when test="long convoluted expression">
<xml:element name="Class">123</xsl:element>
<xsl:variable name="outputclass" select="123">
</xml:when>
<xsl:when test="next very long expression">
<xml:element name="Class">124</xsl:element>
<xsl:variable name="outputclass" select="124">
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="$outputclass > 99">
<xml:elements for classes 100-199 here>
</xsl:when>
<xsl:choose>
Ma naturalmente questo non riesce, come la variabile outputclass non è nello stesso ambito. C'è un modo per aggirare questo?
Questo è confuso.Potrebbe essere più chiaro se si aggiunge un documento di input e output di esempio. –
Buona domanda (+1). Vedi la * migliore * migliore soluzione nella mia risposta - con codice completo e spiegazioni. :) –