<xsl:comment><xsl:apply-templates select="image" /></xsl:comment>
В результате:
<!---->
это код в элементе
xsl: комментарий игнорируется
XSLT 1.0 Spec говорит :
Ошибка при создании экземпляра
содержимое xsl: comment создает узлы
кроме текстовых узлов. XSLT
процессор может сигнализировать об ошибке; если оно
не сигнализирует об ошибке, он должен
восстановить, игнорируя обидчика
узлы вместе с их содержимым.
Как отобразить элемент в
комментарии?
Зависит от того, что подразумевается под «отображением»: в браузере:
<-- <xsl:apply-templates select="image" /> -->
может быть полезным, если результат <xsl:apply-templates/>
выше - просто текст (не разметка).
Если «отобразить» означает предоставить результат в виде текста, то DOE, если это разрешено процессором XSLT, может дать нам желаемый результат:
<-
Немного текста ->
Наконец, если требуется, чтобы то, что должно быть внутри «комментария», было разметкой и отображалось как разметка, то это довольно сложно. В этом случае нужно использовать:
<xsl:output method="text"/>
и должен представлять каждый лексический элемент XML с его желаемой сериализацией (т.е. экранированной).
Вот как XPath Visualizer создает свой вывод.
Вот небольшое преобразование, которое демонстрирует первые два подхода :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<-- Hello, World -->
<xsl:text disable-output-escaping="yes"><--</xsl:text>
Hello,world! --<xsl:text disable-output-escaping="yes">></xsl:text>
</xsl:template>
</xsl:stylesheet>
это преобразование при применении к любому XML-документу (не используется) приводит к :
<-- Hello, World -->
<--
Hello,world! -->
Оба «комментария» можно просматривать как комментарии в браузере, в то время как только второй текст представлен в виде комментария в свободном тексте.
Третий подход (наиболее вероятно, что вы хотите) иллюстрируется ниже :
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<-- <xsl:apply-templates select="image"/> -->
</xsl:template>
<xsl:template match="image">
<img src="<xsl:value-of select="@src"/>"
width="<xsl:value-of select="@width"/>px"
height="<xsl:value-of select="@height"/>px"/>
</xsl:template>
</xsl:stylesheet>
когда это преобразование применяется к следующему документу XML :
<image src="http://example.com/yyy.jpg" width="200" height="300"/>
желаемый результат получен :
<--
<img src="http://example.com/yyy.jpg"
width="200px"
height="300px"/>
-->
рассматривается в браузере как :
<-
<img src = "http://example.com/yyy.jpg"
ширина = "200px"
высота = "300px" />
->