xsl:for-каждый счетчик цикла

Правила Прометея оценивают в текущий момент времени , данные облачных часов часто очень сильно задерживаются, поэтому, хотя вы можете получить график исторических данных, значение текущих данных всегда равно нулю.

Вы можете исправить это, добавив смещение, например:

(
  max(aws_sqs_approximate_number_of_messages_visible_average{queue_name="queue-1"} offset 10m) 
+ max(aws_sqs_approximate_number_of_messages_not_visible_average{queue_name="queue-2"}) offset 10m) 
/ sum(kube_pod_container_status_ready{container="worker"} offset 10m
)
10
задан Dimitre Novatchev 17 October 2010 в 20:34
поделиться

1 ответ

Каждый "не сохраняет повторения, которые произошли в xsl:for-каждом", потому что XSLT является функциональным языком, и переменные неизменны.

Следующее преобразование находит требуемый максимум:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>

    <xsl:template match="/">
      <xsl:call-template name="maximum">
        <xsl:with-param name="pNodes" select="*/Question"/>
      </xsl:call-template>
    </xsl:template>

    <xsl:template name="maximum">
      <xsl:param name="pNodes"/>

      <xsl:variable name="vNumNodes" select="count($pNodes)"/>

      <xsl:choose>
        <xsl:when test="$vNumNodes = 1">
          <xsl:value-of select="count($pNodes[1]/Response)"/>
        </xsl:when>
        <xsl:otherwise>
          <xsl:variable name="vHalf" 
               select="floor($vNumNodes div 2)"/>

          <xsl:variable name="vMax1">
           <xsl:call-template name="maximum">
            <xsl:with-param name="pNodes"
                 select="$pNodes[not(position() > $vHalf)]"/>
           </xsl:call-template>
          </xsl:variable>

          <xsl:variable name="vMax2">
           <xsl:call-template name="maximum">
            <xsl:with-param name="pNodes"
                 select="$pNodes[position() > $vHalf]"/>
           </xsl:call-template>
          </xsl:variable>

          <xsl:value-of select=
           "$vMax1*($vMax1 >= $vMax2) + $vMax2*($vMax2 > $vMax1)"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:template>
</xsl:stylesheet>

При применении на предоставленный XML-документ:

<Survey>
    <Question>
        <Response text="Website" />
        <Response text="Print Ad" />
    </Question>
    <Question>
        <Response text="Yes" />
    </Question>
</Survey>

к требуемому результату приводят:

2

Действительно отметьте следующее: шаблон называют"maximum"называет себя рекурсивно и реализует DVC (Разделите и Завоюйте принцип) минимизировать глубину стопки рекурсии. Список узлов разделяется на два, максимумы двух списков вычисляются (рекурсивно), и больший из этих двух возвращается.

10
ответ дан 4 December 2019 в 01:32
поделиться
Другие вопросы по тегам:

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