如何在XSLT中订购?

时间:2014-07-17 18:46:15

标签: xml xslt

我需要订购我的XSLT。

示例:

<td>
<xsl:variable name="Type">
    <xsl:value-of select="/Rows/Row[@Group = $group and (@Type_Typ_x='Type1' or @Type_Typ_x='Type2')]/@Type_Typ_x"/>
</xsl:variable>

<xsl:value-of select="/Rows/Row[@Group = $group and (@Type_Typ_x='Type1' or @Type_Typ_x='Type2')]@Title" disable-output-escaping="yes"/>

我想只显示Type 1,如果没有,则显示Type2。 任何人都可以帮助我吗?

抱歉我的英文。 非常感谢你......

1 个答案:

答案 0 :(得分:0)

获得&#39; Type1&#39;如果它存在,你只需这样做

<xsl:value-of select="Rows/Row[@Type_Typ_x='Type1']/@Title" />

并获得&#39; Type2&#39;如果&#39; Type1&#39;不存在,你可以这样做

<xsl:value-of select="Rows[not(Row[@Type_Typ_x='Type1'])]/Row[@Type_Typ_x='Type2']/@Title" />

所以,你可以将这两个语句一个接一个地放在一起,因为只有一个语句会返回一个值。或者你可以这样组合:

<xsl:value-of select="Rows/Row[@Type_Typ_x='Type1']/@Title
                      |Rows[not(Row[@Type_Typ_x='Type1'])]/Row[@Type_Typ_x='Type2']/@Title" />

另一种方法可能是使用 xsl:choose 语句

<xsl:choose>
   <xsl:when test="Rows/Row[@Type_Typ_x='Type1']">
       <xsl:value-of select="Rows/Row[@Type_Typ_x='Type1']/@Title" />
   </xsl:when>
   <xsl:when test="Rows/Row[@Type_Typ_x='Type2']">
       <xsl:value-of select="Rows/Row[@Type_Typ_x='Type2']/@Title" />
   </xsl:when>
</xsl:choose>

只要发现一个 xsl:when 为真,其他人就不会被评估,无论他们是否属实。

最后,如果你能保证&#39; Type1&#39;记录总是出现在&#39; Type2&#39; XML中的记录,然后这将工作:

<xsl:value-of select="Rows/Row[@Type_Typ_x='Type1' or @Type_Typ_x='Type2'][1]/@Title"/>