FIX: Un'eccezione System.Xml.Xsl.XsltException si verifica quando si tenta di eseguire una trasformazione XSLT, utilizzando un foglio di stile XSLT che utilizza la funzione Format-Number

Traduzione articoli Traduzione articoli
Identificativo articolo: 832757 - Visualizza i prodotti a cui si riferisce l?articolo.
Espandi tutto | Chiudi tutto

In questa pagina

Sommario

creare un foglio di stile di XSLT (Extensible Stylesheet Language Transformation) che utilizza la funzione format-number . In Microsoft Visual Studio. NET, quando si esegue una trasformazione XSLT che utilizza questo foglio di stile per tenta di convertire i numeri positivi di stringhe, viene generata un'eccezione System.Xml.Xsl.XsltException. Per risolvere il problema, è necessario scaricare e installare un aggiornamento rapido (hotfix). Per ottenere l'hotfix, contattare il servizio supporto tecnico clienti Microsoft.

Sintomi

È possibile creare un Extensible Stylesheet Language foglio di stile di trasformazione (XSLT) che utilizza la funzione format-number . In Microsoft Visual Studio. NET, quando si tenta di eseguire una trasformazione XSLT, utilizzando il foglio di stile per convertire i numeri positivi in stringhe, viene visualizzato il seguente messaggio di errore:
Eccezione non gestita di tipo 'System.Xml.Xsl.XsltException' in system.xml.dll
Se si gestisce l'eccezione per visualizzare l'eccezione interna e il messaggio di eccezione, viene visualizzato il seguente output:
System.ArgumentException: NumberGroupSizes
Nome del parametro: ogni elemento della matrice di valore deve essere compreso tra uno e nove, tranne per l'ultimo elemento, che può essere zero.
in System.Globalization.NumberFormatInfo.CheckGroupSize (proprietà specificata in propName String, Int32 [] groupSize)
in System.Xml.Xsl.XsltCompileContext.FormatNumber (Double valore, formatPattern String, String formatName)
in System.Xml.Xsl.FuncFormatNumber.Invoke (XsltContext xsltContext, Object [] args, docContext XPathNavigator)
in System.Xml.XPath.XsltFunction.InvokeFunction (XPathNavigator qy, iteratori XPathNodeIterator)

Funzione 'Format-Number ()' non riuscita.

Risoluzione

Un hotfix supportato è disponibile da Microsoft, tuttavia è destinato esclusivamente per risolvere il problema descritto in questo articolo. Utilizzarla solo nei sistemi in cui si verifica questo problema specifico. Questo aggiornamento rapido (hotfix) potrebbe essere eseguiti ulteriori test. Se non si è notevolmente interessati da questo problema, si consiglia di attendere il prossimo service pack contenente questo aggiornamento rapido (hotfix) per.

Per risolvere immediatamente questo problema, contattare il servizio supporto tecnico clienti Microsoft per ottenere l'hotfix. Per un elenco completo di numeri di telefono del servizio supporto tecnico clienti Microsoft e per informazioni sui costi dell'assistenza, visitare il seguente sito Web Microsoft:
http://support.microsoft.com/contactus/?ws=support
Nota in casi particolari, le spese normalmente addebitate per le chiamate al Servizio Supporto Tecnico Clienti Microsoft potrebbero essere annullate qualora un addetto del Supporto Tecnico Microsoft dovesse determinare che uno specifico aggiornamento risolverà il problema. I normali costi del Servizio Supporto Tecnico Clienti verranno applicati per eventuali ulteriori domande e problemi che non dovessero rientrare nello specifico aggiornamento in questione.La versione inglese di questo aggiornamento rapido (hotfix) presenta gli attributi di file (o successivi) elencati nella tabella riportata di seguito. Date e ore per questi file sono indicati nella coordinated universal time (UTC). Quando si visualizzano le informazioni sul file, viene convertito in ora locale. Per calcolare la differenza tra ora UTC e l'ora locale, utilizzare la scheda fuso orario dello strumento Data e ora del Pannello di controllo.
   Date         Time   Version            Size    File name
   --------------------------------------------------------------
   03-Dec-2003  19:43  1.1.4322.978    1,339,392  System.xml.dll

Status

Microsoft ha confermato che questo problema riguarda i prodotti sono elencati nella sezione "Si applica a".

Informazioni

Procedura per riprodurre il problema.

  1. Creare un progetto applicazione console

    1. Avviare Microsoft Visual Studio .NET 2003.
    2. Scegliere Nuovo dal menu file , quindi progetto .
    3. In Tipi progetto fare clic su Progetti di C# e quindi fare clic su Applicazione Console in modelli .
    4. Nella casella nome , digitare FormatNumConsole .
    5. Fare clic su OK . Per impostazione predefinita, la finestra del codice di Class1.cs viene aperto.
  2. Creare un foglio di stile XSLT che utilizza la funzione Format-Number

    1. In Esplora soluzioni, fare clic con il pulsante destro del mouse su FormatNumConsole , scegliere Aggiungi , quindi Aggiungi nuovo elemento . Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento - FormatNumConsole .
    2. Nella casella di gruppo categorie fare clic su Elementi del progetto locale .
    3. In modelli , fare clic su XSLT file .
    4. Nella casella nome digitare number.xslt di formato e quindi fare clic su Apri . La finestra del codice number.xslt di formato verrà aperta.
    5. Sostituire il codice XML esistente con il seguente codice XML di codice per creare un modello per la presentazione dei dati 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. Creare un file XML che fornisce i dati XML

    1. In Esplora soluzioni, fare clic con il pulsante destro del mouse su FormatNumConsole , scegliere Aggiungi , quindi Aggiungi nuovo elemento . Verrà visualizzata la finestra di dialogo Aggiungi nuovo elemento - FormatNumConsole .
    2. In modelli , fare clic su XML file .
    3. Nella casella nome digitare number.xml di formato e quindi fare clic su Apri . La finestra del codice number.xml di formato verrà aperta.
    4. Sostituire il codice XML esistente con il seguente codice XML di codice per fornire dati XML:
      <?xml version="1.0" encoding="UTF-8"?>
      <root>
          <number>1000</number>
      </root>
  4. Tenta di eseguire una trasformazione XSLT utilizzando il foglio di stile XSLT e il file XML

    1. Passare alla finestra codice di Class1.cs.
    2. Sostituire il codice esistente con il seguente codice utilizzare la classe XslTransform per trasformare i dati XML utilizzando il foglio di stile XSLT.

      Nota Nel codice riportato di seguito, utilizzare i percorsi di file appropriato nelle chiamate al costruttore XPathDocument e il metodo 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. Generare l'applicazione ed eseguire l'applicazione. L'output menzionato nella sezione "Sintomi" viene visualizzato in una finestra di console.

Riferimenti

Per ulteriori informazioni, fare clic sui numeri degli articoli della Microsoft Knowledge Base riportato di seguito:
824684Descrizione della terminologia standard utilizzata per descrivere gli aggiornamenti software Microsoft
307494Come applicare una trasformazione XSL a XML per i flussi utilizzando Visual C# .NET
Per ulteriori informazioni, visitare il seguente sito Web Microsoft Developer Network (MSDN):
Classe XsltException
http://msdn2.microsoft.com/en-us/library/system.xml.xsl.xsltexception(vs.71).aspx
funzione Format-Number
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

Proprietà

Identificativo articolo: 832757 - Ultima modifica: lunedì 21 maggio 2007 - Revisione: 2.4
Le informazioni in questo articolo si applicano a:
  • Microsoft .NET Framework 1.1
Chiavi: 
kbmt kbqfe kbhotfixserver kbbug kbformat kbstyle kbxml kbsample kberrmsg kbcode kbfix KB832757 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 832757
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

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