短篇版本:(希望你能'看到'我想在这里做什么).... 我想将XML中的值“输出”到XSL中的表单字段...
<input type="text" value='<xsl:value-of select="//return/ControlNo"/>' />
这会引发错误......(见下文)
长版: 我有一个XSL页面从XML渲染一个页面...当他们'关闭'那个页面时我需要'记录' - 我认为在Unload上调用一个单独的页面将是最简单的方法...但是 - 我需要传递一个' ID'到日志页面,因此XSL需要在onUload页面调用中传递值:
<BODY onUnload('logit.htm?ID= ...xsl:value-of...','logitwindow'); >
或 - 我提交一份包含所需值的表格
<BODY onUnload(document.form.submit); >
<form><input type="hidden" name="id" value=" ...xsl:value-of... "></form>
我希望这有道理..谢谢
错误...... javax.xml.transform.TransformerConfigurationException:javax.xml.transform.TransformerException:org.xml.sax.SAXParseException:与元素类型“input”关联的属性“value”的值不得包含'&lt;'字符。无法创建满足请求的配置的Transformer对象。这可能是由于编译XSL文本失败。 javax.xml.transform.TransformerConfigurationException:javax.xml.transform.TransformerException:org.xml.sax.SAXParseException:与元素类型“input”关联的属性“value”的值不得包含'&lt;'字符。
答案 0 :(得分:2)
<input type="text" value="{//return/ControlNo}" />
{}是“value-of”的xslt快捷方式,相当于
<input type="text">
<xsl:attribute name="value">
<xsl:value-of select="//return/ControlNo" />
</xsl:attribute>
</input>
如果您使用长格式,您可能必须将输出设置为HTML,以便正确关闭INPUT
答案 1 :(得分:2)
<input type="text" value='<xsl:value-of
选择= “//返回/ ControlNo”/&GT;” /&GT;
这会引发错误......
问题在于,在XML中,不允许属性值包含任何标记(标记),并且抛出的错误是对此违规的响应。
有两种方法可以正确执行此操作:短和长:
0.1。 简短方法。使用:
<input type="text" value="{//return/ControlNo}"/>
在属性值中使用{someExpression}
称为 AVT -- Attribute-Value-Template 。它会导致someExpression
被评估,评估结果将替换此AVT。
0.2。 很长的路。使用:
<input type="text">
<xsl:attribute name="value">
<xsl:value-of select="//return/ControlNo"/>
</xsl:attribute>
</input>
这是一个如何使用XSLT指令 <xsl:attribute>
来创建具有特定名称和特定值的属性的示例。创建的属性必须紧跟元素的创建(否则将抛出错误)。该属性将立即成为其后续元素的属性。