2013-10-27 106 views
2

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

<?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对应的客户名字。但是,如果我的陈述是选择那个和其他一切。

回答

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

+0

谢谢。我的匹配表达式在这里被更改为不太可识别。我使用了你的版本,它仍然改变了每个数据集中的每个元素的innerHTML。我不确定它为什么没有在看if语句? – Tom

+0

@TomNagle乐意帮忙。 if语句没有运行,因为xsl:template'match'不匹配...元素区分大小写('c'ustomers)。请接受我的答案,如果它的工作。 –