Как разобрать разделенную "/" строку в XSLT / XPath? - PullRequest
0 голосов
/ 18 сентября 2018

Проблема заключается в следующем: в моем XML есть элемент с содержимым "x / y".Это указывает порядковый номер входящей «части». Например, в первом XML этот элемент будет иметь значение 1/5, во втором 2/5 и в последнем 5/5.Вы получаете смысл.Сам элемент выглядит как

<part>x/y</part>

, где x может быть что-то между 1 и y, а y может быть любым числом

Мне нужно найти ответ на два случая:

  1. результат должен быть «Добавить», когда x = 1
  2. результат должен быть «Завершить», когда x = y

Как решить эту проблему с помощью XSL (версия 1.0)?

1 Ответ

0 голосов
/ 18 сентября 2018

Использование substring-before():

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text"/>

  <xsl:template match="part">
    <xsl:variable name="x" select="substring-before(., '/')"/>
    <xsl:variable name="y" select="substring-after(., '/')"/>
    <xsl:choose>
      <xsl:when test="$x = 1">Add</xsl:when>
      <xsl:when test="$x = $y">Complete</xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="concat('Unexpected values for x,y: ', $x, ',', $y)"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:template>

</xsl:stylesheet>
...