这可能是一个非常基本的问题,但我无法在这里或通过谷歌检查一小时后找到任何东西。我有一个表单上有一大堆输入和一个搜索自动完成,它将调用所选记录的xml数据。我打算使用XSLT转换此XML数据并为该客户端重现该表单的完整版本。我是XSLT的新手,所以到目前为止我一直在试验较小的例子,但是我不能,即使在这个较小的设置中,也不能得到生成的HTML,让它的输入由XML中的数据填充。
Xalan将生成HTML,所以我认为XML和XSLT至少都是vaild。两者的示例代码如下所示。我知道XSLT中存在冗余代码(在键盘上等)。它只是一个完整的形式,我希望一旦我可以解决这个例子,我希望能够工作。
XML
<?xml version="1.0"?>
<!-- clienttest.xml -->
<?xml-stylesheet type="text/xsl" href="XSLTtest.xsl"?>
<clientdetails>
<clientcode>
<CL.CREF>testsubjectcode</CL.CREF>
</clientcode>
<clientname>
<CL.NAME>testsubjectname</CL.NAME>
</clientname>
<clientaccount>
<CL.ACCT>testsubjectaccount</CL.ACCT>
</clientaccount>
</clientdetails>
XSLT
<?xml version="1.0"?>
<!-- greeting.xsl -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" omit-xml-declaration="no"
encoding="UTF-8"
doctype-public="-//W3C//DTD XHTML 1.1//EN"
doctype-system="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"/>
<xsl:template match="/">
<html>
<head>
<title>XSLT Trials</title>
</head>
<body>
<xsl:apply-templates select="clientdetails"/>
</body>
</html>
</xsl:template>
<xsl:template match="clientdetails">
<form>
<label for="clientcode">Client code:</label>
<input class="medium" name="clientcode" method="post" onkeyup="changed2()" type="text" id="clientcode" placeholder="New client's code">
<xsl:value-of select="./clientcode/CL.CREF"/>
</input>
<br></br>
<label for="clientname">Client name:</label>
<input class="medium" name="clientname" method="post" onkeyup="changed()" type="text" id="clientname" placeholder="New client's name">
<xsl:value-of select="./clientname/CL.NAME"/>
</input>
<br></br>
<label for="secondaccountcode">Second account code:</label>
<input class="medium" id="secondaccountcode" name="secondaccountcode" type="text">
<xsl:value-of select="./clientaccount/CL.ACCT"/>
</input>
</form>
</xsl:template>
</xsl:stylesheet>
如果有人能给我一个很棒的牌。我觉得我很接近,但我不能让它表现得很好。感谢
答案 0 :(得分:2)
如果我正确地解决了您的问题 - 您需要动态填充输入元素的值属性。
对于属性值,您可以使用活动值模板 - xPath表达式受限于弯曲括号(“{”和“}”)。 因此,您的XSLT“clientdetails”模板将是(请参阅 value 属性):
<xsl:template match="clientdetails">
<form>
<label for="clientcode">Client code:</label>
<input class="medium" name="clientcode" method="post" onkeyup="changed2()" type="text" id="clientcode" placeholder="New client's code" value="{./clientcode/CL.CREF}">
</input>
<br></br>
<label for="clientname">Client name:</label>
<input class="medium" name="clientname" method="post" onkeyup="changed()" type="text" id="clientname" placeholder="New client's name" value="{./clientname/CL.NAME}">
</input>
<br></br>
<label for="secondaccountcode">Second account code:</label>
<input class="medium" id="secondaccountcode" name="secondaccountcode" type="text" value="{./clientaccount/CL.ACCT}">
</input>
</form>
</xsl:template>