<xsl:if>条件不满足,仍给出输出

时间:2019-03-08 13:54:57

标签: xml xslt

考虑到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

1 个答案:

答案 0 :(得分:2)

表达式:

ancient_wonders/wonder/height

选择文档中的两个height元素。测试:

test="ancient_wonders/wonder/height != 107"

返回true,因为在比较的节点集中至少有一个满足条件的节点-请参阅:https://www.w3.org/TR/1999/REC-xpath-19991116/#booleans


xsl:value-of指令具有仅返回所选节点集的第一个节点的值的异常;这个异常已在XSLT 2.0中删除。