Я пытаюсь использовать анализ-строку для элементов, которые могут содержать дочерние узлы.Вот фрагмент исходного файла:
<year>
1975 music
</year>
<year>
1985<genre>rock</genre>music
</year>
<year>
2005 music
</year>
И вот что я хотел бы получить:
<year>
70's music
</year>
<year>
80's<genre>rock</genre> music
</year>
Следующий код правильно соответствует 3 случаям, но я пропускаючто-то, чтобы скопировать как текст, так и возможные дочерние узлы под элементом year:
<xsl:template match="year">
<xsl:variable name="item" select="."/>
<xsl:analyze-string select="." regex="19(\d)\d">
<xsl:matching-substring>
<xsl:variable name="decade">
<xsl:value-of select="concat(regex-group(1),'0''s')"/>
</xsl:variable>
<year>
<xsl:value-of select="concat($decade,regex-group(2))"/>
<genre><xsl:value-of select="$item/genre"/>
</genre>
</year>
</xsl:matching-substring>
<xsl:non-matching-substring> </xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
Вот что я получаю:
<year>70's<genre/></year>
<year>80's<genre>rock</genre></year>
Заранее спасибо за любую помощь!