我是XSLT的新手,我不了解模板的基本概念。 我正在做一个实验,看看输出是否符合我的预期。不幸的是。这是转型中的文件:
XML:
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<cd>
<title>Empire</title>
<artist>Bob Dylan</artist>
<continent>America</continent>
<country>USA</country>
<company>Columbia</company>
<price>10.90</price>
<year>1985</year>
</cd>
<cd>
<title>Hide your heart</title>
<artist>Bonnie Tyler</artist>
<country>Bulgaria</country>
<company>CBS Records</company>
<price>9.90</price>
<year>1988</year>
</cd>
</catalog>
这是XSLT:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text"/>
<xsl:template match="/">
<xsl:apply-templates select="//continent"/>
</xsl:template>
<xsl:template match="//continent">
<xsl:value-of select="continent"/>
</xsl:template>
</xsl:stylesheet>
输出为空表。我希望打印大陆标记的值,即America
。请详细说明这件事。谢谢你。
答案 0 :(得分:0)
错误在于:
<xsl:template match="//continent">
<xsl:value-of select="continent"/>
</xsl:template>
在此模板中,您匹配了<continent>
,而<xsl:value-of select="continent" />
则尝试从另一个<continent>
子标记(不存在)中检索信息。
如果您使用<xsl:value-of select="."/>
,<xsl:value-of select="text()"/>
甚至<xsl:apply-templates />
,则应获得所需的输出。