During this week I had a problem with page layouts installation via features. In the past, I created a lot of features to install page layouts or to do some operations, but for the first time I had a strange error using some page layouts. Creating new publishing page with some page layouts I had error messages like 'Page contains illegal characters'.
Opening those page layouts, I found this markup at the end of the page
<html xmlns:mso="urn:schemas-microsoft-com:office:office" xmlns:msdt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"><head>
<META name="WebPartPageExpansion" content="full">
<!--[if gte mso 9]><xml>
<mso:CustomDocumentProperties>
<mso:PublishingPreviewImage msdt:dt="string">http://devmoss01:10100/fr/_catalogs/masterpage/en-US/Preview Images/ArticleBodyOnly.png, /fr/_catalogs/masterpage/en-US/Preview Images/ArticleBodyOnly.png</mso:PublishingPreviewImage>
<mso:ContentType msdt:dt="string">Page Layout</mso:ContentType>
<mso:MasterPageDescription msdt:dt="string">WORLD_STORIA_CRONO</mso:MasterPageDescription>
<mso:PublishingAssociatedContentType msdt:dt="string">;#CustomPage;#0x010100C568DB52D9D0A14D9B2FDCC96666E9F20079481;#</mso:PublishingAssociatedContentType>
<mso:PublishingAssociatedVariations msdt:dt="string"></mso:PublishingAssociatedVariations>
<mso:PublishingHidden msdt:dt="string">0</mso:PublishingHidden>
</mso:CustomDocumentProperties>
</xml><![endif]-->
<title>WORLD_STORIA_CRONO</title></head>
Googling I found only one intesting post on this blog http://www.sharepointblogs.com/tmt/archive/2007/11/19/placeholderpagetitle-is-the-root-of-all-evil.aspx, but unfortunately it was not right for me because all the page layouts contain asp:Content named PlaceHolderPageTitle within field PageTitle.
After some investigations, I solved it. The issue was regarding text case of markup.
This does not work (lower case)
<asp:content contentplaceholderid="PlaceHolderPageTitle" runat="server">
<SharePointWebControls:FieldValue id="PageTitle" FieldName="Title" runat="server"/>
</asp:content>
This works
<asp:Content ContentPlaceholderID="PlaceHolderPageTitle" runat="server">
<SharePointWebControls:FieldValue id="PageTitle" FieldName="Title" runat="server"/>
</asp:Content>