XSLT实践示例

时间:2013-04-11 11:09:31

标签: xml xslt

我正在读考试,我想确保我正确理解这一点。以下是打印ABC还是BC,因为模板未应用于next / previous / item?

input.xml:

<?xml version="1.0" encoding="UTF-8"?>
<next>
    <previous>
        <item>A</item>
    </previous>
    <item>B</item>
    <item>C</item>
</next>

input.xsl:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="/">
        <HowDoes>
            <xsl:apply-templates select="next/item" />
            <xsl:apply-templates select="previous/item" />
        </HowDoes>
    </xsl:template>
    <xsl:template match="item">
        <ThisWork>
            <xsl:copy-of select="." />
        </ThisWork>
    </xsl:template>
</xsl:stylesheet>

1 个答案:

答案 0 :(得分:0)

您的样式表将忽略A,因为从文档根目录(第一个模板匹配的位置)的角度来看,有两个next/item个节点,但 { {1}}个节点。只有previous/item个节点。

如果您将模板更改为

next/previous/item

然后会找到所有<xsl:template match="/"> <HowDoes> <xsl:apply-templates select=".//item" /> </HowDoes> </xsl:template> 个节点,因为它正在查找当前节点的所有item 后代,而不是itemitem个子节点{1}}孩子。