file:file在这个XSLT中代表什么?

时间:2011-04-03 21:49:05

标签: xml

我开始使用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"/>
  [...]

1 个答案:

答案 0 :(得分:5)

file中的三个file:file/file:description令牌中有两个是命名空间名称。在XML和XSLT中,a:b表示“命名空间中的b”。您可以看到xmlns行,一旦您知道找到它就会解释file是一个命名空间。

因此,字符串意味着查找file:description(如果文档中的所有内容都在description命名空间中)file下,可能看起来像file:file。有意义吗?