我开始使用XSLT了,我不明白这一行:
<xsl:apply-templates select="file:file/file:description" />
为什么有3 file
?
我知道XML文件中的一个标签名为“file”,但为什么要添加“file:”?
这是实际的代码:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:file="http://phpdox.de/xml#"
exclude-result-prefixes="#default file"
>
<xsl:output method="html" indent="yes" encoding="utf-8" />
<xsl:template match="/">
<html>
<body>
<xsl:apply-templates select="file:file/file:description" />
</body>
</html>
<xsl:template match="file:description">
<header>
<p><xsl:value-of select="@compact" /></p>
<p><xsl:value-of select="file:description" /></p>
</header>
</xsl:template>
</xsl:stylesheet>
源XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<file xmlns="http://phpdox.de/xml#">
<class>
<docblock>
<description compact="foo bar"/>
[...]
答案 0 :(得分:5)
file
中的三个file:file/file:description
令牌中有两个是命名空间名称。在XML和XSLT中,a:b
表示“命名空间中的b”。您可以看到xmlns
行,一旦您知道找到它就会解释file
是一个命名空间。
因此,字符串意味着查找file:description
(如果文档中的所有内容都在description
命名空间中)file
下,可能看起来像file:file
。有意义吗?