Я работал над чем-то для своего босса, веб-сайта, который отображает веб-сервисы системы продажи билетов. Веб-сервис выкладывает XML-файл на основе запроса. Моя проблема в том, что когда я пытаюсь установить условия для вывода, я либо получаю сообщение об ошибке, либо он пропускает весь путь до записи «иначе», когда массив, содержащий записи XML для каждого тикета, явно совпадает с тем, что у меня есть в моем тесте. Я новичок в XSLT, и у меня есть только то, что я изучил. Может кто-нибудь посмотреть на то, что у меня есть, и объяснить, почему это не работает? Я знаю, что это как-то связано с тестовым выражением.
XML (вывод в массиве, без оригинального XML-файла)
Array
(
[RowCount] => 3
[HasError] => false
[ErrorMessage] => Array
(
)
[StackTrace] => Array
(
)
[IncidentList] => Array
(
[Incident] => Array
(
[0] => Array
(
[GroupName] => EXTERNAL_SUPPORT
[IncidentNumber] => 229178
[OpenDateAndTime] => 2011-05-09T10:42:33
[State] => O
[StatusID] => EMAIL WIP
[SubjectID] => MAGIC
[UrgencyID] => NORMAL
)
[1] => Array
(
[GroupName] => CISS SYSTEMS
[IncidentNumber] => 203863
[OpenDateAndTime] => 2010-05-25T09:16:55
[State] => C
[StatusID] => CLOSED
[SubjectID] => ULID EXPIRATION
[UrgencyID] => NORMAL
)
[2] => Array
(
[GroupName] => HELP DESK 1ST LEVEL
[IncidentNumber] => 186909
[OpenDateAndTime] => 2009-09-11T09:58:44
[State] => C
[StatusID] => CLOSED
[SubjectID] => QUESTION
[UrgencyID] => NORMAL
)
)
)
)
Я использую этот фрагмент XSLT для отображения таблицы, основанной на состоянии «O», «C» или иным образом, для отображения сообщения об отсутствии билетов для отображения.
<xsl:template match="/">
<table id="myTable" class="list">
<tr>
<td class="title">Incident</td>
<td class="title">Category</td>
<td class="title">State</td>
<td class="title">Status</td>
<td class="title">Date</td>
</tr>
<xsl:choose>
<xsl:when test="State = 'O'">
<xsl:for-each select="Results/IncidentList/Incident">
<tr>
<td>#<xsl:value-of select="IncidentNumber"/></td>
<td><xsl:value-of select="SubjectID"/></td>
<td>OPEN</td>
<td><xsl:value-of select="StatusID"/></td>
<td>
<xsl:call-template name="formatDate">
<xsl:with-param name="dateTime" select="OpenDateAndTime" />
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</xsl:when>
<xsl:when test="State = 'C'">
<xsl:for-each select="Results/IncidentList/Incident">
<tr>
<td class="closed">#<xsl:value-of select="IncidentNumber"/></td>
<td class="closed"><xsl:value-of select="SubjectID"/></td>
<td class="closed">CLOSED</td>
<td class="closed"></td>
<td class="closed">
<xsl:call-template name="formatDate">
<xsl:with-param name="dateTime" select="OpenDateAndTime" />
</xsl:call-template>
</td>
</tr>
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<tr>
<td colspan="5">There are no incidents to display</td>
</tr>
</xsl:otherwise>
</xsl:choose>
</table>
</xsl:template>
</xsl:stylesheet>
Я перепробовал каждую итерацию тестового выражения, и я либо получаю ошибки, либо оно переходит непосредственно к другому. Любая помощь будет принята с благодарностью!