CORRECÇÃO: O elemento xsl:number gera uma exceção erro quando o formato padrão é definido para "A.1"

Traduções deste artigo Traduções deste artigo
ID do artigo: 318360 - Exibir os produtos aos quais esse artigo se aplica.
Este artigo foi arquivado. É oferecido "como está" e não será mais atualizado.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Quando o formato padrão é definido como "A.1", xsl:number gera a seguinte mensagem de erro de exceção:
Uma exceção sem tratamento do tipo 'System.ArgumentOutOfRangeException' ocorreu no mscorlib.dll

Obter informações adicionais: o índice estava fora do intervalo. Deve ser não-negativo e menor que o tamanho da coleção.

Situação

Esse bug foi corrigido no Microsoft .NET Framework Class Libraries 1.1.

Mais Informações

O elemento xsl:number insere um número formatado na árvore de resultado. O número a ser inserido é especificado por uma expressão que está contida no atributo value. A expressão é avaliada e o objeto resultante é convertido para um número. O número é arredondado para um número inteiro, convertido em uma seqüência de caracteres e, em seguida, inserido na árvore de resultado.

Um formato é uma seqüência de tokens que especifica o formato a ser usado para cada número na lista. Se nenhum símbolo de formato existir, será usado o valor padrão de 1. Esse valor gera uma seqüência (por exemplo, 1 2... 10 11 12...). Cada número após o primeiro é separado do número anterior pelo token de separador que precede o token de formato é usado para formatar esse número. Se nenhum símbolo separador existir, um ponto (.) é usado.

Passos para reproduzir o problema

  1. No Microsoft Visual translation from VPE for Csharp. NET, crie um novo console do projeto de aplicativo.
  2. Cole o seguinte XML em um arquivo de texto e, em seguida, salve o arquivo como C:\Test.xml:
    <?xml version='1.0'?>
    <bookstore xml:lang="en-usabcd" specialty="novel" xmlns:my="http://www.ns1">
    	<book style="autobiography">
        <published>1953-09-22</published>
    	<title>Book 1</title>
    		<author id = "a1">
    			<first-name>Joe</first-name>
    			<last-name>Bob</last-name>
    			<award>Trenton Literary Review Honorable Mention</award>
    		</author>
    	</book>
    	<book style="textbook">
            <published>1999-01-01</published>
    		<title>Book 2</title>
    		<author id = "2">
    			<first-name>Mary</first-name>
    			<last-name>Bob</last-name>
    			<publication>
    				Publication 1
    				<first-name>Mary</first-name>
    				<last-name>Bob</last-name>
    			</publication>
    		</author>
       		<author id = "3">
    			<first-name>Second</first-name>
    			<last-name>Author</last-name>
    		</author>
    	</book>
    	<magazine style="glossy" frequency="monthly">
    		<title>Road and Track</title>
    		<subscription price="24" per="year"/>
    		<special_edition per_year="1">Yes</special_edition>
    	</magazine>
    	
    </bookstore>
    
    					
  3. Cole a XSLT a seguir em um arquivo de texto e, em seguida, salve o arquivo como C:\Test.xsl:
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:my="http://my.com">
    
    <xsl:output encoding="UTF-8" indent="yes" omit-xml-declaration="yes"/>
    
    	<xsl:template match="/">
    	    <xsl:apply-templates select="//last-name" mode="formatting-tests"/>
    	</xsl:template>
    
    	<xsl:template match="last-name" mode="formatting-tests">
    
    		<xsl:number level="multiple" count="last-name | publication | author | book" format="A.1"/><xsl:text>, </xsl:text>
    
    		<xsl:value-of select="concat(../first-name, ' ', .)"/>
    
    	</xsl:template>
    
    </xsl:stylesheet>
    					
  4. Use os namespaces a seguir:
    using System;
    using System.Xml;
    using System.Xml.XPath;
    using System.Xml.Xsl;
    using System.IO;
    					
  5. Cole o seguinte código no principal void estático (seqüência de caracteres [] args) :
    XmlDocument xmldoc = new XmlDocument ();
    //Load the XML document.
    xmldoc.Load("c:\\test.xml");
    
    XPathNavigator xpathdoc;
    xpathdoc = xmldoc.CreateNavigator();
    
    XslTransform xsltdoc = new XslTransform();
    xsltdoc.Load("c:\\test.xsl");
    //Create a FileStream to store the XSL output.
    FileStream fs = new FileStream("test2.xml", FileMode.Create);
    //Transform the XML document.
    xsltdoc.Transform(xpathdoc,null,fs);
    					
  6. Criar e executar o projeto. Observe que o erro ocorre no método de transformação do objeto XslTransform . Você espera que a seguinte saída:
    A.1.1, Joe BobB.1.1, Mary BobB.1.2.1, Mary BobB.2.1, Second Author
    					

Referências

Para obter mais informações sobre xsl:number , consulte o seguinte site:
http://www.w3.org/TR/xslt11/#number

Propriedades

ID do artigo: 318360 - Última revisão: quinta-feira, 24 de outubro de 2013 - Revisão: 2.2
A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 1.0
Palavras-chave: 
kbnosurvey kbarchive kbmt kbbug kbpending KB318360 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 318360

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com