CORRECÇÃO: Uma excepção System.Xml.xsl.XsltException ocorre quando tenta efectuar uma transformação XSLT utilizando uma folha de estilos XSLT que utiliza a função do número de formato

Traduções de Artigos Traduções de Artigos
Artigo: 832757 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

cria uma folha de estilos Extensible Stylesheet Language Transformation (XSLT) que utiliza a função do número de formato . No Microsoft Visual Studio. NET, quando efectua uma transformação XSLT que utiliza esta folha de estilos para tentar converter números positivos para cadeias, ocorre uma excepção System.Xml.xsl.XsltException. Para resolver o problema, transfira e instale uma correcção. Para obter a correcção, contacte o suporte técnico da Microsoft.

Sintomas

Pode criar uma Extensible Stylesheet Language Transformation (XSLT) folha de estilos que utiliza a função do número de formato . No Microsoft Visual Studio. NET, quando tenta efectuar uma transformação XSLT utilizando esta folha de estilos para converter números positivos cadeias, receberá a seguinte mensagem de erro:
Ocorreu uma excepção não processada do tipo 'System.Xml.Xsl.XsltException' no system.xml.dll
Se processar a excepção para apresentar a excepção interna e a mensagem de excepção, receberá a seguinte saída:
System.ArgumentException: NumberGroupSizes
Nome do parâmetro: cada elemento na matriz valor deve estar entre um e nove, excepto para o último elemento, pode ser zero.
em System.Globalization.NumberFormatInfo.CheckGroupSize (cadeia propName, Int32 [] groupSize)
em System.Xml.xsl.XsltCompileContext.FormatNumber (duplo valor cadeia formatPattern, formatName cadeia)
em System.Xml.xsl.FuncFormatNumber.Invoke (XsltContext xsltContext, Object [] argumentos, XPathNavigator docContext)
em System.Xml.XPath.XsltFunction.InvokeFunction (XPathNavigator qy, XPathNodeIterator iterador)

Função 'format-number()' falhou.

Resolução

Agora é disponibilizada pela Microsoft uma correcção suportada, mas destina-se apenas a corrigir o problema descrito neste artigo. Aplique-a apenas em sistemas que tenham este problema específico. Esta correcção poderá submetida a testes adicionais. Por conseguinte, se não estiver a ser gravemente afectado por este problema, recomendamos que aguarde pelo próximo service pack que contenha esta correcção.

Para resolver este problema imediatamente, contacte o suporte técnico da Microsoft para obter a correcção. Para obter uma lista completa de números de telefone do suporte técnico da Microsoft e informações sobre os custos de suporte, visite o seguinte Web site da Microsoft:
http://support.microsoft.com/contactus/?ws=support
Nota Em casos especiais, os custos normalmente inerentes às chamadas de suporte poderão ser anulados, se um técnico de suporte da Microsoft determinar que uma actualização específica resolverá o problema. Os custos normais do suporte serão aplicados a problemas adicionais e questões de suporte que não se enquadrem na atualização específica em questão.A versão inglesa desta correcção tem os atributos de ficheiro (ou posteriores) listados na seguinte tabela. As datas e horas destes ficheiros são indicadas no formato de universal hora (UTC) coordenada Coordinated. Quando visualiza as informações do ficheiro, é convertido para a hora local. Para determinar a diferença entre a UTC e a hora local, utilize o separador fuso horário na ferramenta Data e hora no painel de controlo.
   Date         Time   Version            Size    File name
   --------------------------------------------------------------
   03-Dec-2003  19:43  1.1.4322.978    1,339,392  System.xml.dll

Ponto Da Situação

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

Mais Informação

Passos para reproduzir o comportamento

  1. Crie um projecto de aplicação da consola

    1. Inicie o Microsoft Visual Studio .NET 2003.
    2. No menu ficheiro , aponte para Novo e, em seguida, clique em projecto .
    3. Em Project Types , clique em Visual C# Projects e clique em Aplicação de consola em modelos .
    4. Na caixa nome , escreva FormatNumConsole .
    5. Clique em OK . Por predefinição, a janela de código Class1.cs é aberta.
  2. Crie uma folha de estilos XSLT que utiliza a função do número de formato

    1. No Solution Explorer, clique com o botão direito do rato FormatNumConsole , aponte para Adicionar e, em seguida, clique em Adicionar novo item . A caixa de diálogo Add New Item - FormatNumConsole aparece.
    2. Em categorias , clique em Itens do projecto local .
    3. Em modelos , clique em XSLT ficheiro .
    4. Na caixa nome , escreva 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 XML seguinte código para criar um modelo para a apresentação de 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 ficheiro XML que fornece dados XML

    1. No Solution Explorer, clique com o botão direito do rato FormatNumConsole , aponte para Adicionar e, em seguida, clique em Adicionar novo item . A caixa de diálogo Add New Item - FormatNumConsole aparece.
    2. Em modelos , clique em XML ficheiro .
    3. Na caixa nome , escreva 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 XML seguinte código para fornecer dados XML:
      <?xml version="1.0" encoding="UTF-8"?>
      <root>
          <number>1000</number>
      </root>
  4. Tente efectuar uma transformação XSLT utilizando a folha de estilos XSLT e o ficheiro XML

    1. Mudar para a janela Class1.cs código.
    2. Substitua o código existente com o código seguinte para utilizar a classe XslTransform para transformar dados XML através da utilização de folha de estilos XSLT.

      Nota O seguinte código, utilizar os caminhos de ficheiro adequado nas chamadas para o Construtor de 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. Compilar a aplicação e, em seguida, execute a aplicação. O resultado é mencionado na secção "Sintomas" aparece numa janela da consola.

Referências

Para obter informações adicionais, clique números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft:
824684Descrição da terminologia padrão utilizada para descrever actualizações de software da Microsoft
307494Como aplicar uma transformação XSL XML para transmissão em sequência utilizando o Visual C#. NET
Para obter mais informações, visite os seguintes Web sites da Microsoft Developer Network (MSDN):
Classe XsltException
http://msdn2.microsoft.com/en-us/library/system.xml.xsl.xsltexception(vs.71).aspx
função do 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

Artigo: 832757 - Última revisão: 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 revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes 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