XSLT:分析字符串,在正则表达式上替换

时间:2018-10-04 13:07:01

标签: xml xslt xslt-2.0

这是此问题的后续措施: XSLT: analyze-string on text with children nodes

我试图在可能包含子节点的元素上使用analyst-string。这是源文件的片段:

    <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 :(得分:0)

您需要添加一个与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>