Как отфильтровать то, что показано в цикле for-each в XSL - PullRequest
1 голос
/ 03 февраля 2011

Я подумал, что было бы так же просто, как сказать for-each, чтобы выбрать только top_coach_sales_vw с «Site», равным «PB», но когда я запускаю скрипт, он не перебирает все данные в XML. 1001 *

Я избегаю одинарных кавычек, потому что это часть php-эха.

    <xsl:for-each select="NewDataSet/top_coach_sales_vw[Site==\'PB\']">
         <td><xsl:value-of select="name"/></td>
         <td><xsl:value-of select="Site"/></td>
         <td><xsl:value-of select="Status"/></td>
</xsl:for-each>

XML:

<NewDataSet>
  <top_coach_sales_vw>
      <name>Mike</name>
      <Site>PB</Site>
      <State>Ready</State>
  </top_coach_sales_vw>

  <top_coach_sales_vw>
      <name>Bill</name>
      <Site>EL</Site>
      <State>Talking</State>
  </top_coach_sales_vw>

  <top_coach_sales_vw>
      <name>Ted</name>
      <Site>PB</Site>
      <State>Ready</State>
  </top_coach_sales_vw>
</NewDataSet>

Ответы [ 2 ]

3 голосов
/ 03 февраля 2011
<xsl:for-each select="NewDataSet/top_coach_sales_vw[Site==\'PB\']">

Есть несколько проблем с этим :

  1. В XPath нет оператора ==.Возможно, вам нужен оператор сравнения =.

  2. \'PB\' синтаксически неверен - вы, вероятно, имели в виду просто 'PB'

  3. NewDataSet - это верхний элемент предоставленного XML-документа.Если указанная выше инструкция <xsl:for-each> находится в каком-либо шаблоне, который не соответствует корню (/) документа, выражение NewDataSet/top_coach_sales_vw[Site='PB'] не выберет ни одного узла, поскольку это относительное выражение, которое будет оцениваться вне текущегоузел (тот, которому соответствует шаблон).

Решение :

Использование:

<xsl:for-each select="/NewDataSet/top_coach_sales_vw[Site='PB']">
1 голос
/ 03 февраля 2011

XSLT использует один = в качестве оператора равенства.

Кроме того, вы выбираете Status в теле цикла, хотя список xml, который вы перечисляете, содержит State элементов - это, вероятно, недосмотр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...