XSLT: проанализировать строку, заменить на регулярные выражения - PullRequest
0 голосов
/ 04 октября 2018

Это продолжение этого вопроса: XSLT: анализ-строка для текста с дочерними узлами

Я пытаюсь использовать анализ-строку для элементов, которые могут содержать дочерние узлы,Вот фрагмент исходного файла:

    <year>
         1975 music
     </year>
     <year>
         1985<genre>rock</genre>music
     </year>
     <year>
         2005 music
     </year>

Вот теперь следующее упражнение.С тем же вводом xml я хотел бы добавить атрибуты:

    <year decade="7">
         70's music
     </year>
     <year decade="8">
         80's<genre>rock</genre> music
     </year>

Нужна ли строка анализа?Спасибо!

1 Ответ

0 голосов
/ 04 октября 2018

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

Попробуйте этот шаблон

<xsl:template match="year">
  <xsl:variable name="text" select="normalize-space(text()[matches(., $pattern)])" />
  <year decade="{replace($text, concat('.*', $pattern, '.*'), '$1')}">
    <xsl:apply-templates />
  </year>
</xsl:template>
...