Odoo Help


Element '<xpath expr="//header//a[@class='navbar-brand']">' cannot be located in parent view

on 11/18/16, 1:42 PM 2,335 views


i had suddenly this error in my database (odoo 8.0):


Field(s) `arch` failed against a constraint: Invalid view definition
Error details:
Element '<xpath expr="//header//a[@class='navbar-brand']">' cannot be located in parent view
Error context:
View `Show Logo`
[view_id: 846, xml_id: website.layout_logo_show, model: n/a, parent_id: 844]" while parsing None:173, near
<data inherit_id="website.layout" customize_show="True" name="Show Logo">
<xpath expr="//header//a[@class='navbar-brand']" position="replace">
<a href="/" class="navbar-brand logo">
<img src="/logo.png" t-att-alt="'Logo of %s' % res_company.name" t-att-title="res_company.name"/>

no configuration or operation was made before

to resolve this issue i tried the following:

- update the module by command line - d databasename -u website

- update the module by command line - d databasename -u all

- comment the view "Show Logo" and update website module

- comment the view "Show Logo" and update all modules

none of the above procedures worked then i tried this step

- delete view from ir_ui_view table directly from database using name='Show Logo'  as a condition then updated the database with view 'Show logo' commented  in odoo-server/addons/website/views/website_templates.xml

this procedure worked for me. 

Now my question is why this error happened ? and is it correct to modify directly in website module ?


On 11/19/16, 4:49 AM

Thank you for your answer, i did a complete search in all directories  "header//a[@class='navbar-brand']" is only used in website module and in a custom module not installed in my database.  commenting this one in custom modulte didnt resolve the issue.

i took a look in  views there is only one view with external id = "website.layout"   Main Layout here is its content:

<t name="Main layout" t-name="website.layout">&lt;!DOCTYPE html&gt;
    <html t-att-lang="lang and lang.replace('_', '-')" t-att-data-website-id="website.id if editable and website else None"          t-att-data-editable="'1' if editable else None"          t-att-data-translatable="'1' if translatable else None"          t-att-data-view-xmlid="xmlid if editable else None" t-att-data-main-object="repr(main_object) if editable else None"          t-att-data-oe-company-name="res_company.name">        <head>            <meta charset="utf-8"/><t t-if="main_object and 'website_meta_title' in main_object and not title">            <t t-set="title" t-value="main_object.website_meta_title"/>        </t><t t-if="main_object and 'name' in main_object and not title and not additional_title">            <t t-set="additional_title" t-value="main_object.name"/></t>            <t t-if="not title"><t t-set="title"><t t-if="additional_title">                <t t-raw="additional_title"/> | </t><t t-esc="(website or res_company).name"/></t>            </t><meta name="viewport" content="initial-scale=1"/><meta name="description" t-att-content="main_object and 'website_meta_description' in main_object                 and main_object.website_meta_description or website_meta_description"/><meta name="keywords" t-att-content="main_object and 'website_meta_keywords' in main_object                 and main_object.website_meta_keywords or website_meta_keywords"/><meta name="generator" content="Odoo"/><title><t t-esc="title"/></title><t t-set="languages" t-value="website.get_languages() if website else None"/><t t-if="request and request.website_multilang and website"><t t-foreach="website.get_alternate_languages(request.httprequest)" t-as="lg"><link rel="alternate" t-att-hreflang="lg['hreflang']" t-att-href="lg['href']"/></t></t><t t-call-assets="web.assets_common" t-js="false"/><t t-call-assets="website.assets_frontend" t-js="false"/><t t-raw="head or ''" name="layout_head"/>        </head>        <body>            <div id="wrapwrap">            <header>                <div class="navbar navbar-default navbar-static-top">                    <div class="container">            <div class="navbar-header">                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-top-collapse">                    <span class="sr-only">Basculer la navigation</span><span class="icon-bar"/><span class="icon-bar"/><span class="icon-bar"/></button><span data-cke-widget-id="107" data-cke-display-name="a" class="cke_widget_wrapper cke_widget_inline" data-cke-filter="off" data-cke-widget-wrapper="1" tabindex="-1">        <a class="navbar-brand cke_widget_editable cke_widget_element" data-cke-enter-mode="2" data-cke-filter="43" data-cke-saved-href="/" data-cke-widget-data="{}" data-cke-widget-editable="text" data-cke-widget-keep-attr="0" data-widget="oeref" href="/" t-field="res_company.name"/></span></div><div class="collapse navbar-collapse navbar-top-collapse"><ul class="nav navbar-nav navbar-right" id="top_menu"><t t-foreach="website.menu_id.child_id" t-as="submenu"><t t-call="website.submenu"/></t><li class="divider" t-ignore="true" t-if="website.user_id != user_id"/><li class="dropdown" t-ignore="true" t-if="website.user_id != user_id"><a href="#" class="dropdown-toggle" data-toggle="dropdown"><b><span t-esc="user_id.name"/><span class="caret"/></b></a><ul class="dropdown-menu js_usermenu" role="menu"><li><a href="/web" role="menuitem">My Account</a></li><li class="divider"/><li><a t-attf-href="/web/session/logout?redirect=/" role="menuitem">Logout</a></li></ul></li></ul></div></div></div>            </header><main><t t-raw="0"/></main><footer><div id="footer_container">                    </div></footer></div>        <t t-call-assets="web.assets_common" t-css="false"/>        <t t-call-assets="website.assets_frontend" t-css="false"/>        <script t-if="website and website.google_analytics_key">                (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){                (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),                m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)                })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
                ga('create', _.str.trim('<t t-esc="website.google_analytics_key"/>'), 'auto');
            </script>    </body></html></t>

could you check if the expression is correct ?   <xpath expr="//header//a[@class='navbar-brand']" position="replace">

i don know why but "navbar-brand" cant be located in the original website.layout view



Axel Mendoza

--Axel Mendoza--
| 7 8 8
Camaguey, Cuba
--Axel Mendoza--

DevOps - Full stack - Software Architect - Developer - Technology Integrator

I could help you to develop anything and solve complex problems based on technologies, integrations and tricky stuffs mostly in Python with OpenERP/Odoo, Zato, Django and many others frameworks programming languages and technologies.

I offers consulting services to anyone with an unanswered questions or needs for customizations. Think about it, maybe it's better to have an expert to solve your issues and projects than having a full-time employee trying to understand what to do and how

Reach me at aekroft@gmail.com

Axel Mendoza
On 11/19/16, 12:47 AM

That error could be related to that another view extension perhaps in another module or theme change the website.layout template making the xpath expr "//header//a[@class='navbar-brand']" unable to retrieve any node to transform and that cause the error. Perhaps the template was changed manually using the website editor or backend view form.

To determine what is the root of the issue you need to see what views are inheriting from the same view of your trouble view, in this case is website.layout the base view, so open up all the view that inherit from that view, you could do it in the views form in the backend with the technical features activated, in the menu /Settings/Technical/User Interface/Views

About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.


Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

1 follower(s)


Asked: 11/18/16, 1:42 PM
Seen: 2335 times
Last updated: 11/19/16, 4:49 AM