Formale oder Praktische XML-Tag-Länge zu Begrenzen?
Habe ich nicht gefunden, erwähnt eine Grenze xml-tag Länge nach auf das web. Ich bin auf der Suche, um das erstellen von XML-Schemas, die als eine Spezifikation für die 3rd parties zum senden von Daten an uns.
Schema (und die Daten) soll konform zu unseren custom-Ontologie/data-dictionary-Ding, das ist hierarchisch aufgebaut und frei konfigurierbar.
Dem natürlichen mapping für den Knoten in der Hierarchie werden verwendet, um name-Typen und-tags in der XSD - /XML. Da jedoch leaf node-Namen in der Ontologie müssen nicht eindeutig sein, ich überlege Codierung der vollständige Pfad von Knoten in der Hierarchie als der tag-name, entsprechend entstellt für XML-lexikalische Regeln.
Also wenn mein Ontologie hat mehrere 'lisa' Knoten bedeutet unterschiedliche Dinge, wie Sie an verschiedenen stellen in der Hierarchie, die ich verwenden könnte der vollständige Pfad zu den Knoten für die Erstellung von verschiedenen XML-Typen/tag-Namen, so können Sie
<abe_homer_lisa> simpsons lisa ... </abe_homer_lisa>
<applei_appleii_lisa> ... apple lisa </applei_appleii_lisa>
<mona_lisa> and paintings </mona_lisa>
... - Daten für jede der verschiedenen 'lisa' - Typen in der gleichen Datei ohne Zweideutigkeit.
Kann ich nichts finden im Netz, gibt einen maximalen tag-Länge (oder mindestens unterstützt tag-Länge für Standard-konforme Motoren). (Gute Zusammenfassung der lexikalischen Regeln für XML -hier)
Dasselbe wurde gebeten, über das Attribut Länge und wenn die Norm gibt keine Begrenzung für die Attribute dann bezweifle ich, es ist eine für tags, aber es kann eine praktische Obergrenze.
Ich vermute auch eine praktische Grenze wäre erheblich größer als meine Bedürfnisse (ich würde erwarten, dass die Dinge, die kleiner als 255 chars die meiste Zeit); im Grunde, wenn die Java-XML-Prozessoren, standard-ETL-tools und die gängigen XSLT-Prozessoren können behandeln alle tags, die viel größer ist als dieser, dann wird es nicht ein Problem sein.
- es gibt kein limit, was ich kenne, aber es gibt einen Punkt, jenseits dessen wird es lächerlich. und da Sie normalerweise übertragen der ganzen xml als eine einzelne Zeichenfolge, die Ihre praktischen Grenzen für die gesamte xml-Datei (max packat Größe max http-post-Inhalte, etc)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube, du bist kaum zu finden, Werkzeuge, die nicht mit Namen von sagen, 1K Zeichen, an welcher Stelle Sie schlagen schwerwiegende performance-und usability-Probleme eher als harte Grenzen.
Aber dein design ist falsch. XML ist hierarchisch, die Tatsache nutzen, anstatt zu versuchen, Sie zu bekämpfen.
Gibt es keine Begrenzung für tag-name Längen, die ich kenne, aber es kann einige Umsetzung-Grenzen je nach tool, das versucht, zum Parsen der XML-selbst wenn der XML-Spezifikation kann nicht schweigen keine Grenzen gesetzt.
Auf der anderen Seite, warum nicht verwenden XML-native & inhärent hierarchischen Struktur. Warum codieren Sie alles, was Sie als <abe_homer_lisa> statt encoding als:
Ich würde empfehlen dringend die Verwendung einer XML-Mechanismus zu unterscheiden Elemente, nämlich die Verwendung von namespaces. Auf diese Weise würde man z.B. die
Sowohl die W3C schema Sprache sowie XSLT und XPath-voll-support-namespaces.
<simpsons:lisa>
(die hat nur eine einzige Ebene der Tiefe), was den Vorteil hat, dass ist einfach zu verarbeiten sind.Basierend auf die Kommentare von Michael Kay (so etwas wie ein Experte für XML) und Mihai Stancu oben würde ich sagen, die Antwort auf meine ursprüngliche Frage war:
War ich nach einer Antwort auf die sehr konkrete Frage über die tag-Länge, und da fand ich die gleiche Frage über das Attribut Länge, aber nicht die tags, ich dachte, es könnte Wert sein, dass es "eine" Antwort um den Fall, dass jemand anderes googelt es. Vielen Dank an alle Teilnehmer. Gültige Punkte über, ob mein design war sinnvoll; ich werde erklären, die Gründe anderswo.
Danke an diejenigen, die darauf hinwies, es könnte sein, mehr vernünftige Möglichkeiten, um die zugrunde liegende problem anzugehen (damit die Typen/die tag-Namen in einem XML-schema eindeutig sind).
Wieder über eine Hierarchie von Knoten, um den Kontext:
Ich Stimme dies würde in der Regel angemessen sein. Allerdings (ich habe nicht wirklich erklären, mein genaues problem domain in der f) in diesem besonderen Fall, die Benutzer-konfigurierbar Gruppierung von Elementen in der Baum-Struktur-Daten-Wörterbuch, das ich zu bewältigen haben, ist ziemlich willkürlich und hat fast nichts zu tun mit den Beziehungen in den Daten, die das Wörterbuch beschreibt.
So, in der
Beispiel sollte anderen lisa-Knoten werden unter demselben homer Knoten, oder eine andere? Sollte die homers unter den gleichen abe Knoten oder nicht? Im Fall der Daten in Frage, die Unterscheidung ist mehr oder weniger sinnlos: es würde, wie das gruppieren von Daten nach Seite einen index, es passiert zu sein verwiesen auf in einem bestimmten Buch. Ich glaube, ich könnte einfach einen beliebigen anrufen und sperren Sie es nach unten in der XSD.
Wenn Sie so etwas wie XSL, Daten zu extrahieren, dann würde es keinen Unterschied machen, //abe/homer/lisa bekommen würde, alle lisa-Knoten, unabhängig davon, wie Sie wurden, zusammen gruppiert. In der Praxis wird jemand wahrscheinlich zum generieren von CSV-Dateien oder was auch immer, so würde ich es vorziehen, flache Struktur wie möglich.
Dito für namespaces: obwohl Sie speziell für diesen Zweck (Bereitstellung von Kontext für einen Namen, und sicherzustellen, dass die zufälligen Auseinandersetzungen nicht dazu führen, Mehrdeutigkeit, wenn verschiedene Arten von Daten werden zusammengefasst in einer Datei), in der Praxis würden Sie hinzufügen eine zusätzliche Schicht von Komplexität zu wer generiert die Daten aus den Quellsystemen.
In meiner konkreten Umstände, erwarte ich, dass name-clashes in dieser willkürlichen Gruppierung ziemlich unwahrscheinlich (und zu reflektieren, schlechte Auslastung), und daher müssen nur angemessenen Handhabung, ohne dass eine übermäßige Strafe auf der Mehrheit der Fall.
Im Gegensatz zu konventionellen Weisheit, würde ich dringend empfehlen, gegen die Verwendung des so genannten XML-Namespaces-Mechanismus. Auf längere Sicht, wird es führen, dass Sie Schmerzen. Sagen Sie einfach Nein zu namespaces. Sie braucht Sie nicht.
Ihre intuition, die Elemente unterscheiden sich durch Ihre Kontext - dargestellt, in diesem Fall durch Ihre "Wege" - ist richtig. Jedoch, Ihre Vorstellung von der Kodierung der gesamte Pfad in den Namen eines Elements kann nicht optimal sein. Betrachten Sie stattdessen mit dem einfachen Namen zusammen mit einem Attribut zu halten, die Rahmen oder Pfad. (Name das Attribut 'context' oder 'Pfad' oder etwas evocative!) Dies wird genug sein, um unterscheiden die Bedeutungen.[*]
Für unterschiedlichen content-Modellen, die Sie verwenden können, eine Variante der gleichen Technik. Geben Sie jedem anderen Typ einer situativ bequem Namen, und notieren Sie die "echten" Namen in einem anderen Attribut mit dem Namen, sagen wir 'Ontologie'.
Als für Ihre Frage, die XML-Spezifikation legt keine inhärente Beschränkung der Länge der Namen, die zwar aus rein technischen Gründen finden Sie möglicherweise ein limit von 65536 Zeichen zitiert an einigen stellen. Die gleiche "Einschränkung" kann auch für die Länge von Attribut-Wert-literalen. Bei einem Durchschnitt von 20 Zeichen pro atomarer name, 20 Hierarchie-Ebenen wäre noch Betrag auf weniger als 500 bytes für einen Pfad, so dass Sie wahrscheinlich wenig Grund zur Sorge.
[*] Hinweis: diese Technik ist eigentlich sehr alt, aber fast völlig vergessen in der XML-mindspace. In HTML gibt es zum Beispiel ist ein einzelnes element-Typ mit dem Namen
INPUT
zu decken alle Arten von GUI-controls, und doch gibt es keine Verwirrung, Dank der 'type
' Attribut.