Я пытался проверить мой XSLT на примере XML-файла.
Однако вывод будет содержать только пустой тег.
Я полагаю, что это не удается на <when test="self::text()">
Я думал, что если бы это был текст, он напечатал бы значение.
Пожалуйста, скажите, пожалуйста, что пошло не так.
XML-файл:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="xslt2.xslt"?>
<library>
<book><page>30</page></book>
<book>fun</book>
</library>
XSLT-файл:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<result>
<xsl:call-template name="t">
<xsl:with-param name="b" select="."></xsl:with-param>
</xsl:call-template>
</result>
</xsl:template>
<xsl:template name="t">
<xsl:param name="b"/>
<xsl:for-each select="$b/*|$b/text()">
<xsl:choose>
<xsl:when test="self::text()">
<xsl:value-of select="." disable-output-escaping="no"></xsl:value-of>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>