如何以特定顺序编写元素属性而无需明确写入?按特定顺序排列属性以便输出
考虑:
<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>
理想的情况下,我不想要测试,如果它的每个属性已经有了价值。我想知道如果我能以某种方式设置我的显示顺序?或者我需要明确地做,并重复如果测试如下:
<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>
在这种情况下可以做什么?
谢谢各位的回复。 我不是很清楚。我并不需要通过名称对属性进行排序,而是自己指定一个订单。 说一个文档将需要按顺序1,2,3,4显示它们。另一个按顺序2,3。另一个可以说是3,1,2,4。 我想知道是否可以存储以某种方式确定属性名称的特定顺序......然后通过它们迭代。 基本上,为了显示一系列属性值,有一些简洁和非常灵活的方法。 希望有道理? – DashaLuna 2010-02-18 16:55:01