XSLT: Как представить ИЛИ в атрибуте “соответствия”?

Перемешивание чисел от 1 до 100 является правильной базовой стратегией, но если вам нужно всего 8 перетасованных чисел, нет необходимости перетасовывать все 100 номеров.

Я не знаю Javascript очень хорошо, но я считаю, что легко создать массив из 100 нулей. Затем в течение 8 раундов вы меняете n-й элемент массива (n начиная с 0) со случайно выбранным элементом от n + 1 до 99. Конечно, любые элементы, которые не заполнены, еще не означают, что элемент действительно был бы исходный индекс плюс 1, так что это тривиально, чтобы фактор. Когда вы закончите с 8 раундами, первые 8 элементов вашего массива будут иметь ваши 8 перетасованных чисел.

27
задан tomato 5 March 2009 в 20:10
поделиться

5 ответов

Попробуйте это:

<xsl:template match= "A | B" >

Посмотрите эту страницу для деталей.

38
ответ дан David 14 October 2019 в 12:38
поделиться

Обычно A | B правильный способ сделать это. Но символ вертикальной черты является в основном объединением двух полных выражений XPath. Это может быть раздражающим для использования его в случае как это:

/red/yellow/blue/green/gold | red/orange/blue/green/gold

, так как Вы повторяете полноту выражения за исключением одной маленькой части, он - то изменение.

В случаях как это, часто имеет смысл использовать предикат и эти name() функция вместо этого:

/red/*[name() = 'yellow' or name()='orange']/blue/green/gold

Эта техника предоставляет Вам доступ к намного более широкому диапазону логических операций. Это также (очевидно) быстрее, поскольку навигатор XPath только должен пересечь узлы, это тестирует однажды.

27
ответ дан Robert Rossney 14 October 2019 в 12:38
поделиться

<xsl:template match= " 'A' or 'B'" >

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

  1. А обрабатывают соответствия по шаблону узлы , не строки. Поэтому названия элементов, которые будут согласованы, не должны быть определены как заключенные в кавычки строки.

  2. оператор XPath "или" действия на двух булевых значениях, не на узлах. Что необходимо, вот другой оператор XPath - объединение оператор "|" .

вышеупомянутое Принятия во внимание, каждый правильно определит шаблонное правило как:

<xsl:template match= "A | B" >
     <!-- whatever I want to do here -->
</xsl:template>
6
ответ дан Tom Fenech 14 October 2019 в 12:38
поделиться

Я думаю, что более удобно использовать этот XPath

/red/(yellow | orange)/blue/green/gold

, а не

/red/*[name() = 'yellow' or name()='orange']/blue/green/gold
12
ответ дан 14 October 2019 в 12:38
поделиться

Ниже информации подбирался из: http://www.cafeconleche.org/books/bible2/chapters/ch17.html#d1e2090

, который я буду перефразировать, ищите текст "Используя или оператор |" в том документе.

синтаксис:

<xsl:template match="A|B">
   <!-- Do your stuff> -->
</xsl:template>
1
ответ дан qxotk 14 October 2019 в 12:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: