XSLT if语句不正确匹配

时间:2013-10-27 08:35:52

标签: javascript xslt

我正在匹配XML数据类型,然后选择相应的记录。我根据需要显示所选数据,并将其显示在JavaScript警报中。但是,当我执行if语句时,它只匹配XML文档中的所有内容。这是我的XSLT

<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
<xsl:output method="text"/>
<xsl:param name="customeroBeSelected" />
<xsl:template match="/myDataSet/Customers">
      <xsl:if test="CustomerNo = $customeroBeSelected"> 
           <xsl:value-of select="FirstName" />  
           <xsl:text> </xsl:text>
           <xsl:value-of select="Surname" />    
      </xsl:if> 
</xsl:template>
</xsl:stylesheet>

一切正常,但由于某种原因,似乎每个客户都在循环。

  <myDataSet> 
      <customers> 
          <CustomerID>200</CustomerID> 
          <CustomerNo>SA124</CustomerNo> 
          <FirstName>Sally-Anne</FirstName> 
          <Surname>Adams</Surname> 
          <CreditLimit>300</CreditLimit> 
      </customers>

      <customers> 
          <CustomerID>201</CustomerID> 
          <CustomerNo>AS256</CustomerNo> 
          <FirstName>Anne</FirstName> 
          <Surname>Samuels</Surname> 
          <CreditLimit>1000</CreditLimit>
      </customers>

 </myDataSet>

我想选择与CustomerNo对应的客户FirstName。但是,我的if语句正在选择它和其他所有内容。

1 个答案:

答案 0 :(得分:2)

第一个问题是xsl:template匹配表达式的情况,xml元素是小写的;第二个是你如何使用你的参数:

<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
<xsl:output method="text"/>
<xsl:param name="customeroBeSelected">SA124</xsl:param>
<xsl:template match="/myDataSet/customers">
      <xsl:if test="CustomerNo=$customeroBeSelected"> 
           <xsl:value-of select="FirstName" />  
           <xsl:text> </xsl:text>
           <xsl:value-of select="Surname" />    
      </xsl:if> 
</xsl:template>
</xsl:stylesheet>

这里看到它的工作原理: http://www.xsltcake.com/slices/zuNNZT