有没有办法将表单中的值用于XML节点?提交此表单后,我希望表单字段中的值覆盖现有节点。
<html>
<head></head>
<body>
<form id="myForm" method="POST">
<input type="text" value="new XML node value here" />
<input type="submit" onClick="function();"/>
</form>
</body>
提前致谢
答案 0 :(得分:2)
此转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:ext="http://exslt.org/common">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:param name="pqueryString">
<s name="field1">Hello world!</s>
</xsl:param>
<xsl:variable name="vqs"
select="msxsl:node-set($pqueryString)"/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="input[@type='text']/@value">
<xsl:attribute name="value">
<xsl:value-of select=
"../@value[not($vqs/s[@name = current()/../@name])]
|
$vqs/s[@name = current()/../@name]
"/>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
应用于此XML文档(更正提供的格式正确):
<html>
<head></head>
<body>
<form id="myForm" method="POST">
<input name="field1" type="text" value="default" />
<input type="submit" onClick="function();"/>
</form>
</body>
</html>
生成想要的正确结果:
<html>
<head></head>
<body>
<form id="myForm" method="POST">
<input name="field1" type="text" value="Hello world!"></input>
<input type="submit" onClick="function();"></input>
</form>
</body>
</html>
请注意:
使用身份规则按原样复制文档。
HTTP请求的查询字符串作为名为pqueryString
的外部参数传递。
此处使用的ext:node-set()
扩展名在实践中不需要,因为该参数将在外部传递。
标识规则的唯一覆盖是针对名为value
的属性。
匹配@value
的模板会创建一个名称相同的属性,其值是用户指定的属性(包含在查询字符串参数中),或者是user没有为此属性指定值,而是指定其当前值。