表单输入值属性中的XSLT单引号和双引号?

时间:2011-01-03 14:03:28

标签: xml xslt

希望是一个简单的问题,我怎样才能使其形成良好,从而运行?

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

我基本上想要在属性值中放置一个值,但它们都需要双引号!?

有什么想法吗?

非常感谢

4 个答案:

答案 0 :(得分:10)

在XSLT中,有一个快捷方式可以使用属性中的值:

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

还有另一个选项,可以使用xsl:attribute

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

答案 1 :(得分:6)

这是错误的

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

,这也是错误的

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

在XML中,将(未转义)标记作为属性值是一种语法错误。请参阅W3 XML规范 - here here

执行此操作的两种正确方法是(称为AVT或 attribute value templates ):

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

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

在XSLT 2.0中,允许编写

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

当元素的名称是静态知道的(提前)时,上面的第一种方法是最短且最易读的

当元素名称不是静态知道时必须使用第二种方法,并且必须使用<xsl:element>指令生成。

答案 2 :(得分:3)

使用花括号表示法:

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

答案 3 :(得分:0)

您可以在内部使用单引号,在外部使用双引号,反之亦然。

另外,XML规范说:

  

要允许属性值包含单引号和双引号,撇号或单引号字符(')可以表示为“&apos;”,双引号字符(“)作为“&quot;”。