CORRECÇÃO: Uma exceção System.Xml.Xsl.XsltException ocorre ao tentar executar uma transformação XSLT usando uma folha de estilos XSLT que usa a função de número de formato

Traduções deste artigo Traduções deste artigo
ID do artigo: 832757 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sumário

você criar uma folha de estilo XSLT (Extensible Stylesheet Language Transformation) que usa a função número de formato . No Microsoft Visual Studio. NET, quando você executa uma transformação XSLT que usa esta folha de estilos para tentar converter números positivos para seqüências de caracteres, ocorre uma exceção System.Xml.Xsl.XsltException. Para resolver o problema, baixe e instale um hotfix. Para obter o hotfix, contate o Atendimento Microsoft.

Sintomas

Você pode criar uma linguagem de folha de estilos extensível folhas de estilo Transformation (XSLT) que usa a função número de formato . No Microsoft Visual Studio. NET, quando você tenta executar uma transformação XSLT usando esta folha de estilos para converter números positivos em seqüências de caracteres, você receber a seguinte mensagem de erro:
Ocorreu uma exceção sem tratamento do tipo 'System.Xml.Xsl.XsltException' na system.xml.dll
Se você tratar a exceção para exibir a exceção interna e a mensagem de exceção, você receberá a seguinte saída:
System.ArgumentException: NumberGroupSizes
Nome do parâmetro: cada elemento na matriz valor deve estar entre um e nove, exceto para o último elemento, que pode ser zero.
em System.Globalization.NumberFormatInfo.CheckGroupSize (propName String, Int32 [] groupSize)
em System.Xml.Xsl.XsltCompileContext.FormatNumber (Double valor formatPattern String, String formatName)
em System.Xml.Xsl.FuncFormatNumber.Invoke (XsltContext xsltContext, Object [] args, XPathNavigator docContext)
em System.Xml.XPath.XsltFunction.InvokeFunction (XPathNavigator qy, XPathNodeIterator iterador)

Falha na função 'format-number()'.

Resolução

Um hotfix suportado agora está disponível da Microsoft, mas destina-se somente a corrigir o problema descrito neste artigo. Aplique-o somente nos sistemas que apresentarem esse problema específico. Esta correcção poderá submetida a testes adicionais. Portanto, se você não tiver sido gravemente afetado por esse problema, recomendamos que você aguarde o próximo service pack que contém esse hotfix.

Para resolver esse problema imediatamente, contate o Atendimento Microsoft para obter o hotfix. Para obter uma lista completa de telefones do Atendimento Microsoft e informações sobre os custos de suporte da, visite o seguinte site:
http://support.microsoft.com/contactus/?ws=support
Observação Em alguns casos, as taxas cobradas pelas ligações para chamadas de suporte podem ser canceladas se um profissional de suporte da Microsoft determinar que uma atualização específica resolverá o problema. Os custos normais de suporte serão aplicados a questões e problemas que não se qualificam à atualização específica em questão de suporte adicionais.A versão em inglês deste hotfix apresenta os atributos de arquivo (ou posteriores) listados na tabela a seguir. As datas e horas desses arquivos são listadas na acordo hora universal coordenada (UTC). Quando você exibe as informações do arquivo, ele é convertido para a hora local. Para encontrar a diferença entre o UTC e a hora local, use a guia fuso horário na ferramenta Data e hora no painel de controle.
   Date         Time   Version            Size    File name
   --------------------------------------------------------------
   03-Dec-2003  19:43  1.1.4322.978    1,339,392  System.xml.dll

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados na seção "Aplica-se a".

Mais Informações

Etapas para reproduzir o comportamento

  1. Criar um projeto Console Application

    1. Inicie o Microsoft Visual Studio .NET 2003.
    2. No menu arquivo , aponte para novo e, em seguida, clique em Project .
    3. Em Project Types , clique em projetos translation from VPE for Csharp Visual e, em seguida, clique em Aplicativo de console em modelos .
    4. Na caixa nome , digite FormatNumConsole .
    5. Clique em OK . Por padrão, a janela de código Class1.cs abre.
  2. Criar uma folha de estilos XSLT que usa a função número de formato

    1. No Solution Explorer, clique com o botão direito do mouse FormatNumConsole , aponte para Add e, em seguida, clique em Add New Item . A caixa de diálogo Add New Item - FormatNumConsole aparece.
    2. Em categorias , clique em Itens de projeto local .
    3. Em modelos , clique em XSLT arquivo .
    4. Na caixa nome , digite number.xslt formato e, em seguida, clique em Abrir . A janela de código de formato number.xslt é aberta.
    5. Substituir o código XML existente com o seguinte XML código para criar um modelo para a apresentação dos dados XML:
      <?xml version="1.0" encoding="UTF-8"?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
          <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
          <xsl:template match="/">
              <table>
                  <xsl:apply-templates />
              </table>
          </xsl:template>
          <xsl:template match="number">
              <tr><td><xsl:value-of select="format-number(.,'#,##0;(#,##0)')"/></td></tr>
          </xsl:template>
      </xsl:stylesheet>
  3. Criar um arquivo XML que fornece dados XML

    1. No Solution Explorer, clique com o botão direito do mouse FormatNumConsole , aponte para Add e, em seguida, clique em Add New Item . A caixa de diálogo Add New Item - FormatNumConsole aparece.
    2. Em modelos , clique em XML arquivo .
    3. Na caixa nome , digite number.xml formato e, em seguida, clique em Abrir . A janela de código de formato number.xml é aberta.
    4. Substituir o código XML existente com o seguinte XML código para fornecer dados XML:
      <?xml version="1.0" encoding="UTF-8"?>
      <root>
          <number>1000</number>
      </root>
  4. Tente executar uma transformação XSLT usando a folha de estilos XSLT e o arquivo XML

    1. Alternar para a janela de código de Class1.cs.
    2. Substitua o código existente com o seguinte código para usar a classe XslTransform para transformar os dados XML usando a folha de estilos XSLT.

      Observação No código a seguir, use os caminhos de arquivo apropriado nas chamadas para o construtor XPathDocument e o método xsltProcessor.Load :
      using System;
      using System.Xml;
      using System.Xml.XPath;
      using System.Xml.Xsl;
      using System.IO;
      using System.Text;
      
      namespace FormatNumConsole
      {
          class Class1
          {
              [STAThread]
              static void Main(string[] args)
              {
                  try
                  {
                      StringBuilder sb = new StringBuilder();
                      StringWriter sw = new StringWriter(sb);
      
                      // Load the XML data that you want to transform.
                      XPathDocument xmlDoc = new XPathDocument("C:\\FormatNumConsole\\format-number.xml");
      
                      // Load the XSLT style sheet that uses the format-number function.
                      XslTransform xsltProcessor = new XslTransform();
                      xsltProcessor.Load("C:\\FormatNumConsole\\format-number.xslt");
      
                      // Transform the XML data, and then send the output to the console.
                      xsltProcessor.Transform(xmlDoc,null,sw,null);
                  }
                  catch(Exception ex)
                  {
                      // Display the inner exception and the exception message.
                      Console.WriteLine(ex.InnerException.ToString());
                      Console.WriteLine();
                      Console.WriteLine(ex.Message);
                      Console.ReadLine();
                  }
              }
          }
      }
    3. Criar o aplicativo e, em seguida, executar o aplicativo. A saída mencionada na seção "Sintomas" aparecerá em uma janela do console.

Referências

Para obter informações adicionais, clique nos números abaixo para ler os artigos na Base de dados de Conhecimento da Microsoft:
824684Descrição da terminologia padrão que é usada para descrever as atualizações de software
307494Como aplicar uma transformação em XSL para XML para fluxo contínuo usando o Visual translation from VPE for Csharp .NET
Para obter mais informações, visite os seguintes sites do Microsoft Developer Network (MSDN) da:
Classe XsltException
http://msdn2.microsoft.com/en-us/library/system.xml.xsl.xsltexception(vs.71).aspx
função de número de formato
http://msdn2.microsoft.com/en-us/library/ws343esk.aspx
Classe XslTransform
http://msdn2.microsoft.com/en-us/library/system.xml.xsl.xsltransform(vs.71).aspx

Propriedades

ID do artigo: 832757 - Última revisão: segunda-feira, 21 de maio de 2007 - Revisão: 2.4
A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 1.1
Palavras-chave: 
kbmt kbqfe kbhotfixserver kbbug kbformat kbstyle kbxml kbsample kberrmsg kbcode kbfix KB832757 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: 832757

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