Xpath Collective.xdv中的local-name()支持
我有一个Plone 3.5网站,我正在尝试将Simple Social的类似FB的动作嵌入到collective.xdv主题的内容中。类似FB的函数嵌入在XML标记中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()返回非限定名称。我相信/*只返回默认名称空间中的标记
<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>