Compartilhar via


Conditional Templates

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Modelos condicionais são saída somente se determinadas condições existirem no documento de origem. Modelos condicionais são definidos com o < if > e < xsl:choose > Elementos.

No seguinte dados do Portfólio, o "stock" elemento tem um atributo nomeado "Exchange". Você pode desejar gerar alguns saída somente quando este atributo tem um determinado valor.

<?xml version="1.0"?>
<portfolio xmlns:dt="urn:schemas-microsoft-com:datatypes">
  <stock exchange="nyse">
    <name>zacx corp</name>
    <symbol>ZCXM</symbol>
    <price dt:dt="number">28.875</price>
  </stock>
  <stock exchange="nasdaq">
    <name>zaffymat inc</name>
    <symbol>ZFFX</symbol>
    <price dt:dt="number">92.250</price>
  </stock>
  <stock exchange="nasdaq">
    <name>zysmergy inc</name>
    <symbol>ZYSZ</symbol>
    <price dt:dt="number">20.313</price>
  </stock>
</portfolio>

Você pode criar facilmente outra linha na tabela na qual a local valor de atributo. No entanto, se você desejar para indicar a ações de uma troca particular, não por uma linha completamente nova tabela, mas observando-los com um asterisco (*). O < if > elemento fornece um mecanismo para condicionalmente inserindo estrutura em árvore de saída.

No seguinte exemplo, o < if > elemento insere um asterisco após o símbolo para essas ações listadas na stock NASDAQ troca. O < if > conteúdo pode ser texto simples, como neste exemplo, ou qualquer estrutura permitido pelo XSLT, such as elementos ou atributos.

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:template match="/">
    <HTML>
      <BODY>
        <TABLE BORDER="2">
          <TR>
            <TD>Symbol</TD>
            <TD>Name</TD>
            <TD>Price</TD>
          </TR>
          <xsl:for-each select="portfolio/stock">
            <TR>
            <TD>
                <xsl:value-of select="symbol"/>
                
              </TD>
              <TD><xsl:value-of select="name"/></TD>
              <TD><xsl:value-of select="price"/></TD>
            </TR>
          </xsl:for-each>
        </TABLE>

        <P>* Listed on Nasdaq stock exchange</P>
      </BODY>
    </HTML>
  </xsl:template>
</xsl:stylesheet>

O testar atributo leva um padrão. Se a consulta descrita pelo padrão seleciona uma ou mais nós, o <IF> modelo será inserido. Se a seleção estiver vazio, o condicional será ignorado. Neste maiúsculas e minúsculas, a consulta verifica se o < stock > elemento tem um Troca atributo e em seguida, verifica que o valor da Troca atributo é igual a "Nasdaq". Para obter mais informações sobre qualificação um padrão usando colchetes ([]) e construir padrões que comparam valores, consulte Introdução à sintaxe do XPath.

Escolhendo alternativas

O < xsl:choose > elemento fornece um mecanismo para " tanto/ou " processamento. < xsl:choose > Contém uma série de < xsl: when > Elementos que são testados em ordem de parte superior para inferior até que uma correspondência seja encontrada. Um < xsl:Otherwise > elemento pode ser usado para inserir um modelo se nenhuma correspondência for encontrada.

O seguinte codificar pode ser adicionado à acima exemplo para codificar com cores de linhas por preço. 0-25 é exibidas em Verde; 25-50 são exibidos em azul; e 50 ou superior é exibidos em vermelho. A cor é alterada por condicionalmente gerando uma parte do valor da Style atributo na linha de tabela.

<TR>
  <xsl:attribute name="STYLE">color:
    <xsl:choose>
      <xsl:when test="price[. < 25]">green</xsl:when>
      <xsl:when test="price[. < 50]">blue</xsl:when>
      <xsl:otherwise>red</xsl:otherwise>
    </xsl:choose>
  </xsl:attribute>
  <TD>
    ...