Как сказал Лейф, содержимое в разделе CDATA
не анализируется, поэтому это просто текст, даже если он выглядит как разметка. Вы должны разобрать это. Что вы можете сделать, используя Saxon (9.1 или более поздние коммерческие выпуски) и saxon:parse
. Затем вы обнаружите, что он плохо сформирован, поэтому вам, вероятно, придется прибегнуть к синтаксическому анализатору, такому как TagSoup , чтобы проанализировать его.
Вы также можете рассматривать это как строку:
<xsl:stylesheet version="1.0"
xmlns:saxon="http://saxon.sf.net/"
exclude-result-prefixes="saxon"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<Root>
<!--xsl:value-of select="saxon:parse(/books/book/content)"/-->
<xsl:for-each select="books/book/content">
<xsl:value-of select="
substring-before(
substring-after( . , '>' ), '<' ) "/>
</xsl:for-each>
</Root>
</xsl:template>
</xsl:stylesheet>