我正在读考试,我想确保我正确理解这一点。以下是打印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>
答案 0 :(得分:0)
您的样式表将忽略A
,因为从文档根目录(第一个模板匹配的位置)的角度来看,有两个next/item
个节点,但否 { {1}}个节点。只有previous/item
个节点。
如果您将模板更改为
next/previous/item
然后会找到所有<xsl:template match="/">
<HowDoes>
<xsl:apply-templates select=".//item" />
</HowDoes>
</xsl:template>
个节点,因为它正在查找当前节点的所有item
后代,而不是item
个item
个子节点{1}}孩子。