<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>
有没有一种方法来简化上面的代码与条件?对于给定对象的每个类值,都会有数十行附加属性。这些属性根据类的值形成集合。 0-99级有一组额外标签,每秒100-199级,当这些额外标签集中的一个发生变化时形成维护噩梦。XSLT条件/变量范围
我正在考虑这样一个解决方案:
<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>
但当然这失败,因为OutputClass类变量不是在同一范围内。任何方式来解决这个问题?
这很混乱。如果您添加示例输入和输出文档,它可能会变得更清晰。 – 2010-07-02 12:31:33
好问题(+1)。在我的答案中看到* real * best解决方案 - 完整的代码和解释。 :) – 2010-07-02 13:28:34