Учитывая следующий фрагмент XML:
<foo>
<bar>1</bar>
<bar>2</bar>
<bar>3</bar>
</foo>
Должен работать следующий XSL:
<xsl:template match="/">
<xsl:apply-templates mode="items" select="bar" />
</xsl:template>
<xsl:template mode="items" match="bar">
<xsl:value-of select="." />
</xsl:template>
Нет,<xsl:apply-templates>
, приведенный выше, вообще не выбирает ни одного узла .
Есть ли способ использовать аналогичный формат для этого, чтобы применить шаблон, когда нет сущностей?
Да :
<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="/*[not(bar)]">
No <bar/> s.
</xsl:template>
<xsl:template match="/*[bar]">
<xsl:value-of select="count(bar)"/> <bar/> s.
</xsl:template>
</xsl:stylesheet>
применительно к предоставленному документу XML :
<foo>
<bar>1</bar>
<bar>2</bar>
<bar>3</bar>
</foo>
результат равен :
3<bar/> s.
При применении к этому документу XML :
<foo>
<baz>1</baz>
<baz>2</baz>
<baz>3</baz>
</foo>
результат равен :
No <bar/> s.