können Arrays in xslt erstellt und verwendet werden? Wenn ja, gibt es geeignete Beispiele, um zu lernen? Wenn nicht, gibt es eine Möglichkeit, Werte so zu speichern, dass ein Array nachgebildet wird.Erstellen von Arrays in xslt
Antwort
Mit XSLT 2.0 können Sie beliebige Datentypen modellieren.
Als Beispiel:
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" omit-xml-declaration="yes"/>
<xsl:variable name="array" as="element()*">
<Item>A</Item>
<Item>B</Item>
<Item>C</Item>
</xsl:variable>
<xsl:template match="/">
<xsl:value-of select="$array[2]"/>
</xsl:template>
</xsl:stylesheet>
Mit jedem Eingang, Ausgang:
B
In XSLT 1.0 gibt nicht Temporaly ist Baum Ergebnis Datentyp. Es gibt einen Ergebnistypfragmentdatentyp, der den Knotenmengenoperator nicht zulässt. Also, der einzige Weg zu gehen ist mit Erweiterungen Funktionen: in diesem Fall node-set()
von EXSLT (MSXSL hat eine eingebaute node-set()
Erweiterung, auch).
Also, in XSLT 1.0 ohne Erweiterungen können Sie nur Inline-Datenmodell oder nach Params oder externem Dokument haben. Als Beispiel:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" omit-xml-declaration="yes"/>
<xsl:variable name="inline-array">
<Item>A</Item>
<Item>B</Item>
<Item>C</Item>
</xsl:variable>
<xsl:param name="array" select="document('')/*/xsl:variable[@name='inline-array']/*"/>
<xsl:template match="/">
<xsl:value-of select="$array[2]"/>
</xsl:template>
</xsl:stylesheet>
Ergebnis, mit jedem Eingang:
B
Nur wenn Sie wollen, kann ich Ihnen ein XSLT 1.0 und Erweiterungen Beispiel liefern (es ist nicht standar ...)
@ Alejandro - von dem, was ich sehen kann, verwenden Sie einfach das _name_'Array', das eine Sammlung von Elementknoten ist. – Oded
@Oded: Das stimmt! Das ist das Konzept der ** Datenmodellierung **. Das Hauptmerkmal von Array-Datentypen ist der Direktzugriff. Dieses Modell deckt das wie gezeigt ab. –
@ Alejandro - etwas benennen ein Array macht es nicht zu einem Array. Am nächsten zu einem in xsl ist eine Knotenmenge. – Oded
Nein, nicht als solches. Das nächstliegende Konzept sind Knoten-Sets, die Sammlungen von Knoten sind. Wenn das Ergebnis einer Auswahl eine Anzahl von Knoten ist, erhalten Sie eine Knotenmenge. Auf diese kann mit einer Indexnotation (beginnend mit 1) zugegriffen werden, so dass auf das erste Element der Knotenmenge mit einer Notation wie selectedNodes[1]
zugegriffen werden kann.
Ich denke, das ist nicht ganz richtig. Überprüfe meine Antwort. –
XPath-2.0-Sequenz (in XSLT 2+) ist das nächste, was zu einem Array:
(1 to 10)[3]
ausgewertet 3
('a', 'b', 'a', 'c')[3]
zu 'a'
auswertet kann
die Elemente in einer Abfolge von jeder denkbaren Art in XPath erlaubt sein, mit Ausnahme der Sequenz selbst - verschachtelte Sequenzen, die nicht erlaubt sind.
Sie beachten: Sequenzen sind nicht das gleiche wie Arrays:
Sequenzen sind unveränderlich. Jeder Aktualisierungsvorgang für eine Sequenz (Anfügen oder Voranstellen eines Elements, Einfügen eines Elements oder Entfernen eines Elements) erzeugt eine neue Sequenz.
Die Zugriffszeit auf den n-ten Punkt ist nicht garantiert, O (1) wie dies für Arrays ist, und möglicherweise O (n).
+1 gute Antwort! Ich habe später erkannt, dass ich den Sequenz-Datentyp vergessen habe. Ich habe es versäumt, die Idee der Datenmodellierung zu verteidigen. –
@ Alejandro: Was ist "Datenmodellierung"? :) –
Sorry für meine in Englisch. Ich sollte den abstrakten Datentyp sagen. –
- 1. XSLT: Erstellen einer Map in XSLT
- 2. Erstellen eine XSLT-Datei
- 3. Funktion benutzerdefinierte XSLT erstellen
- 4. XSLT Erstellen Namespace dynamisch
- 5. Erstellen eines Arrays von zweidimensionalen Arrays in C#
- 6. XSLT neues HTML-Tag erstellen
- 7. Erstellen von Matrix mit Arrays
- 8. einen Satz von Arrays in Java erstellen
- 9. Erstellen von Arrays in einer Zeile
- 10. Erstellen von verschachtelten Arrays in schnellen
- 11. Array von assoziativen Arrays in PHP erstellen
- 12. Textausgabe von mehreren Arrays in JavaScript erstellen
- 13. Erstellen Sie eine Liste/Array in XSLT
- 14. Erstellen von HTML-Anhang von Xslt, Codierung von Problemen, asp.net
- 15. eine verschachtelte Baumstruktur von einem Pfad in XSLT erstellen
- 16. Erstellen von Elementen basierend auf Werten in XSLT
- 17. Erstellen Array von Arrays durch Zuweisen von Schlüsseln beim Erstellen von Sub-Arrays
- 18. Erstellen Sie ein Array aller Elemente in den Sub-Arrays eines Arrays von Arrays?
- 19. Ziel C Erstellen von benutzerdefinierten Arrays
- 20. Erstellen von Indexkarte für zwei Arrays
- 21. Erstellen von Array mit Vergleich von anderen Arrays in Python
- 22. Erstellen eines Cache von Byte-Arrays
- 23. Actionscript 3.0: Erstellen eines Arrays von Schaltflächeninstanznamen
- 24. C# ein Array von Arrays erstellen
- 25. Erstellen eines Arrays von doppelten generischen - Java
- 26. Algorithmus zum Erstellen von Formen aus Arrays
- 27. Arrays von Arrays in TypeScript
- 28. Schleifen Arrays erstellen Mit
- 29. Verschachtelte JSON-Arrays erstellen
- 30. LISP Erstellen eines Arrays
Gute Frage (+1). In meiner Antwort finden Sie eine detaillierte Beschreibung des Datentyps, der dem Array XPath (und XSLT) am nächsten kommt. –