2

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ステートメントはそれと他のすべてを選択しています。

4

1 に答える 1

2

最初の問題は、xsl:template一致式の大文字と小文字です。xml 要素は小文字です。2番目は、パラメーターの使用方法です。

<?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

于 2013-10-27T10:08:21.090 に答える