2008 20 de septiembre 2008

TEXTAREA problema de colapso en XSL / XSLT


Enunciado del problema:
Me encontré con este problema en relación con áreas de texto en un XSLs. En palabras simples, el problema surge cuando se tiene una etiqueta <textarea> en blanco, entonces se va a colapsar a <textarea />.
es decir, si tenía algo como lo siguiente en su XSL y los datos XML para el valor de TEXTAREA, no devuelve nada ...

<textarea name='description'> <xsl:value-of select="DESCRIPTION"/> </ textarea>

Como los navegadores no reconocen esto, hará que el resto del formulario HTML para ejecutarse en el área de texto.

POSIBLES SOLUCIONES:

En el XSL, agregue un non-breaking-espacio () después de que el xsl: tag.BEWARE de valor, para cuidar de este espacio extra que se añade, durante la validación del lado del cliente de este campo.

<textarea name='description'> <xsl:value-of select="DESCRIPTION"/> </ textarea>

O
<xsl:value-of select="concat (DESCRIPTION,'')"/>

O
Insertar una etiqueta de <xsl:value-of select="@unknown" /> apuntando a un atributo desconocido. Esto obligará al intérprete PHP XSLT para generar un texto de apertura y cierre de la etiqueta de área, incluso si no tiene nada en el medio.

O
Insertar un campo de <xsl:text> que contiene un espacio para obligar a una etiqueta de cierre.

Sin embargo, a pesar de las soluciones mencionadas anteriormente puede parecer para solucionar el problema, todavía no estoy convencido de que tienen razón y las mejores maneras de solucionarlo. Si no hay otra manera mejor de fijar esta peculiaridad, por favor háganoslo saber.


2008 04 de agosto 2008

Un problema con la posición () en XSL ... ¿o no?

Tuve este problema al crear un Strage XSL hoy. Buscó respuestas en toda la red, pero no podía encontrar ninguna .... En realidad, supongo! Yo sé cuál es mi fuerza problema era, entonces, ¿qué debo buscar?

De todos modos! Sólo en caso de tener este mismo problema también y de alguna manera por el poder de la fuerza que logró aterrizar en esta página ... que me lo agradecería toneladas ... Y si alguna vez ha accidentalmente aterrizó en esta página por alguna extraña suerte y pasar a ser un desarrollador XSL, NO HAGA UNA NOTA DE ESTA AHORA, PARA EL FUTURO causa, Si algún día, se enfrenta a este problema, entonces la fuerza no podría estar con ustedes.

Enunciado del problema:
Tengo este XML, donde hay dos nodos con varios elementos en él y los elementos entre estos dos nodos tienen una correspondencia uno a uno. En el siguiente ejemplo, cada elemento en el nodo <array name="PLAYURL" /> se refiere (posición correspondiente) a un elemento en el nodo de <array name="SITENAME" />

<?xml version="1.0" encoding="utf-8"?>
<myplaylists>
<playlist>
<title>Best of Rest </title>
<array name="SITENAME">
<str>www.musicindiaonline.com</str>
<str>www.dhingana.com</str>
<str>www.raaga.com</str>
<str>www.smashits.com</str>
<str>www.desimusic.com</str>
<str>www.musicplug.in</str>
</array>
<array name="PLAYURL">
<str>http://www.musicindiaonline.com/123/</str>
<str>http://www.dhingana.com/play/123</str>
<str>http://www.raaga.com/123</str>
<str>http://ww.smashits.com/123</str>
<str>http://www.desimusic.com/123</str>
<str>http://www.musicplug.in/123</str>
</array>
</playlist>
</myplaylists>

Ahora, tengo un bucle, en el que recorrer <array name="SITENAME">, y quiero conseguir el artículo relacionado (en la posición correspondiente) en <array name="PLAYURL">,

Lo que normaly trataría de hacer es ...

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
play from : <a href="{../../array[@name='PLAY']/str[position()]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

LO SIENTO! Esto funcionará ... ¡Ah!! Gratamente ...

Ahora es probable que le gustaría probar, algo como esto ...

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos"> <xsl:value-of select="position()"/></xsl:variable>
play from : <a href="{../../array[@name='PLAY']/str[$pos]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

Y De nuevo, esto no funcionará ... Ahora que rascarse la cabeza, tratando de ponerse en contacto con todos los que usted piensa que sabe algo de XSL y podría ser de alguna ayuda ... intentar todas las opciones de otros ... y aún funciona costumbre ... Bueno! Eso es lo que me pasó el atleast ...

EXCLUIR LA DESESPERACIÓN! LA PRUEBA

<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$
<xsl:for-each select="myplaylists/playlist/array[@name='SITENAME']/str">
<xsl:variable name="pos-int" select="position()" />
play from : <a href="{../../array[@name='PLAY']/str[$ pos-int ]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>
]}"/> <xsl:value-of select="." /></a>
</xsl:for-each>

DONT ASK ME por qué funciona. Porque no tengo una razón bien ... si lo haces! Por favor deja un comentario. Puede ser muy útil. También! si usted tiene un mejor título para este post, lo mándenme una línea de :)


NDK en casa | Expresando IT | Boca Expresando | Penmenship Expresando | Awe Expresando | expresarme