次の XML コードがあります。
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet media="netscape" type="text/xsl" href="periodic.xsl"?>
<PERIODIC_TABLE>
<ATOM STATE="GAS">
<NAME>Hydrogen</NAME>
<SYMBOL>H</SYMBOL>
<ATOMIC_NUMBER>1</ATOMIC_NUMBER>
<ATOMIC_WEIGHT>1.00794</ATOMIC_WEIGHT>
<BOILING_POINT UNITS="Kelvin">20.28</BOILING_POINT>
<MELTING_POINT UNITS="Kelvin">13.81</MELTING_POINT>
<DENSITY UNITS="grams/cubic centimeter">
<!-- At 300K, 1 atm -->0.0000899
</DENSITY>
</ATOM>
<ATOM STATE="GAS">
<NAME>Helium</NAME>
<SYMBOL>He</SYMBOL>
<ATOMIC_NUMBER>2</ATOMIC_NUMBER>
<ATOMIC_WEIGHT>4.0026</ATOMIC_WEIGHT>
<BOILING_POINT UNITS="Kelvin">4.216</BOILING_POINT>
<MELTING_POINT UNITS="Kelvin">0.95</MELTING_POINT>
<DENSITY UNITS="grams/cubic centimeter">
<!-- At 300K -->0.0001785
</DENSITY>
</ATOM>
</PERIODIC_TABLE>
そして、この XSL コードで「NAME」のすべての値を出力しようとしています:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<xsl:value-of select="//ATOM/NAME" />
</html>
</xsl:template>
</xsl:stylesheet>
しかし、出力は次のとおりです。
<html>Hydrogen</html>
「ヘリウム」もあるはずですが。たとえば、xml:template 一致属性で「NAME」を選択するなど、これを行う他の方法があることは認識していますが、この動作の理由を知る必要があるため、value-of の使用方法を学ぶことができます。