为什么斜杠导致文件错误(无法打开xml文件)vs如果我在匹配中专门使用名称? Aren他们是同义词吗?
下面的代码片段:
<xsl:template match="/"> <!-- In question, different results / vs root -->
<xsl:apply-templates select="greeting"/>
</xsl:template>
示例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="html"/>
<xsl:template match="/"> <!-- In question, different results / vs root -->
<xsl:apply-templates select="greeting"/>
</xsl:template>
<xsl:template match="greeting">
<html>
<body>
<h1>
<xsl:value-of select="."/>
</h1>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
示例xml
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="helloworld.xslt"?>
<root>
<greeting>
Hello, World!
</greeting>
<greeting>
Hello, World Too!
</greeting>
</root>
答案 0 :(得分:2)
当您使用/
时,您处于文档级别。
文档级别上唯一存在的元素是<root>
元素。但是您使用select
属性来表示,特别是将模板应用于名为greetings的元素,但这在文档级别上不存在,它存在于<root>
元素中。
您有三种选择。
<xsl:template match="/root">
<xsl:apply-templates />
<xsl:apply-templates select="root/greeting"/>