Einzigartige Werte mit Hilfe von XSLT 1.0 (Ohne Verwendung von XSL:Key)
Ich bin vor ein typisches problem während bin immer die Eindeutige Liste mit XSLT 1.0.
Beispiel-XSLT:
<xsl:if test="$tempVar = 'true'">
<xsl:variable name="filePath" select="document($mPath)" />
//Do something
//I can't implement this using "Muenchian Method".
//Since, I can't declare <xsl:key> inside of <xsl:if>
//There is no chance to declare <xsl:key> on top.
//I should get unique list from here only
</xsl:if>
filepath Variablen enthalten, die XML wie folgt:-
<Root>
<Data id="102">
<SubData>
<Info code="abc">Information 102</Info>
</SubData>
</Data>
<Data id="78">
<SubData>
<Info code="def">Information 78</Info>
</SubData>
</Data>
<Data id="34">
<SubData>
<Info code="abc">Information 34</Info>
</SubData>
</Data>
<Data id="55">
<SubData>
<Info code="xyz">Information 55</Info>
</SubData>
</Data>
<Data id="86">
<SubData>
<Info code="def">Information 86</Info>
</SubData>
</Data>
<Data id="100">
<SubData>
<Info code="xyz">Information 100</Info>
</SubData>
</Data>
</Root>
Ausgabe: Eindeutige Liste von code sollte
abc
def
xyz
Dank
- Sie behaupten, dass Schlüssel und Muenchian Gruppierung nicht verwendet werden können in Ihrem Fall-ist einfach nicht wahr. Du wirst nun lernen, wie es zu tun. 🙂 +1 für Fragen 🙂
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es stimmt nicht, dass man nicht
<xsl:key>
und diekey()
Funktion in solchen Fällen:wenn diese transformation wird angewendet, um zu jedem XML-Dokument (in diesem Beispiel nicht verwendet), die wollten, das richtige Ergebnis produziert wird:
<xsl:key name="kcodeByVal" match="@code" use="."/>
, Was genau diese LOK ist zu tun an diesem Punkt? Bitte erklären. Hinweis: Bei meinem Beispiel, XML ist nicht anzuwenden auf die ganze XSLT. XML wird immer als Dokument mit in die WENN Zustand nur.<xsl:key>
kann nur eine Globale Anweisung -- dieser nicht alle meine, es kann nicht referenziert werden, indem einkey()
Funktion irgendwo im code, innerhalb oder nicht innerhalb von bedingten Anweisungen. @Michael Kay ist richtig, dass Sie brauchen, um zu Lesen über Schlüssel und brauchen, um Sie zu verstehen. Gerade jetzt werden Sie nicht haben, dieses wissen und Verständnis und das Hauptverdienst jede Antwort muss sein: machen Sie sich dieser Tatsache bewusst. Denn ohne das notwendige wissen, das Sie selbst nicht verstehen kann, ist das keine Lösung, die verwendet Schlüssel.<xsl:key name="kcodeByVal" match="@code" use="."/>
definiert einen Schlüssel (index), gibt es einen Namen, gibt an, welche Knoten zu index (@code
) und was verwendet werden sollte, da die Indizierung (Schlüssel -) Wert -- den string-Wert der gematchten Knoten in diesem Fall. Dies ist nur eine definition-es verursacht keine Indizierung, bis einkey()
Funktion auf dieser bestimmten Taste. Nur dann ist die Indizierung getan-auf die aktuelle Dokument. Bitte, Lesen Sie ein gutes XSLT-Buch.Grund für die nicht-Verwendung der Muenchian Methode oder xsl:key ist zweifelhaft. Es wird perfekt funktionieren. Sie haben wohl nicht verstanden, dass, wenn Sie erklären, einen Schlüssel definition, es ist nicht spezifisch für eine bestimmte Quelle-Dokument, können Sie mit der key () - Funktion gegen beliebige Quell-Dokument.