Collective.xdv中的local-name()支持

时间:2011-04-07 09:30:55

标签: xpath plone xdv

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

<fb:like></fb:like>

我正在尝试通过

选择其XPATH
//*[local-name()="like"]

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

2 个答案:

答案 0 :(得分:2)

lxml使用libxml2 HTMLParser,因此xdv / diazo剥离名称空间前缀,因此您应该可以选择“// 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编辑器。

劳伦斯

答案 1 :(得分:0)

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

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