Update: Tritt eine System.Xml.Xsl.XsltException-Ausnahme auf, wenn Sie versuchen, eine XSLT-Transformation mithilfe von XSLT-Stylesheet, die die Format-Number-Funktion verwendet, ausführen

SPRACHE AUSWÄHLEN SPRACHE AUSWÄHLEN
Artikel-ID: 832757 - Produkte anzeigen, auf die sich dieser Artikel bezieht
Alles erweitern | Alles schließen

Auf dieser Seite

Zusammenfassung

Sie eine Extensible Stylesheet Language Transformation (XSLT)-Stylesheet erstellen, die die Format-Number -Funktion verwendet. In Visual Studio .NET beim Durchführen einer XSLT-Transformation, die dieses Stylesheet, verwendet um positive Zahlen in Zeichenfolgen konvertieren tritt eine System.Xml.Xsl.XsltException-Ausnahme. Downloaden Sie und installieren Sie einen Hotfix, um das Problem zu beheben. Den Hotfix erhalten, wenden Sie sich an Microsoft Product Support Services.

Problembeschreibung

Können Sie eine Extensible Stylesheet Language Transformation (XSLT)-Stylesheet, das die Format-Number -Funktion verwendet. Wenn Sie versuchen, eine XSLT-Transformation mithilfe dieses Stylesheet um positive Zahlen in Zeichenfolgen konvertieren durchführen in Visual Studio .NET wird den folgenden Fehlermeldung:
Eine nicht behandelte Ausnahme des Typs 'System.Xml.Xsl.XsltException' ist in system.xml.dll aufgetreten
Wenn Sie die Ausnahme zum Anzeigen der inneren Ausnahme und die Ausnahmemeldung behandeln, wird sinngemäß die folgende Ausgabe:
System.ArgumentException: NumberGroupSizes
Parametername: alle Element im Wertearray muss zwischen eins und neun außer für das letzte Element, das 0 (null) sein kann sein.
am System.Globalization.NumberFormatInfo.CheckGroupSize (PropName String, Int32 [] GroupSize)
am System.Xml.Xsl.XsltCompileContext.FormatNumber (Double Wert, Zeichenfolge FormatPattern, FormatName Zeichenfolge)
am System.Xml.Xsl.FuncFormatNumber.Invoke (XsltContext XsltContext, Object [] Args, XPathNavigator DocContext)
am System.Xml.XPath.XsltFunction.InvokeFunction (XPathNavigator Qy, XPathNodeIterator Iterator)

Fehler bei Funktion 'format-number()'.

Lösung

Ein Hotfix zur Behebung dieses Problems ist inzwischen bei Microsoft erhältlich; dieser Hotfix wurde jedoch ausschließlich zur Behebung des in diesem Artikel beschriebenen Problems entwickelt. Deshalb sollten Sie nur Systeme aktualisieren, bei denen dieses spezielle Problem auftritt. Dieser Hotfix wird unter Umständen zu einem späteren Zeitpunkt weiteren Tests unterzogen. Wenn Sie durch dieses Problem nicht schwerwiegend betroffen sind, empfiehlt Microsoft daher, auf das nächste Servicepack warten, das diesen Hotfix enthält wird.

Wenn Sie das Problem sofort beheben möchten, wenden Sie sich an Microsoft Product Support Services, um den Hotfix zu erhalten. Eine vollständige Liste mit Telefonnummern der Microsoft-Produktsupport und Informationen Supportkosten der folgenden Microsoft-Website:
http://support.microsoft.com/contactus/?ws=support
Hinweis: PLEASE DO NOT TRANSLATE and DELETE THIS PASSAGE. IT DOES NOT APPLY TO GERMANY.Die englische Version dieses Hotfixes weist die in der nachstehenden Tabelle aufgelisteten Dateiattribute (oder höher) auf. Die Datums- und Uhrzeitangaben für diese Dateien werden in Coordinated Universal Time () angegeben. Wenn Sie sich die Dateiinformationen ansehen, werden diese Angaben in die lokale Zeit konvertiert. Um die Differenz zwischen UTC und der Ortszeit zu ermitteln verwenden Sie die Registerkarte Zeitzone des Tools ? Datum und Uhrzeit in der Systemsteuerung.
   Date         Time   Version            Size    File name
   --------------------------------------------------------------
   03-Dec-2003  19:43  1.1.4322.978    1,339,392  System.xml.dll

Status

Microsoft hat bestätigt, dass dies ein Problem in Microsoft-Produkten handelt, die im Abschnitt "Gilt für" aufgeführt sind.

Weitere Informationen

Schritte zum Reproduzieren des Verhaltens

  1. Erstellen Sie ein Konsolenanwendungsprojekt

    1. Starten Sie Microsoft Visual Studio .NET 2003.
    2. Zeigen im Menü Datei auf neu , und klicken Sie dann auf Projekt .
    3. Klicken Sie unter Projekttypen auf Visual C#-Projekte und klicken Sie dann unter Vorlagen auf Konsolenanwendung .
    4. Geben Sie im Feld Name FormatNumConsole .
    5. Klicken Sie auf OK . Standardmäßig öffnet das Codefenster für Class1.cs .
  2. Erstellen Sie eine XSLT-Stylesheet, die die Format-Number-Funktion verwendet

    1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf FormatNumConsole , zeigen Sie auf Hinzufügen und klicken Sie dann auf Neues Element hinzufügen . Das Dialogfeld Neues Element hinzufügen - FormatNumConsole angezeigt wird.
    2. Klicken Sie unter Kategorien auf Lokale Projektelemente .
    3. Klicken Sie unter Vorlagen auf XSLT-Datei .
    4. Geben Sie in das Feld Name die Format-number.xslt und klicken Sie dann auf Öffnen . Das Code-Fenster Format-number.xslt wird geöffnet.
    5. Ersetzen der vorhandene XML-Code mit dem folgenden XML-code zum Erstellen einer Vorlage für die Darstellung von XML-Daten:
      <?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. Erstellen Sie eine XML-Datei, die XML-Daten bereitstellt

    1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf FormatNumConsole , zeigen Sie auf Hinzufügen und klicken Sie dann auf Neues Element hinzufügen . Das Dialogfeld Neues Element hinzufügen - FormatNumConsole angezeigt wird.
    2. Klicken Sie unter Vorlagen auf XML-Datei .
    3. Geben Sie in das Feld Name die Format-number.xml und klicken Sie dann auf Öffnen . Das Code-Fenster Format-number.xml wird geöffnet.
    4. Ersetzen der vorhandene XML-Code mit dem folgenden XML-code an XML-Daten:
      <?xml version="1.0" encoding="UTF-8"?>
      <root>
          <number>1000</number>
      </root>
  4. Versuchen Sie, eine XSLT-Transformation mithilfe von XSLT-Stylesheet und die XML-Datei auszuführen

    1. Wechseln Sie in Class1.cs Code-Fenster.
    2. Ersetzen Sie den vorhandenen Code, mit dem folgenden Code für die XslTransform -Klasse verwenden, um die XML-Daten mithilfe von XSLT-Stylesheet zu transformieren.

      Hinweis: Im folgenden Code verwenden Sie die geeignete Dateipfade in der Aufrufe der XPathDocument -Konstruktor und die xsltProcessor.Load -Methode:
      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. Erstellen Sie die Anwendung, und führen Sie die Anwendung. Die Ausgabe die im Abschnitt "Problembeschreibung" erwähnte wird in einem Konsolenfenster angezeigt.

Informationsquellen

Weitere Informationen finden Sie in den folgenden Artikeln der Microsoft Knowledge Base:
824684Erläuterung von Standardbegriffen bei Microsoft Softwareupdates
307494Anwenden einer XSL-Transformation auf XML für streaming mithilfe von Visual c# .NET
Informationen finden Sie auf den folgenden Websites von Microsoft Developer Network (MSDN):
XsltException-Klasse
http://msdn2.microsoft.com/en-us/library/system.xml.xsl.xsltexception(vs.71).aspx
Format-Number-Funktion
http://msdn2.microsoft.com/en-us/library/ws343esk.aspx
XslTransform-Klasse
http://msdn2.microsoft.com/en-us/library/system.xml.xsl.xsltransform(vs.71).aspx

Eigenschaften

Artikel-ID: 832757 - Geändert am: Montag, 21. Mai 2007 - Version: 2.4
Die Informationen in diesem Artikel beziehen sich auf:
  • Microsoft .NET Framework 1.1
Keywords: 
kbmt kbqfe kbhotfixserver kbbug kbformat kbstyle kbxml kbsample kberrmsg kbcode kbfix KB832757 KbMtde
Maschinell übersetzter Artikel
Wichtig: Dieser Artikel wurde maschinell und nicht von einem Menschen übersetzt. Die Microsoft Knowledge Base ist sehr umfangreich und ihre Inhalte werden ständig ergänzt beziehungsweise überarbeitet. Um Ihnen dennoch alle Inhalte auf Deutsch anbieten zu können, werden viele Artikel nicht von Menschen, sondern von Übersetzungsprogrammen übersetzt, die kontinuierlich optimiert werden. Doch noch sind maschinell übersetzte Texte in der Regel nicht perfekt, insbesondere hinsichtlich Grammatik und des Einsatzes von Fremdwörtern sowie Fachbegriffen. Microsoft übernimmt keine Gewähr für die sprachliche Qualität oder die technische Richtigkeit der Übersetzungen und ist nicht für Probleme haftbar, die direkt oder indirekt durch Übersetzungsfehler oder die Verwendung der übersetzten Inhalte durch Kunden entstehen könnten.
Den englischen Originalartikel können Sie über folgenden Link abrufen: 832757
Microsoft stellt Ihnen die in der Knowledge Base angebotenen Artikel und Informationen als Service-Leistung zur Verfügung. Microsoft übernimmt keinerlei Gewährleistung dafür, dass die angebotenen Artikel und Informationen auch in Ihrer Einsatzumgebung die erwünschten Ergebnisse erzielen. Die Entscheidung darüber, ob und in welcher Form Sie die angebotenen Artikel und Informationen nutzen, liegt daher allein bei Ihnen. Mit Ausnahme der gesetzlichen Haftung für Vorsatz ist jede Haftung von Microsoft im Zusammenhang mit Ihrer Nutzung dieser Artikel oder Informationen ausgeschlossen.

Ihr Feedback an uns

 

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