Ich habe eine for-each-Schleife, wo ich eine innere if-Anweisung hinzugefügt habe, um über meine Anwendung zu filtern. Die verknüpfte Anwendung wird nicht direkt in den Knoten referenziert, die ich überschlinge.XSLT for-jeder mit inneren if-Anweisung hat keinen Einfluss auf die Position beginnend mit 1, es beginnt mit 5
Es ist eher formularfield -> formular -> Anwendung und die XML-Struktur ist flach, nicht hierarchisch.
Wenn ich mit einem solchen Filter if-Anweisung, werde ich eine Position bei 5 beginnen bekommen und nicht 1:
<xsl:for-each select="//lbDMF/formularfields/formular[@tablename=$FKTable]">
<xsl:variable name="DisplayField1" select="@fkname"/>
<xsl:variable name="FKFormularRefId" select="@formularid"/>
<xsl:if test="//lbDMF/formulare/formular[@ID=$FKFormularRefId][@applicationid=$ApplicationID]/@applicationid=$ApplicationID">
Foo.VisibleIndex = <xsl:value-of select="position()-1"/>;
Meine Frage lautet wie folgt: Kann ich die innere bewegen, wenn die Bedingung in der for-each wählen?
Wenn, wie könnte ich das tun (ich versuchte und fehlgeschlagen)?
Wenn es eine andere Art zu filtern gibt, würde ich die Position beeinflussen?
Ich benutze libxslt aus meiner C++ - Anwendung und keine Java-basierten xslt-Prozessor.
Danke,
Lothar
Vielleicht möchten Sie schreiben eine kleine, aber repräsentative Stichprobe der XML-Eingabe uns und erklären, welche Bedingung Sie überprüfen möchten, und die gewünschte Ergebnis zu erzielen, verwenden können. Zeigen Sie uns auch Ihren Versuch und erklären Sie, auf welche Art und Weise er fehlgeschlagen ist (z. B. Syntaxfehler, semantischer Fehler). –