Уравнение XSLT с использованием полей списка SP - PullRequest
1 голос
/ 13 января 2012

У меня есть SP Dataview, который я преобразовал в XSLT, чтобы я мог добавить заголовок, отображающий процент (Завершено).
Прежде чем я преобразовал dvwp в xslt, я добавил два заголовка счетчика - один в Complete, а другой в LastName. Они работали чудесно - показывали мне количество записей и количество записей со значением в полном поле. Однако, когда я преобразовал dv в xslt, я понял, что потерял свои заголовки :(

Итак, я добавляю их обратно в xslt. В настоящее время код XPath для моего уравнения равен <xsl:value-of select="count($Rows) div count($Rows)" />.
Как я могу получить общее количество значений Yes, которые есть в моем поле Complete?

Update1:
Нашел это http://www.endusersharepoint.com/STP/viewtopic.php?f=14&t=534 и попробовал его, однако вызывает следующую ошибку - Ошибка установки таблицы стилей процессора: 0x80004005: Аргумент 1 должен возвращать набор узлов. -> count (/ dsQueryResponse / Rows / Row = 'Y') <- </strong>

UPDATE2:
Complete - это имя поля с моим набором данных XSLT. Тип возвращаемого значения - Y или пусто. Для ухмылок я попытался <xsl:value-of select="count(/xpath/to/parent/element[@Complete eq 'Y']) div count($Rows)" />, однако получил следующую ошибку - Не удалось установить таблицу стилей процессора: 0x80004005: Ожидаемый токен ']' found 'NAME'.count ((/ xpath / to / parent / element [@Complete - > eq <- 'Y']) div count ($ Rows) </strong> Начинаю думать, что может быть проблема с / eq .... Ссылка на мои операторы XML ...

Update3: 1021 *
*

<xsl:value-of select="count(/xpath/to/parent/element[@Complete = 'Y']) div count($Rows)" />

Ладно, значит, он по-прежнему показывает 0, но я думаю, что причина, по которой он не показывает правильный ответ, состоит в том, что b / c ожидает показать целое число, и, очевидно, значение, возвращаемое из уравнения, будет десятичным. .. возился с уравнением в XPath ... вот что я попробовал -

count(/xpath/to/parent/element[@Complete = 'Y']) div count($Rows)*100
(count(/xpath/to/parent/element[@Complete = 'Y']) div count($Rows))*100
100(count(/xpath/to/parent/element[@Complete = 'Y']) div count($Rows))

UPDATE4:
Итак, я знаю, что моя предыдущая мысль о том, что правильное число, не показывающее b / c, было плавающей точкой, неверна, так как все числа в XPath и XSLT 1.0 являются числами с плавающей точкой. Ссылка

UPDATE5:
После дальнейшего исследования я обнаружил, что проблема заключается в части count(/xpath/to/parent/element[@Complete = 'Y']) моего уравнения, так как она возвращает 0 вместо значения. [я знаю, что у меня есть по крайней мере 3 'Y' в моей полной коле]

ОБНОВЛЕНИЕ6 :

<records*>
<record*>
  <last_name></last_name>
  <first_name></first_name>
  <mi></mi>
  <office_symbol></office_symbol>
  <geo_location></geo_location>
  <complete></complete>
  <date_complete></date_complete>
  <date_expires></date_expires>
  <email></email>
  <supervisor></supervior>
</record*>
</records*>

* я не знаю, как называются эти узлы, так как мои данные поступают из базы данных, а не из файла XML, я просто составил запись / записи

UPDATE7
Возвращаясь к моему первоначальному вопросу. Я все еще пытаюсь выяснить уравнение XPath для отображения количества родителей (запись в XML, который я разместил выше), где полный узел = Y.

UPDATE8
Хорошо. Итак, я отредактировал и протестировал, используя http://www.w3schools.com/xsl/tryxslt.asp?xmlfile=cdcatalog&xsltfile=tryxsl_value-of. Рабочий XSLT для подсчета числа завершенных = Y равен <xsl:value-of select="count(catalog/cd [complete = 'Y'])" />, поэтому я положил ТОЧНО, что работает в W3schools в мой SP Dataview, и я ничего не получаю ... просто пустой пространство. Почему код не работает в моем SPDV?

1 Ответ

0 голосов
/ 13 января 2012

Если ваше поле "Complete" является элементом:

 <xsl:value-of select="count(/xpath/to/complete/field/element[string(.) eq 'Yes])"/>

Если ваше полное поле является атрибутом элемента:

 <xsl:value-of select="count(/xpath/to/parent/element[@complete eq 'Yes'])"/>

Не зная структуры вашего XML, я не могу предоставить конкретный требуемый XPATH - предикат "[]" выбирает только значения "Да"

...