Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath Collective.xdv中的local-name()支持_Xpath_Plone_Xdv - Fatal编程技术网

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

Xpath Collective.xdv中的local-name()支持,xpath,plone,xdv,Xpath,Plone,Xdv,我有一个Plone 3.5网站,我正在尝试将Simple Social的类似FB的动作嵌入到collective.xdv主题的内容中。类似FB的函数嵌入在XML标记中 <fb:like></fb:like> 但是,我没有看到任何输出。collective.xdv是否支持上述内容?在XPATH中有没有其他方法选择fb:like标记?aiui,本地名称不是这样工作的。您需要匹配命名空间限定标记,然后local-name()返回非限定名称。我相信/*只返回默认名称空间中的标记

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

<fb:like></fb:like>

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

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


你试过了吗?[我知道,这太容易了-我认为这是错误的-但是,它是容易的:-)]

lxml使用的libxml2 HTMLPasser,因此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编辑器中很难保证


劳伦斯

我不知道它是否正确,因为如果我使用它,collective.xdv会破坏主题。如果我选择它的父节点,我只会得到一个空标记。谢谢。这是可行的,我在这里得到了缺少的元素和它们的属性。但是,缺少它的子元素。我怀疑现在这是一个不同的问题,它可能与产品的javascript需求有关。它与默认主题一起工作。嗨@h2o!你成功地得到孩子了吗?你会接受正确的答案并提出一个新问题吗?
<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>