Поддержка 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? [Я знаю, это слишком просто - и я думаю, что это неправильно - но опять же, это легко:-) ]

Другие вопросы по тегам