3

我有一个 Plone 3.5 站点,并且我正在尝试为collective.xdv 主题中的内容嵌入Simple Social 的FB Like 动作。FB Like 函数嵌入在 XML 标记中

<fb:like></fb:like>

我正在尝试通过

//*[local-name()="like"]

但是,我没有看到任何输出。在collective.xdv 中是否支持上述内容?还有另一种方法可以在 XPATH 中选择 fb:like 标记吗?

4

2 回答 2

2

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 编辑器。

劳伦斯

于 2011-04-08T15:42:45.503 回答
0

aiui,这不是本地名称的工作方式。您需要匹配命名空间限定标记,然后local-name()返回非限定名称。我相信//*只返回默认命名空间中的标签节点集。

你试过//fb:like吗?[我知道,这太容易了——我认为这是错误的——但话又说回来,这容易:-)]

于 2011-04-08T03:32:11.153 回答