作为XSL的新手,最少接触XML,我无法弄清楚如何将这两者与HTML集成。我想使用两个按钮来更新XML文档中捕获的两个元素,并使用XSL样式表更新显示的元素。我已经提供了以下代码的片段。
XML
<best_answer>
<head>
<title>Title text goes here </title>
<objective>
<goal>Goal text goes here</goal>
</objective>
<settings>
<setting type="Application">App Name</setting>
</settings>
<verifications>
<verification type="Helpful">10</verification>
<verification type="Unhelpful">5</verification>
</verifications>
</head>
</best_answer>
XSL
<xsl:template match="verifications">
<br></br>
<table style="border:1px dashed; align: center; border-spacing: 5px; width: 100%">
<tr colspan="2">
<td >Was this topic helpful?</td>
</tr>
<tr>
<td style="padding-left:20px;">
<button id="yes" type="button">Yes</button>
</td>
<td style="padding-left:30px;">
<button id="no" type="button">No</button>
</td>
</tr>
<tr></tr>
<tr></tr>
<tr>
<xsl:for-each select="verification">
<xsl:choose>
<xsl:when test="@type='Helpful'">
<td>
<img src="image.png" height="12" width="16">
</img>
 <xsl:value-of select="@type"/>:
<xsl:value-of select="text()"/><xsl:text></xsl:text>
</td>
</xsl:when>
<xsl:otherwise>
<img src="image2.png" height="12" width="16">
</img>
 <xsl:value-of select="@type"/>:
<xsl:value-of select="text()"/><xsl:text></xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:for-each>
</tr>
</table>
</xsl:template>
我想让“是”按钮更新类型等于“有用”的验证文本,并使用“否”按钮更新类型等于“无用”的验证文本。因此,例如,如果用户单击“是”按钮,则在Verification元素中捕获的类型为“有用”的文本应增加1。同样,如果用户单击“否”按钮,则在Verification元素中捕获的类型为“无用”的文本应增加1。
希望有意义......非常感谢任何可以提供的帮助。谢谢!
答案 0 :(得分:0)
以下是您可以用作起点的内容:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/best_answer">
<html>
<head>
<script>
function incrementValue(id)
{
var element = document.getElementById(id);
element.innerHTML = parseInt(element.innerHTML) + 1
}
</script>
</head>
<body>
<table border="1">
<tr>
<td colspan="2">Was this topic helpful?</td>
</tr>
<tr>
<td>
<button onclick="incrementValue('positive')">Yes</button>
</td>
<td>
<button onclick="incrementValue('negative')">no</button>
</td>
</tr>
<tr>
<td>Helpful</td>
<td>Unhelpful</td>
</tr>
<tr>
<td id="positive">
<xsl:value-of select="head/verifications/verification[@type='Helpful']"/>
</td>
<td id="negative">
<xsl:value-of select="head/verifications/verification[@type='Unhelpful']"/>
</td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>