string parsing xslt fxsl

string - ¿Puede un XSLT analizar una cadena de texto?



parsing fxsl (5)

Esta es la primera vez que uso XSLT. Intento crear un archivo que convierta un archivo de datos XML exportado de un programa que utilizo a un informe HTML.

Uno de los valores del elemento es la ruta a un archivo de imagen, pero la ruta generada es una ruta absoluta, como

C:/Documents and Settings/me/Desktop/xml export/cd000402.jpg

pero quiero una ruta relativa a solo el nombre del archivo.

¿Hay algún camino a través del archivo XLST para analizar el nombre del archivo?


XPath contiene la función substring-after que devuelve la cadena después de la primera aparición de otra cadena. Esto no es suficiente por sí solo, pero una plantilla como la siguiente podría hacerlo:

<xsl:template name="filename-only"> <xsl:param name="path" /> <xsl:choose> <xsl:when test="contains($path, ''/')"> <xsl:call-template name="filename-only"> <xsl:with-param name="path" select="substring-after($path, ''/')" /> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:value-of select="$path" /> </xsl:otherwise> </xsl:choose> </xsl:template>

El conjunto de funciones de cadenas disponibles no es demasiado extenso, pero he descubierto que es lo suficientemente bueno para la mayoría de las aplicaciones que necesitará en XSLT.



XSLT con la ayuda de XPath 2.0 y sus diversas funciones de cadena lo ayuda a lidiar con este tipo de cosas.

Ejemplo:
Suponiendo que la ruta [al archivo jpg] mencionada en cuestión proviene de un fragmento xml similar a

... <For_HTML> <Image1> <Path>C:/Documents and Settings/me/Desktop/xml export/cd000402.jpg</Path> <Description>Photo of the parking lot</Description> <Width>123</Width> ... </Image1> </For_HTML>

Fragmento de XSLT se vería algo así como

<xsl:template match=''//For_HTML/Image1''> <img src=''http://myNewServer.com/ImageBin/{substring-after(./Path,"/xml export/")}'' alt=''{./Description}'' width='' .... you got the idea'' /> </xsl:template>

Nota: no tuvo tiempo para probar; pero eso se ve bien