我有一个 Plone 3.5 站点,并且我正在尝试为collective.xdv 主题中的内容嵌入Simple Social 的FB Like 动作。FB Like 函数嵌入在 XML 标记中
<fb:like></fb:like>
我正在尝试通过
//*[local-name()="like"]
但是,我没有看到任何输出。在collective.xdv 中是否支持上述内容?还有另一种方法可以在 XPATH 中选择 fb:like 标记吗?
lxml 和 xdv/diazo 使用的 libxml2 HTMLParser 会去除命名空间前缀,因此您应该能够使用“//like”来选择它。
您将需要添加一些 xslt 代码来修复这些标签,因为它们必须被渲染才能工作:
<xsl:template match="activity|add-profile-tab|bookmark|comments|friendpile|like|like-box|live-stream|login-button|pronoun|recommendations|serverFbml|profile-pic|user-status">
<xsl:element name="fb:{local-name()}" xmlns:fb="http://www.facebook.com/2008/fbml">
<xsl:apply-templates select="@*|node()"/>
</xsl:element>
</xsl:template>
虽然 xdv/diazo 可以与 XMLParser 一起使用,但您需要确保向文档添加了 xmlns:fb="..." 声明,并且您的所有输入都是有效的 xhtml,这很难确保基于浏览器的 html 编辑器。
劳伦斯
aiui,这不是本地名称的工作方式。您需要匹配命名空间限定标记,然后local-name()返回非限定名称。我相信//*
只返回默认命名空间中的标签节点集。
你试过//fb:like
吗?[我知道,这太容易了——我认为这是错误的——但话又说回来,这很容易:-)]