Ich habe einige nicht-heirarchal Xml, die Pseudo-Struktur hat. Jedes Objekt deklariert ein übergeordnetes Objekt (mit Ausnahme des "root" -Objekts) und null oder mehr untergeordnete Elemente, verwendet jedoch statt einer verschachtelten Struktur IDs und Referenzattribute. Ich möchte dies in eine verschachtelte Struktur konvertieren.Wie kann ich mit XSLT 1.0 einer nicht-heirarchalen XML-Datei Struktur hinzufügen?
<document>
<object id="6" children="12,15"/>
<object id="12" parent="6" children="13,18"/>
<object id="13" parent="12" children="14,16,17"/>
<object id="14" parent="13"/>
<object id="15" parent="6" children="21,22"/>
<object id="16" parent="13"/>
<object id="17" parent="13"/>
<object id="18" parent="12" children="23,25"/>
<object id="19" parent="23"/>
<object id="21" parent="15"/>
<object id="22" parent="15"/>
<object id="23" parent="18" children="19,24"/>
<object id="24" parent="23"/>
<object id="25" parent="18"/>
</document>
Für die Aufzeichnung enthält das eigentliche Dokument auch Objektdefinitionen, die die Objekte auch in einem Attribut, ähnlich einer Klasse verweisen, aber ich brauche den Namen des Elements aus der Definition von wiederum Referenz-ID abzurufen. Irgendwann im Prozess konvertiere ich die Namen jedes "Objekts" in "Vorlage" oder "Unterabschnitt". Wenn es Dinge vereinfacht, kann ich diese Operation nach dem Anwenden der Struktur durchführen. Ich habe auch eine Tokenize- "Funktion" für das Children-Attribut, da ich XSLT 1.0 verwende, das nicht integriert ist.
So zum Beispiel oben ich diese Ausgabe möchte:
<document>
<object id="6">
<object id="12">
<object id="13">
<object id="14"/>
<object id="16"/>
<object id="17"/>
</object>
<object id="18">
<object id="23">
<object id="19"/>
<object id="24"/>
</object>
<object id="25"/>
</object>
</object>
<object id="15">
<object id="21"/>
<object id="22"/>
</object>
</object>
</document>
Bitte beachten Sie, dass diese Objekt Elemente andere Informationen enthalten, Attribute, Daten usw. Diese zur Vereinfachung des Beispiels entfernt wurde, aber kann dem Problem eine Komplexitätsebene hinzufügen.
Wenn möglich möchte ich dies auf eine elegante und erweiterbare Weise tun. Ich bin nicht gezwungen, sondern würde lieber XSL 1.0 verwenden (damit es in die vorhandene Server-Software integriert werden kann).
Vielen Dank an alle, die mir helfen oder mich in die richtige Richtung weisen können!
Diese Frage ist sehr zweideutig: 1). Kein vollständiges XML-Dokument bereitgestellt (nur ein minimales, aber vollständiges Dokument ist erforderlich); 2). Es gibt sowohl '' und '- ' - es scheint mir, dass nur ein Name generiert werden muss, oder es sollte eine Erklärung geben, wann 'generiert werden soll Thema und wann "Element" generiert werden soll. Bitte bearbeiten Sie die Frage und geben Sie die fehlenden Daten/Erläuterungen an. –
OK Dimitre, ich habe respektvoll meine Frage gestellt. Nun, meine Frage an Sie ist, können Sie mir helfen, oder haben Sie einfach das Board kontrolliert? – kcstrong
kcstrong: Wenn ich nicht daran interessiert bin, zu helfen, warum sollte ich meine Zeit damit verschwenden, um Klärung zu bitten? Ich fange an, in ein paar Minuten zu arbeiten - wird wahrscheinlich in 10 Stunden Zeit für Ihre Frage haben.Ich hatte eine nicht schlechte Lösung, bevor ich zu den Unklarheiten kam, die mich daran hinderten, diese Lösung zu veröffentlichen. –