使用按钮更新使用XSL设置样式的XML元素

时间:2015-04-14 17:38:00

标签: xml xslt

作为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>
            &#160;<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>
         &#160;<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。

希望有意义......非常感谢任何可以提供的帮助。谢谢!

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>