XSLT 1.0 Idiom для тернарного if?

Эта программа на Java использует тернарный if, чтобы отображать логические значения в выходные строки: ("*" для истины, пустая строка для ложный).

public class ternary {
  public static void main(String[] args) {
    boolean flags[]={true,false,true};
    for (boolean f : flags) {
      System.out.println(f?"*":"");
    }
  }
}

Таким образом, вывод будет *, [пусто], *.

У меня есть входной XML-документ, что-то вроде:

<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="change.xsl"?>
<root>
  <change flag="true"/>
  <change flag="false"/>
  <change flag="true"/>
</root>

И у меня есть следующий шаблон XSLT, который сопоставляет true с '*' и false с '' (это работает):

<xsl:template match="change">
  <xsl:variable name="flag" select="translate(substring(@flag,1,1),'tf','*')"/>
  <xsl:value-of select="$flag"/>
</xsl:template>

Есть ли более краткая версия это?

a) Могу ли я автоматически получить значение логического истина | ложь непосредственно из строки «истина | ложь»? б) Существует ли конструкция (xpath?) для сопоставления логического значения true | false с '*', ''?

8
задан monojohnny 12 January 2012 в 10:06
поделиться