Ich habe quer durch gesucht, festgestellt, dass Variablen in XSLT unveränderlich (Konstanten) sind. Ich habe zwei Fragen.
Beispiel Eingabe XML wird angegeben.XSLT 1.0: Anzahl der übereinstimmenden Blöcke zählen und Karte erstellen
<employees>
<!-- Block1 -->
<employee>
<id>123</id>
<name>steve</name>
<work>developer</work>
</employee>
<employee>
<id>444</id>
<name>mark</name>
<work>developer</work>
</employee>
<employee>
<id>444</id>
<name>alex</name>
<work>tester</work>
</employee>
<employee>
<id>555</id>
<name>john</name>
<work>architect</work>
</employee>
<!-- Block 2-->
<projects>
<project>
<pid>p2</pid>
<roles>
<role>developer</role>
<role>tester</role>
</roles>
<total>30</total>
</project>
<project>
<pid>p4</pid>
<roles>
<role>tester</role>
</roles>
<total>3</total>
</project>
<project>
<pid>p3</pid>
<roles>
<role>architect</role>
</roles>
<total>2</total>
</project>
</projects>
</employees>
output:
Scenario (Ques): 2
Teil von:
<Projects>
<pid>p2</pid>
<employees>
<empName>steve</empName>
<empName>mark</empName>
<empName>alex</empName>
</employees>
</Projects>
Not Part of :
<Projects>
<pid>p2</pid>
<employees-exclude>
<empName>john</empName>
</employees-exclude>
</Projects>
Scenario (Ques): 3
<Projects>
<pid>p2</pid>
<empList>
<emp>
<resource>1</resource>
<!-- like GUID , unique, increment starts from '1'-->
<empName>steve</empName>
</emp>
<emp>
<resource>2</resource>
<!-- like GUID , unique-->
<empName>mark</empName>
</emp>
<emp>
<resource>3</resource>
<!-- like GUID , unique-->
<empName>alex</empName>
</emp>
</empList>
</Projects>
Fragen:
- Kann ich eine Karte erstellen, die alle Mitarbeiterdetails verwaltet. (Key wäre "Arbeit" und Wert wäre eine Liste von ID + Name), ist es möglich? Ausgabe: Ich möchte die Emp-Liste basierend auf Projekt-ID vorbereiten. da ist eine Logik herum. Also muss ich eine Liste vorbereiten.
Für die angegebene Projekt-ID (PID), möchte ich alle Mitarbeiter, die basierend auf Arbeit (aus Block1) basierend auf Rolle (Block2) ausgewählt werden, und wer sind nicht Teil davon? Eingabe wäre Ausgabe:
Um die Anzahl der übereinstimmenden Einträge zu zählen? Wir haben'position() ', die besagt, dass die aktuelle Iteration in for-Schleife. aber ich möchte nur einen übereinstimmenden Block. Beispiel, wenn es 3 Mitarbeiter gibt, die von 6 angepasst wurden. Ich brauche den Wert, der angehängt werden soll, ressource + unique-Id. unique-id beginnt mit '1'. Ausgang:
geschätzt viel Ihre Hilfe und Unterstützung.
Ihre Frage ist nicht ganz klar. Es wäre hilfreich, das erwartete Ergebnis der Transformation des gegebenen Beispiels zu sehen. Im Allgemeinen können Sie einen ** [key] (https://www.w3.org/TR/xslt/#key) ** verwenden, um die berechtigten Mitarbeiter aus dem Kontext eines Projekts (oder einer Rolle) abzurufen. Ich bin mir nicht sicher, was Sie mit "nicht Teil davon" meinen. –
@Michel, ich habe meine Frage bearbeitet, erwartete Ausgabe hinzugefügt. Vielen Dank, – panneer
Woher kommt der "Eingang" ('p2')? Und warum wird 'alex' in Szenario 3 vom Ergebnis ausgeschlossen? –