¿se pueden crear y usar las matrices en xslt? Si es así, ¿hay ejemplos adecuados en línea para estudiar? Si no, ¿hay alguna manera de almacenar valores de una manera que imite una matriz?creando matrices en xslt
Respuesta
Con XSLT 2.0 se puede modelar cualquier tipo de datos que desea.
Como ejemplo:
<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>
Con cualquier entrada, salida:
B
En XSLT 1.0 No hay Resultado provisoriamente árbol de tipo de datos. Hay un tipo de datos de Fragmento de árbol de resultado que no permite el operador de conjunto de nodos. Por lo tanto, la única forma de hacerlo es con las funciones de extensiones: en este caso, node-set()
de EXSLT (MSXSL también tiene una extensión node-set()
incorporada).
Así, en XSLT 1.0 sin extensiones que puede tener único modelo de datos en línea, o por params o mediante documento externo. Como ejemplo:
<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>
resultado, con cualquier entrada:
B
Sólo si quieres, te puedo proporcionar una XSLT 1.0, más extensiones ejemplo (No es standar ...)
@Alejandro - por lo que puedo ver, simplemente está usando _name_ 'array' que es una colección de nodos de elementos. – Oded
@Oded: ¡Eso es! Ese es el concepto de ** modelado de datos **. La característica principal de los tipos de datos de matriz es el acceso aleatorio. Este modelo cubre eso como se muestra. –
@Alejandro: nombrar algo una matriz no lo convierte en una matriz. Lo más parecido a uno en xsl es un conjunto de nodos. – Oded
No, no es como tal. El concepto más cercano es el conjunto de nodos, que son colecciones de nodos. Siempre que el resultado de una selección sea una cantidad de nodos, se obtiene un conjunto de nodos. Se puede acceder a estos con una notación de índice (comenzando con 1), de modo que se puede acceder al primer elemento del conjunto de nodos con notación como selectedNodes[1]
.
Creo que esto no es del todo correcto. Verifica mi respuesta. –
el 2,0 secuencia XPath (disponible en XSLT 2+) es lo más parecido a una matriz:
(1 to 10)[3]
evalúa a 3
('a', 'b', 'a', 'c')[3]
evalúa a 'a'
Los elementos de una secuencia puede ser de cualquier tipo concebible permitido en XPath, con la excepción de la secuencia en sí - secuencias anidadas no están permitidos.
hacer la nota: Las secuencias no son las mismas que las matrices:
secuencias son inmutables. Cualquier operación de actualización en una secuencia (agregar o anteponer un elemento, insertar un elemento o eliminar un elemento) produce una nueva secuencia.
El tiempo de acceso al elemento n-ésimo no se garantiza que sea O (1) ya que esto es para las matrices, y puede ser O (n).
+1 ¡buena respuesta! Más tarde me di cuenta de que olvidé el tipo de datos de secuencia. Eché de menos defender la idea del modelado de datos. –
@Alejandro: ¿Qué es "modelado de datos"? :) –
Lo siento por mi en inglés. Debo decir Tipo de datos abstractos. –
- 1. XSLT: Creando un Mapa en XSLT
- 2. ¿Cómo puedo agregar un salto de línea al texto que estoy creando con XSLT?
- 3. insertando espacio en xslt
- 4. XSLT en SSRS informe
- 5. Elementos aleatorios en XSLT
- 6. ¿Qué es // en XSLT?
- 7. operación aritmética en XSLT
- 8. Variables dinámicas en XSLT
- 9. ¿Cómo ejecuto un archivo XSLT?
- 10. ¿Puedo vincular xslt a otro xslt?
- 11. Actualización de XSLT 1.0 a XSLT 2.0
- 12. Accediendo matrices dentro de matrices En PHP
- 13. Abstracciones XSLT
- 14. XSLT Agrupación
- 15. XSLT localización
- 16. creando subproyectos en botella
- 17. Restar matrices
- 18. Incremente un valor en XSLT
- 19. Versión de XSLT en iPhone
- 20. usando paréntesis en xpath/xslt
- 21. Cómo saber la variable tiene valor o no en XSLT
- 22. Longitud en matrices
- 23. Inicializando matrices en C++
- 24. Imprimir matrices en Java
- 25. Unir matrices en VB.NET
- 26. Matrices limitadas en Ruby
- 27. Matrices en Objective-C
- 28. Comas adicionales en matrices
- 29. Registrando con XSLT
- 30. Creando formularios personalizados en WPF?
Buena pregunta (1). Consulte mi respuesta para obtener una descripción detallada del tipo de datos XPath (y XSLT) más cercano al array. –