Приведенный ниже XML и соответствующий код XSL, почему мы получаем выходные данные, когда условие не выполняется?
Насколько я понимаю, поскольку существует несколько узлов чуда, он сначала рассмотрит один, а затем обнаружит, что условие ложно, и, следовательно, не должно показывать вывод.
XML:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="02-01.xsl"?>
<ancient_wonders>
<wonder>
<name language="English">Colossus of Rhodes1</name>
<name language="Greek">Κολοσσός της Ρόδου1</name>
<location>Rhodes, Greece</location>
<height units="feet">107</height>
<main_image filename="colossus.jpg" w="528" h="349"/>
<source sectionid="101" newspaperid="21"></source>
</wonder>
<wonder>
<name language="English">Colossus of Rhodes2</name>
<name language="Greek">Κολοσσός της Ρόδου2</name>
<location>Rhodes, Greece</location>
<height units="feet">120</height>
<main_image filename="colossus.jpg" w="528" h="349"/>
<source sectionid="103" newspaperid="21"></source>
</wonder>
</ancient_wonders>
XSLT:
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<!-- Output Method -->
<xsl:output method="html"/>
<!-- Root Template -->
<xsl:template match="/">
<html>
<body>
<p><b>Output 1 :</b></p>
<xsl:if test="ancient_wonders/wonder/height != 107">
<p>Height = <xsl:value-of select="." /></p>
</xsl:if>
<p><b>Output 2 :</b></p>
<xsl:if test="ancient_wonders/wonder/height != 107">
<p>Height = <xsl:value-of select="ancient_wonders/wonder/height" /></p>
</xsl:if>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Выход:
Output 1 :
Height = Colossus of Rhodes1 Κολοσσός της Ρόδου1 Rhodes, Greece 107 Colossus of Rhodes2 Κολοσσός της Ρόδου2 Rhodes, Greece 120
Output 2 :
Height = 107