So erhalten Sie Elemente ohne Berücksichtigung der Groß- und Kleinschreibung in XML

8

Soweit ich weiß, XML-Elementtypnamen sowie Attributnamen sind Groß- und Kleinschreibung.

Gibt es einen Weg oder einen Trick, um die Groß- und Kleinschreibung zu vermeiden?

Erläuterung : Über XSD wurde eine Grammatik definiert, die für einige Clients zum Hochladen verwendet wird Daten. Die Benutzer - die Content-Generatoren - erstellen XML-Dateien mit verschiedenen Werkzeuge, aber viele von ihnen verwenden Klartext-Editoren oder was auch immer. Manchmal, wenn diese Leute versuchen, ihre Dateien hochzuladen, erhalten sie Inkompatibilitätsfehler. Es ist ein häufiger Fehler, dass sie lowCase- und upperCase-Tags mischen, obwohl dies der Fall ist war immer klar, dass Tags sind Groß-und Kleinschreibung.

Ich habe Zugriff auf die XSD-Datei, die diese Grammatik definiert, und ich kann sie ändern. Die Frage ist, wie man dieses fehleranfällige Groß- / Kleinbuchstaben-Problem vermeidet.

Irgendeine Idee?

Vielen Dank im Voraus!

    
Luixv 15.05.2009, 14:00
quelle

7 Antworten

5

Wenn ich Ihr Problem richtig verstanden habe, können die Fallfehler nur zwischen der Erstellung und dem Hochladen durch ein Analysetool eines Drittanbieters korrigiert werden.

d. XML-Datei & gt; Gegen XSD analysiert und korrigiert & gt; Upload genehmigt

Sie können dies zur Laufzeit ausführen, indem Sie eine Containeranwendung für Ihre Clients entwickeln, in der sie ihre XML-Dateien erstellen. Alternativ können Sie eine Anwendung auf der Serverseite schreiben, die die hochgeladene Datei übernimmt und die Syntax überprüft. So oder so wirst du eine Entscheidung treffen müssen und dann etwas Arbeit machen!

Viel hängt von der Größe des Problems ab. Wenn Sie ähnliche Tags in verschiedenen Fällen in Ihrem XSD haben, z. und Sie erhalten jedoch dann eine komplizierte Lösung, die auf der Zählung der Knoten usw. basiert.

Wenn Sie nur mit Clients arbeiten, die zufällige Fälle für eine XSD verwenden, die nur Kleinbuchstaben enthält, sollten Sie in der Lage sein, die Dateien zu analysieren und alle Tags in Kleinbuchstaben umzuwandeln. Dies setzt voraus, dass der Inhalt zwischen den Tags multi-case ist und Sie nicht nur das gesamte Dokument konvertieren können.

Wie Sie das tun, hängt von der Mechanik Ihrer Situation ab. Offensichtlich wird es einfacher sein, die Kunden dazu zu bringen, ihre eigenen Eingaben zu überprüfen. Wenn dies nicht praktikabel ist, müssen Sie in diesem Prozess ein Gelegenheitsfenster identifizieren, mit dem Sie die Datei vor dem Auftreten von Fehlern in das richtige Format konvertieren können.

Es gibt viel zu viele Wege, um das hier zu diskutieren. Es hängt hauptsächlich von den verfügbaren Fähigkeiten oder Finanzen ab.

    
melkisadek 15.05.2009 14:38
quelle
1

XPath / Xslt-Prozessoren unterscheiden zwischen Groß- und Kleinschreibung. Sie können einen Knoten / ein Attribut nicht auswählen, wenn Sie den falschen Fall angeben.

Wenn Sie den Knotennamen ausgeben wollen und möchten, dass er groß geschrieben wird, können Sie Folgendes tun:

%Vor%     
Rashmi Pandit 15.05.2009 14:11
quelle
1

Wie @Melkisadek sagte, existiert die XSD-Validierung für einen bestimmten Zweck. Wenn Sie Benutzern das Hochladen von Dateien mit ungültigem XML-Code erlauben, muss Ihre Anwendung irgendwann fehlschlagen, wenn auf die Daten in diesen Dateien zugegriffen wird. Darüber hinaus wird der gesamte Zweck einer XSD-Validierung des XML-Eingabeschemas abgelehnt. Wenn Sie bereit sind, auf die gesamte Schemaüberprüfungsfunktion zu verzichten, müssen Sie ein XSLT verwenden, um alle Tags nach Wunsch in Groß- oder Kleinbuchstaben umzuwandeln (siehe @ Rashmis Antwort).

Es wäre analog, einem Benutzer zu erlauben, Sonderzeichen in ein Sozialversicherungsnummer-Eingabefeld einzugeben, nur weil der Benutzer bequemer ist, Sonderzeichen einzugeben (Ja, dieses Beispiel ist albern, könnte sich keinen besseren vorstellen! )

Aus diesem Grund besteht die Lösung meines Erachtens darin, die Schemaüberprüfung so zu lassen, wie sie ist, aber den Benutzern eine Möglichkeit zu bieten, das Schema vor dem Hochladen zu validieren. Wenn es sich beispielsweise um eine Webanwendung handelt, können Sie auf der Seite eine Schaltfläche angeben, die Javascript verwendet, um die Datei anhand Ihres Schemas zu validieren. Alternativ validieren Sie auf dem Server nur, wenn die Datei hochgeladen wird. Stellen Sie in beiden Fällen eine geeignete Rückmeldung bereit, z. B. die Zeilennummer, auf der die fehlerhaften Entitäten liegen, die Zeichenposition und den Grund für das Melden eines Fehlers.

    
Cerebrus 15.05.2009 17:00
quelle
1

In der Theorie könnten Sie versuchen, das XML-Schema zu hacken, um falsch großgeschriebene Elementnamen zu überprüfen.

Dies kann mithilfe des Mechanismus Substitutionsgruppe im XML-Schema erfolgen. Zum Beispiel, wenn Ihr Schema definiert hat:

%Vor%

Dann könnten Sie Folgendes zum XML-Schema hinzufügen:

%Vor%

usw.

um zu versuchen, die möglichen Fehler vorherzusehen, die sie machen könnten. Für jedes Element könnte es 2 ^ n mögliche Kombinationen von Fällen geben, wobei n die Länge des Namens ist (unter der Annahme, dass jedes Zeichen des Namens ein Buchstabe ist).

In der Praxis ist das zu viel Mühe, verzögert nur das Problem, anstatt es zu lösen, und wird wahrscheinlich nicht funktionieren. Wenn die Benutzer nicht erkennen, dass bei XML die Groß- und Kleinschreibung beachtet wird, verfügen sie möglicherweise nicht über End-Tags, die mit der Groß- / Kleinschreibung des Start-Tags übereinstimmen, und es wird weiterhin nicht validiert.

Wie andere Leute bereits gesagt haben, verarbeiten Sie entweder die übergebene Eingabe vor, um den Fall zu beheben, oder um die Benutzer dazu zu bringen, korrekte Eingaben zu erzeugen, bevor sie sie abschicken.

    
Hoylen 15.12.2009 13:12
quelle
0

XML wird normalerweise maschinell generiert. Daher solltest du hier kein Problem haben width <RANdOm /> case.

Wenn das wirkliche Problem darin besteht, dass zwei verschiedene Systeme zwei verschiedene Typen des Tags generieren ( <Widget /> vs. <widget /> ), könnte ich einfach beide Fälle in Ihrer XSD definieren.

    
Zack Marrapese 15.05.2009 14:10
quelle
0

Gehen Sie nach dem Hochladen die XML-Datei (über DOM oder SAX) durch und reparieren Sie das Gehäuse, bevor Sie es validieren?

    
JBRWilkinson 20.05.2009 17:07
quelle
0

Die simples-Lösung wird an alle Tags / Attribute in Kleinbuchstaben gesendet, wenn Sie xml vom Benutzer laden und erst dann über xsd prüfen, das für alle kleingeschriebenen Tags / Attribute entworfen wurde

    
Volchik 17.08.2014 03:42
quelle

Tags und Links