Как вы пишете атрибуты элемента в определенном порядке, не записывая это явно?
Рассмотрим:
<xsl:template match="Element/@1|@2|@3|@4">
<xsl:if test="string(.)">
<span>
<xsl:value-of select="."/><br/>
</span>
</xsl:if>
</xsl:template>
Атрибуты должны появляться в порядке 1, 2, 3, 4
. К сожалению, вы не можете гарантировать порядок атрибутов в XML, это может быть <Element 2="2" 4="4" 3="3" 1="1">
Таким образом, шаблон выше выдаст следующее:
<span>2</span>
<span>4</span>
<span>3</span>
<span>1</span>
В идеале я не хочу проверять каждый атрибут, если он имеет значение. Мне было интересно, могу ли я как-то установить порядок своего дисплея? Или мне нужно будет сделать это явно и повторить тест if, как в:
<xsl:template match="Element">
<xsl:if test="string(./@1)>
<span>
<xsl:value-of select="./@1"/><br/>
</span>
</xsl:if>
...
<xsl:if test="string(./@4)>
<span>
<xsl:value-of select="./@4"/><br/>
</span>
</xsl:if>
</xsl:template>
Что можно сделать в этом случае?