我正在为phpdoc 2创建模板,我正在尝试弄清楚如何在创建文档时阻止将属性xmlns="http://www.w3.org/1999/xhtml"
添加到生成的HTML的根级元素中我的模板。模板中的.xsl文件生成包含html片段的文件,这就是<html>
标记不是根级元素的原因。看起来phpdoc 2使用的是XSLT v1.0,所以这限制了我的选择。进行一些搜索后,最常见的答案是使用每个.xsl文件的exclude-result-prefixes
标记上的<xsl:stylesheet>
属性,并将其值设置为#all
或#default
,因为您不能仅使用xmlns
作为命名空间直接排除。但我尝试过,在我的模板中的每个.xsl文件上设置exclude-result-prefixes
,但它不起作用。
根据要求,这是我的一个.xsl文件之一,api-doc.xsl:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="#all">
<xsl:output indent="no" method="html"/>
<xsl:include href="chrome.xsl"/>
<xsl:include href="api-doc/property.xsl"/>
<xsl:include href="api-doc/class.xsl"/>
<xsl:include href="api-doc/constant.xsl"/>
<xsl:include href="api-doc/function.xsl"/>
<xsl:include href="api-doc/docblock.xsl"/>
<xsl:include href="api-doc/file.xsl"/>
<xsl:template name="content">
<xsl:apply-templates select="/project/file[@path=$path]"/>
</xsl:template>
</xsl:stylesheet>
这是api-doc / file.xsl的片段:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://www.w3.org/1999/xhtml"
exclude-result-prefixes="#all">
<xsl:output indent="no" method="html"/>
<xsl:template match="file">
<div class="text-content">
<!-- ... -->
</div>
</xsl:template>
</xsl:stylesheet>
元素<div class="text-content"></div>
是添加了xmlns="http://www.w3.org/1999/xhtml"
属性的内容。
答案 0 :(得分:2)
示例中的<div>
文字结果元素位于命名空间http://www.w3.org/1999/xhtml中。如果您不希望它在该命名空间中,则不要将其放在该命名空间中。
答案 1 :(得分:2)
就像Michael Kay所说,如果您不想在xhtml命名空间中使用div
,请从xmlns="http://www.w3.org/1999/xhtml"
中删除默认命名空间(xsl:stylesheet
)。
否则,您可以使用xsl:element
构建元素并为其指定一个空命名空间:
<xsl:element name="div" namespace="">
<xsl:attribute name="class">text-content</xsl:attribute>
<xsl:text>...</xsl:text>
</xsl:element>