Регулярное выражение XSLT не совпадает, даже если в онлайн-тестах правильное соответствие - PullRequest
0 голосов
/ 09 января 2019

Учитывая пример пути C: \ example \ innerExample \ file.txt, я хочу извлечь имя файла с расширением, используя это регулярное выражение, вы можете увидеть его здесь .

<xsl:analyze-string select="$filePath" regex="$regexPattern" flags="mis">
  <xsl:matching-substring>
    <xsl:value-of select="concat(regex-group(2), regex-group(3))"/>
  </xsl:matching-substring>
</xsl:analyze-string>

Это мой xslt-код, я что-то пропустил?

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Вы не показали нам полные, но минимальные примеры с правильными значениями, но с исправлением не экранирования / в квадратных скобках. Я думаю, что ваш шаблон работает с XSLT / XPath 2 и более поздними версиями:

Input

<root>
    <data>C:\example\innerExample\file.txt</data>
</root>

находится на https://xsltfiddle.liberty -development.net / jyRYYhM с преобразованием

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    exclude-result-prefixes="#all"
    version="3.0">

  <xsl:param name="regexPattern" as="xs:string">^(.*)[/|\\](.*)(\..*)</xsl:param>

  <xsl:mode on-no-match="shallow-copy"/>

  <xsl:template match="data">
      <xsl:copy>
          <xsl:analyze-string select="." regex="{$regexPattern}" flags="mis">
              <xsl:matching-substring>
                <xsl:value-of select="concat(regex-group(2), regex-group(3))"/>
              </xsl:matching-substring>
          </xsl:analyze-string>
      </xsl:copy>
  </xsl:template>

</xsl:stylesheet>

в

<root>
    <data>file.txt</data>
</root>

(Я использовал XSLT 3 там, но я думаю, что между XSLT 2 и 3 не было никаких изменений с точки зрения xsl:analyze-string).

0 голосов
/ 09 января 2019

Не вдаваясь в ваши попытки (которые я не могу воспроизвести), я считаю, что вы можете извлечь имя файла с расширением, просто используя:

<xsl:value-of select="tokenize($filepath, '\\')[last()]"/>

Демо : http://xsltransform.hikmatu.com/6qVRKvN

...