SQL データベースから作成されたテーブルがあります。入力されたほとんどのデータには、電子メールと名前の検索に使用できる ABN が含まれています。一部のデータには ABN がなく、UID しかありません。UID は 98% の確率で不要なので、テーブルに表示する必要はありません。そのため、名前がない場合は xsl:when を使用して名前フィールドを UID に変更します。
XML での 2 つのケースの例を次に示します。
<?xml version="1.0" encoding="UTF-8"?>
<CourseData>
<row batchid="0" courseid="10101" createdon="04/03/2012 01:08PM" datecompleted="1:08 PM" datecompletedDateValue="1333483680000" lastupdatebyabn="999999" lastupdatebyuid="tsmith" lastupdateon="04/03/2012 01:08PM" num="2" respondentabn="999999" respondentemail="tsmith@test.com" respondentid="1" respondentname="Thomas Smith" respondentuid="tsmith"/>
<row batchid="0" courseid="10101" createdon="04/03/2012 01:08PM" datecompleted="1:08 PM" datecompletedDateValue="1333483697000" lastupdatebyabn="" lastupdatebyuid="jsmith" lastupdateon="04/03/2012 01:08PM" num="3" respondentabn="" respondentemail="" respondentid="2" respondentname=" " respondentuid="jsmith"/>
</CourseData>
これは私が使用している XSL ですが、明らかに機能していません。
<xsl:choose>
<xsl:when test="row[@respondentabn='']">
<label datafield="@respondentuid"></label>
</xsl:when>
<xsl:otherwise>
<label datafield="@respondentname"></label>
</xsl:otherwise></xsl:choose></td>
どうすればこれを修正できますか?
編集:上司と話した後、彼は、これが正しく機能するためにそこにループが必要だと言いましたが、とにかく.xslでこれを行うべきではありません. データを提供しているSQLを変更して、その変更を行いました。振り返ってみると、おそらく最初に考えるべきだったでしょう。