2011-01-03 34 views
6

Afortunadamente una pregunta rápida, ¿cómo puedo conseguir que esté bien formada y, por lo tanto, correr?XSLT comillas simples y dobles en el atributo de valor de entrada de formulario?

<input type="rad" name="RadGroup" value="<xsl:value-of select="productOptionInfo"/>" /> 

Básicamente quiero tener un valor colocado dentro del valor del atributo, pero ambos necesitan comillas dobles?

¿Alguna idea?

Muchas gracias

+0

Buena pregunta, +1. Consulte mi respuesta para obtener una explicación de por qué la respuesta seleccionada actualmente es incorrecta y para dos soluciones XSLT 1.0 correctas y otra solución XSLT 2.0. :) –

Respuesta

10

En XSLT, hay un acceso directo para utilizar los valores dentro de atributos:

<input type="rad" name="RadGroup" value="{productOptionInfo}" /> 

Hay otra opción, que es utilizar xsl:attribute:

<input type="rad" name="RadGroup"> 
    <xsl:attribute name="value"> 
     <xsl:value-of select="productOptionInfo"/> 
    </xsl:attribute> 
</input> 
+0

Oh, vale, ya veo, eso lo ha hecho más claro ahora, gracias :) – Mac

+0

@Mac - He añadido algunas más opciones :) – Oded

+0

@Downvoter - ¿Me gustaría comentar? – Oded

0

Usted puede use comillas simples dentro y comillas dobles afuera, o viceversa.

Además, especificación XML dice:

para permitir valores de atributos para contener tanto comillas simples y dobles, el apóstrofe o comilla simple personaje (') puede representarse como "&apos;", y el doble carácter de comillas (") como" &quot;"

3

uso rizado soporte de notación:.

<input type="rad" name="RadGroup" value="{productOptionInfo}" /> 
+0

¡Gracias que funciona, tú y Oded nos dieron la respuesta correcta al mismo tiempo! – Mac

6

Esto está mal:

<input type="rad" name="RadGroup" 
     value="<xsl:value-of select='productOptionInfo'/>" /> 

y esto está mal, también:

<input type="rad" name="RadGroup" 
     value='<xsl:value-of select="productOptionInfo"/>' /> 

En XML se trata de un error de sintaxis tienen (no literal) marcado como valor de un atributo . Consulte la Especificación W3 XML - here y here.

Las dos formas correctas de hacer esto son (llamado AVT o attribute value templates):

<input type="rad" name="RadGroup" value="{productOptionInfo}"/> 

y

<xsl:attribute name="input"> 
    <xsl:value-of select="productOptionInfo"/> 
</xsl:attribute> 

En XSLT 2.0 se permite escribir :

<xsl:attribute name="input" select="productOptionInfo"/> 

La primera manera anterior es la más corta y más legible cuando el nombre del elemento se conoce estáticamente (de antemano).

La segunda forma se debe utilizar cuando el nombre del elemento no se conoce de forma estática y se debe generar con una instrucción <xsl:element>.

+0

Ya veo, ok gracias por aclarar eso, entonces Dimitre :) – Mac

Cuestiones relacionadas