Поддержка local-name() в Collective.xdv
У меня есть сайт Plone 3.5, и я пытаюсь встроить действие Simple Social в FB Like для содержимого в теме коллективной. Функция FB Like встроена в тег XML
<fb:like></fb:like>
Я пытаюсь выбрать его XPATH через
//*[local-name()="like"]
Однако я не вижу никакого вывода. Поддерживается ли вышеперечисленное в коллективе.xdv? Есть ли другой способ выбрать тег fb:like в XPATH?
2 ответа
HTMLParser libxml2, используемый lxml и, следовательно, 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.
Лоренс
aiui, это не так, как работает локальное имя. Вам нужно сопоставить тег, уточненный в пространстве имен, а затем local-name() возвращает неполное имя. я верю //*
возвращает только набор узлов тегов в пространстве имен по умолчанию.
Ты пытался //fb:like
? [Я знаю, это слишком просто - и я думаю, что это неправильно - но опять же, это легко:-) ]