Ich bin ein XML-Dokument, welches ich mit XSLT-Transformation 1.0:XSLT 1.0 - Gruppieren von komplexen verschachtelten Elementen mit Attributen
<?xml version="1.0" encoding="UTF-8"?>
<element tag="container">
<data handle="$1">
...
</data>
<assignments/>
<expression context="$1">
Object_Text
</expression>
<expression context="$1">
Object_Text
</expression>
<expression context="$1">
Object_Heading
</expression>
<element tag="container">
<data handle="$2">
...
</data>
<assignments/>
<element tag="container">
<data handle="$3">
...
</data>
<assignments/>
<expression context="$3">
Object_Text
</expression>
</element>
<element tag="container">
...
</element>
</element>
<element tag="container">
<element tag="container">
<element tag="container">
<expression context="$1">
Object_Text
</expression>
</element>
</element>
</element>
<element tag="container">
<expression context="$1">
Object_Identifier
</expression>
</element>
</element>
Ich habe für jeden Ausdruckstyp Zuweisungen hinzufügen (Object_Text, Object_Heading, ...) zum Tag des nächsten übergeordneten Container-Knotens, der ein Tag enthält (nicht alle Container haben dieses Tag, diese sollten ignoriert werden) und der Kontextwert des Ausdrucks muss mit dem Handle-Wert des Containers übereinstimmen. Aufgrund der Tatsache, dass ich für jeden Ausdruckstyp eine Zuweisung benötige, sollte ich nur eine Zuweisung für jeden Typ in seinem Kontext haben, egal wie viel es erscheint. So ist die gewünschte Ausgabe ist:
<?xml version="1.0" encoding="UTF-8"?>
<element tag="container">
<data handle="$1">
...
</data>
<assignments> <!--Added assignments here (one for each type with @context='$1')-->
<assignment name="Object_Text">
</assignment>
<assignment name="Object_Heading">
</assignment>
<assignment name="Object_Identifier">
</assignment>
</assignments>
<expression context="$1">
Object_Text
</expression>
<expression context="$1">
Object_Text
</expression>
<expression context="$1">
Object_Heading
</expression>
<element tag="container">
<data handle="$2">
...
</data>
<assignments/>
<element tag="container">
<data handle="$3">
...
</data>
<assignments> <!--Added assignments here (one for each type with @context='$3')-->
<assignment name="Object_Text">
</assignment>
</assignments>
<expression context="$3">
Object_Text
</expression>
</element>
<element tag="container">
...
</element>
</element>
<element tag="container">
<expression context="$1">
Object_Identifier
</expression>
</element>
</element>
Derzeit ich bin in der Lage eine Gruppe von Ausdruckstyp (Object_Text, etc.) mit Muench-Gruppierung Methode zu erhalten. Aber mein Problem ist, dass ich diese Ausdruckstypen nicht durch ihr Attribut @context unterscheiden kann, so dass der Container nur Zuordnungen für die richtigen Ausdrücke enthält, die er wirklich mit demselben @ context enthält.
Ich bin dankbar für jede Hilfe. Kennt jemand einen Weg, um die gewünschte Leistung zu erreichen? Ich habe viele Dinge ausprobiert, aber momentan fehlt es an Erfahrung/Wissen für diese Aufgabe.
EDIT: Es sollte hinzugefügt werden, dass dies eine Beispielstruktur für ein XML-Dokument ist. Daher sollten die XSLT-Funktionen Ausdrücke in beliebig verschachtelten, umhüllten Strukturen und beliebig oft erkennen.
Vielen Dank für Ihre Antwort, diese hat mir wirklich geholfen und mir die richtigen Tipps gegeben, um mit meiner Arbeit voranzukommen! –