Fwd: Re: Possible Bug: Xerces 2.12.1 for XML Validation with XSD 1.1 Schema under Java - Plain Text

JOHN Morris <[email protected]> Sat, 22 Aug 2020 17:57:33 +0100 (BST)
Newsgroups gmane.text.xml.xerces-j.user
Message-ID <[email protected]>
------=_Part_1309290_224465007.1598115453531
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Dear Mukul,

Many thanks for coming back to me on this one. You must be very busy with o=
ther on-going tasks.

I note your reference to using jaxp.SourceValidator/ I'm not sure whether y=
ou are claiming that, if you use that, you don't see any of the problems th=
at I have highlighted(?)

I would also like to understand more about the incomptabilities in 'matches=
' function implementation in Jave and Xpath 2.0. I am not sure that this fi=
ts the bill as an explanation of those problems. I think that I may not hav=
e explained my test cases clearly enough.

I find that seemingly good XML constructs cause validation error WHEN THOSE=
 XML CONSTRUCTS OCCUR AT CERTAIN PROBLEMATIC LINE NUMBERS e.g. line 44, in =
my test1.xml file). However, those exact same constructs DO NOT trigger err=
ors if they appear at different XML line numbers. For example, if I insert =
an XML comment line before one of these constructs,formerly appearing at a =
problematic line number, so that it now appears at the subsequent line numb=
er, it no longer triggers an error!!! That was what the second test file wa=
s supposed to illustrate.

This smacks more of some kind of buffering problem in the validation code, =
rather than an incompatibility between implementations of 'matches' functio=
ns (or indeed complexity of 'matches' expressions).

As for using xs:pattern, my imagination was not rich enough to know how to =
achieve the same effect as I was trying to get with 'matches' but now with =
xs:pattern. Have you been able to visualise how to do that?

I look forward to hearing your reaction to these comments.

Best regards,

John.

-------- Original Message ----------
From: Mukul Gandhi <[email protected]>
To: [email protected]
Date: 22 August 2020 at 10:22
Subject: Re: Possible Bug: Xerces 2.12.1 for XML Validation with XSD 1.1 Sc=
hema under Java - Plain Text

Hi John,
     With Xerces-J 2.12.1 XSD 1.1 implementation, given your test case XML =
and XSD documents, I see few xs:assert false results on the XPath 2.0 'matc=
hes' function. I'm using Xerces-J's jaxp.SourceValidator sample for XSD val=
idation.

As per my knowledge, Xerces-J XPath 2.0 engine's 'matches' function impleme=
ntation is based on Java's regex classes, which is not 100% compliant to XP=
ath 2.0 'matches' regex spec (my gut feeling is that, these two regex specs=
 [java & XPath 2.0 'matches'] have about 95% syntax and semantics in common=
).

Your XPath 2.0 'matches' regex expressions seem to me quite complex, and lo=
oks to me as sort of edge case requirements. My recommendation would be, to=
 use XPath 2.0 'matches' within Xerce-J's xs:assert for simple requirements=
. If you're looking for XSD (1.1) regex 100% compliance, I'd suggest using =
xs:pattern facet with Xerces-J.

On Wed, Aug 19, 2020 at 2:40 PM JOHN Morris <[email protected]=
d> wrote:

Strictly speaking, I sould probably have be referring to Xerces-J 2.12.1. S=
orry.

One other thing that I should add is that I have not succeeded in finding a=
ny pattern to the line numbers at which the apparently spurious errors are =
reported.

Here are the files inline, which would have been part of the ZIP file, had =
I been able to send it.

java_xercesX.bat:

set "jdkpath=3Di:\jdk1.8.0_261"
set "x2path=3Di:\Xerces-J-bin.2.12.1-xml-schema-1.1\xerces-2_12_1-xml-schem=
a-1.1"
set "xml_data_path=3DI:\Joomla_MVC_dev\validatexml\admin\testA\"

%jdkpath%\bin\java -cp .;%x2path%\xml-apis.jar;%x2path%\xercesImpl.jar;%x2p=
ath%\serializer.jar;%x2path%\resolver.jar;%x2path%\org.eclipse.wst.xml.xpat=
h2.processor_1.2.0.jar;%x2path%\xercesSamples.jar;%x2path%\cupv10k-runtime.=
jar;%x2path%\icu4j.jar; %1 -xsd11 -a %xml_data_path%%2 -i %xml_data_path%%3

test.xsd:

<?xml version=3D"1.0"?>
<xs:schema xmlns:xs=3D" http://www.w3.org/2001/XMLSchema"
           elementFormDefault=3D"qualified">
        <!-- ********************** -->
        <!-- * Top-level elements * -->
        <!-- ********************** -->
        <xs:element name=3D"extension">
                <xs:alternative test=3D"@type=3D'language'" type=3D"extensi=
onTypeLanguage"/>
        </xs:element>
        <!-- ******************************************************** -->
        <!-- * Structures used from more than one top-level element * -->
        <!-- ******************************************************** -->
        <xs:group name=3D"metadata">
                <xs:all>
                        <xs:element name=3D"name" type=3D"xs:string" minOcc=
urs=3D"0" maxOccurs=3D"1"/>
                        <xs:element name=3D"creationDate" type=3D"xs:string=
" minOccurs=3D"0" maxOccurs=3D"1"/>
                        <xs:element name=3D"author" type=3D"xs:string" minO=
ccurs=3D"0" maxOccurs=3D"1"/>
                        <xs:element name=3D"authorEmail" type=3D"xs:string"=
 minOccurs=3D"0" maxOccurs=3D"1"/>
                        <xs:element name=3D"authorUrl" type=3D"xs:anyURI" m=
inOccurs=3D"0" maxOccurs=3D"1"/>
                        <xs:element name=3D"copyright" type=3D"xs:string" m=
inOccurs=3D"0" maxOccurs=3D"1"/>
                        <!-- **********************************************=
******************************* -->
                        <!-- * Disregard the following element, not decoded=
 by the installation software * -->
                        <!-- **********************************************=
******************************* -->
                        <xs:element name=3D"license" type=3D"xs:string" min=
Occurs=3D"0" maxOccurs=3D"1"/>
                        <xs:element name=3D"version" type=3D"extensionVersi=
onType" minOccurs=3D"0" maxOccurs=3D"1"/>
                        <xs:element name=3D"description" type=3D"xs:string"=
 minOccurs=3D"0" maxOccurs=3D"1"/>
                </xs:all>
        </xs:group>
        <xs:simpleType name=3D"methodChoice">
                <xs:restriction base=3D"xs:string">
                        <xs:enumeration value=3D"install"/>
                        <xs:enumeration value=3D"upgrade"/>
                </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name=3D"joomlaVersionChoice">
                <xs:restriction base=3D"xs:string">
                        <xs:pattern value=3D"[23].[0-9]"/>
                </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name=3D"extensionVersionType">
                <xs:restriction base=3D"xs:string">
                        <xs:pattern value=3D"[0-9]([0-9])*(.[0-9]([0-9])*)+=
"/>
                </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name=3D"tagChoice">
                <xs:restriction base=3D"xs:string">
                        <xs:pattern value=3D"[a-z]{2,3}-[A-Z]{2,3}"/>
                </xs:restriction>
        </xs:simpleType>
        <xs:simpleType name=3D"clientChoice">
                <xs:restriction base=3D"xs:string">
                        <xs:pattern value=3D"administrator|site"/>
                </xs:restriction>
        </xs:simpleType>
        <xs:complexType name=3D"typeUpdateServers">
                <xs:complexContent>
                        <xs:restriction base=3D"xs:anyType">
                                <xs:all>
                                        <xs:element name=3D"server" type=3D=
"typeServerUpdateServers" minOccurs=3D"0" maxOccurs=3D"unbounded"/>
                                </xs:all>
                        </xs:restriction>
                </xs:complexContent>
        </xs:complexType>
        <xs:complexType name=3D"typeMedia">
                <xs:all>
                        <xs:element name=3D"filename" type=3D"xs:string" mi=
nOccurs=3D"0" maxOccurs=3D"unbounded"/>
                        <xs:element name=3D"folder" type=3D"xs:string" minO=
ccurs=3D"0" maxOccurs=3D"unbounded"/>
                </xs:all>
                <xs:attribute name=3D"folder" type=3D"xs:string" use=3D"opt=
ional"/>
                <xs:attribute name=3D"destination" type=3D"xs:string" use=
=3D"optional"/>
        </xs:complexType>
        <xs:simpleType name=3D"typeParams">
                <xs:restriction base=3D"xs:string">
                </xs:restriction>
        </xs:simpleType>
        <!-- ************************************ -->
        <!-- * attributes optional or required? * -->
        <!-- ************************************ -->
        <xs:complexType name=3D"typeServerUpdateServers">
                <xs:simpleContent>
                        <xs:extension base=3D"xs:string">
                                <xs:attribute name=3D"name" type=3D"xs:stri=
ng"/>
                                <xs:attribute name=3D"type" type=3D"serverC=
hoice"/>
                                <!-- **************************************=
************** -->
                                <!-- * Include the "priority" attribute her=
e to prevent * -->
                                <!-- * errors although I have failed to ide=
ntify        * -->
                                <!-- * code in Joomla! which processes it. =
             * -->
                                <!-- **************************************=
************** -->
                                <xs:attribute name=3D"priority" type=3D"xs:=
positiveInteger"/>
                        </xs:extension>
                </xs:simpleContent>
        </xs:complexType>
        <xs:simpleType name=3D"serverChoice">
                <xs:restriction base=3D"xs:string">
                        <xs:pattern value=3D"extension|collection"/>
                </xs:restriction>
        </xs:simpleType>
        <!-- ********************************************* -->
        <!-- * Material for Language-specific extensions * -->
        <!-- ********************************************* -->
        <xs:complexType name=3D"extensionTypeLanguage">
                <xs:all>
                        <xs:element name=3D"tag" type=3D"tagChoice" minOccu=
rs=3D"0" maxOccurs=3D"1"/>
                        <xs:group ref=3D"metadata"/>
                        <xs:element name=3D"files" type=3D"typeLanguageFile=
s" minOccurs=3D"1" maxOccurs=3D"unbounded"/>
                        <xs:element name=3D"media" type=3D"typeMedia" minOc=
curs=3D"0" maxOccurs=3D"1"/>
                        <xs:element name=3D"params" type=3D"typeParams" min=
Occurs=3D"1" maxOccurs=3D"1"/>
                </xs:all>
                <xs:attribute name=3D"type" type=3D"xs:string" use=3D"requi=
red" fixed=3D"language"/>
                <xs:attribute name=3D"method" type=3D"methodChoice"/>
                <xs:attribute name=3D"version" type=3D"joomlaVersionChoice"=
/>
                <xs:attribute name=3D"client" type=3D"clientChoice"/>
        </xs:complexType>
        <xs:complexType name=3D"typeLanguageFilesFilename">
                <xs:simpleContent>
                        <xs:extension base=3D"xs:string">
                                <xs:attribute name=3D"file" type=3D"xs:stri=
ng" use=3D"optional"/>
                                <!-- **************************************=
***************************************************************************=
************************************************************************ --=
>
                                <!-- * Assuming that the current context is=
 "/extension/files/filename"                                               =
                                                                       * --=
>
                                <!-- * check that there are ALL elements in=
 this context whose values DO match one of:                                =
                                                                       * --=
>
                                <!-- *  1) ^([a-z]{2}[a-z]?-[A-Z]{2}\.((((c=
om)|(lib)|(mod(_[a-z][a-z0-9]+)?)|(plg_[a-z][a-z0-9]+(\-[a-z0-9][a-z0-9]+)*=
)|(tpl))_[a-z][a-z0-9]+(\.sys)?(\.ini))|(ini)|(css)|(localise\.php)))$ * --=
>
                                <!-- *  2) ^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$=
                                                                           =
                                                                       * --=
>
                                <!-- *  3) ^(install\.xml)$                =
                                                                           =
                                                                       * --=
>
                                <!-- **************************************=
***************************************************************************=
************************************************************************ --=
>
                                <xs:assert test=3D"./text()[matches(.,'^([a=
-z]{2}[a-z]?-[A-Z]{2}\.((((com)|(lib)|(mod(_[a-z][a-z0-9]+)?)|(plg_[a-z][a-=
z0-9]+(\-[a-z0-9][a-z0-9]+)*)|(tpl))_[a-z][a-z0-9]+(\.sys)?(\.ini))|(ini)|(=
css)|(localise\.php)))|([a-z]{2}[a-z]?-[A-Z]{2}\.xml)|(install\.xml)$')]"/>
                                <!-- **************************************=
***************************************************************************=
************************** -->
                                <!-- * Of the elements whose values (./text=
()) match:                                                                 =
                         * -->
                                <!-- *  2) ^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$=
                                                                           =
                         * -->
                                <!-- * check that ALL have the "file" attri=
bute.                                                                      =
                         * -->
                                <!-- **************************************=
***************************************************************************=
************************** -->
                                <!-- <xs:assert test=3D"./text()[matches(.,=
'^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$')]/../@file"/>
                                <xs:assert test=3D"if (true()) then true() =
else false()"/>
                                <xs:assert test=3D"matches(text(),'^([a-z]{=
2}[a-z]?-[A-Z]{2}\.xml)$')"/> -->
                                <xs:assert test=3D"if (matches(text(),'^([a=
-z]{2}[a-z]?-[A-Z]{2}\.xml)$')) then @file else true()"/>
                                <!-- **************************************=
***************************************************************************=
************************** -->
                                <!-- * Check that the ONE element which mat=
ches:                                                                      =
                           * -->
                                <!-- *  2) ^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$=
                                                                           =
                         * -->
                                <!-- * has an attribute "file" with value "=
meta".                                                                     =
                         * -->
                                <!-- **************************************=
***************************************************************************=
************************** -->
                                <!-- <xs:assert test=3D"./text()[matches(.,=
'^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$')]/../@file[.=3D'meta']"/> -->
                                <xs:assert test=3D"if (matches(text(),'^([a=
-z]{2}[a-z]?-[A-Z]{2}\.xml)$')) then @file[.=3D'meta'] else true()"/>
                                <!-- **************************************=
***************************************************************************=
************************** -->
                                <!-- * Of the elements whose values (./text=
()) match:                                                                 =
                           * -->
                                <!-- *  3) ^(install\.xml)$                =
                                                                           =
                         * -->
                                <!-- * check that ALL have the "file" attri=
bute.                                                                      =
                         * -->
                                <!-- **************************************=
***************************************************************************=
************************** -->
                                <xs:assert test=3D"if (./text()[matches(.,'=
^(install\.xml)$')]) then @file else true()"/>
                                <!-- **************************************=
***************************************************************************=
************************** -->
                                <!-- * Check that the ONE element which mat=
ches:                                                                      =
                           * -->
                                <!-- *  3) ^(install\.xml)$                =
                                                                           =
                         * -->
                                <!-- * has an attribute "file" with value "=
meta".                                                                     =
                         * -->
                                <!-- **************************************=
***************************************************************************=
************************** -->
                                <xs:assert test=3D"if (./text()[matches(.,'=
^(install\.xml)$')]) then @file[.=3D'meta'] else true()"/>
                        </xs:extension>
                </xs:simpleContent>
        </xs:complexType>
        <xs:complexType name=3D"typeLanguageFiles">
                <xs:all>
                        <xs:element name=3D"folder" type=3D"xs:string" minO=
ccurs=3D"0" maxOccurs=3D"unbounded"/>
                        <xs:element name=3D"filename" type=3D"typeLanguageF=
ilesFilename" minOccurs=3D"1" maxOccurs=3D"unbounded"/> <!-- For the "index=
.<php|html>" file -->
                </xs:all>
                <xs:attribute name=3D"folder" type=3D"xs:string" use=3D"opt=
ional"/>
                <!-- ******************************************************=
***************************************************************************=
******************************************************** -->
                <!-- * Assuming that the current context is "/extension/fil=
es"                                                                        =
                                                       * -->
                <!-- ******************************************************=
***************************************************************************=
******************************************************** -->
                <!-- ******************************************************=
***************************************************************************=
******************************************************** -->
                <!-- Of the elements whose values (./text()) match:        =
                                                                           =
                                                       * -->
                <!-- *  1) ^([a-z]{2}[a-z]?-[A-Z]{2}\.((((com)|(lib)|(mod(_=
[a-z][a-z0-9]+)?)|(plg_[a-z][a-z0-9]+(\-[a-z0-9][a-z0-9]+)*)|(tpl))_[a-z][a=
-z0-9]+(\.sys)?(\.ini))|(ini)|(css)|(localise\.php)))$ * -->
                <!-- * check that NONE have the "file" attribute.          =
                                                                           =
                                                       * -->
                <!-- ******************************************************=
***************************************************************************=
******************************************************** -->
                <xs:assert test=3D"count(./filename/text()[matches(.,'^([a-=
z]{2}[a-z]?-[A-Z]{2}\.((((com)|(lib)|(mod(_[a-z][a-z0-9]+)?)|(plg_[a-z][a-z=
0-9]+(\-[a-z0-9][a-z0-9]+)*)|(tpl))_[a-z][a-z0-9]+(\.sys)?(\.ini))|(ini)|(c=
ss)|(localise\.php)))$')]/..[@file])=3D0"/>
                <!-- ******************************************************=
***************************************************************************=
******************************************************** -->
                <!-- * Check there is ONE and ONLY ONE element whose value =
(./text()) matches:                                                        =
                                                       * -->
                <!-- *  2) ^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$                =
                                                                           =
                                                       * -->
                <!-- ******************************************************=
***************************************************************************=
******************************************************** -->
                <xs:assert test=3D"count(./filename/text()[matches(.,'^([a-=
z]{2}[a-z]?-[A-Z]{2}\.xml)$')])=3D1"/>
                <!-- ******************************************************=
***************************************************************************=
******************************************************** -->
                <!-- * Check there is ONE and ONLY ONE element whose value =
(./text()) matches:                                                        =
                                                       * -->
                <!-- *  3) ^(install\.xml)$                                =
                                                                           =
                                                       * -->
                <!-- ******************************************************=
***************************************************************************=
******************************************************** -->
                <xs:assert test=3D"count(./filename/text()[matches(.,'^(ins=
tall\.xml)$')])=3D1"/>
        </xs:complexType>
</xs:schema>

test1.xml

<extension version=3D"3.7" client=3D"administrator" type=3D"language" metho=
d=3D"upgrade"> <!-- change to client=3D"site" if site pack -->
        <name>French (fr-FR)</name> <!-- New in 3.7.0: Use only latin ascii=
 characters. -->
        <tag>fr-FR</tag>
        <version>3.7.0.1</version>
        <creationDate>15/02/2017</creationDate>
        <author>French translation team :http://joomla.fr </author>
        <authorEmail> [email protected] mailto:[email protected] </au=
thorEmail>
        <authorUrl>http://www.joomla.fr </authorUrl>
        <copyright>Copyright (C) 2005 - 2017http://joomla.fr et Open Source=
 Matters. Tous droits r=C3=A9serv=C3=A9s</copyright>
        <license>GNU General Public License version 2 or later; see LICENSE=
.txt</license>
        <description>fr-FR administrator language</description>
        <files>
                <filename>fr-FR.plg_captcha_recaptcha.sys.ini</filename>
                <filename>fr-FR.com_admin.ini</filename>
                <filename>fr-FR.com_admin.sys.ini</filename>
                <filename>fr-FR.com_ajax.ini</filename>
                <filename>fr-FR.com_ajax.sys.ini</filename>
                <filename>fr-FR.com_associations.ini</filename>
                <filename>fr-FR.com_associations.sys.ini</filename>
                <filename>fr-FR.com_banners.ini</filename>
                <filename>fr-FR.com_banners.sys.ini</filename>
                <filename>fr-FR.com_cache.ini</filename>
                <filename>fr-FR.com_cache.sys.ini</filename>
                <filename>fr-FR.com_categories.ini</filename>
                <filename>fr-FR.com_categories.sys.ini</filename>
                <filename>fr-FR.com_checkin.ini</filename>
                <filename>fr-FR.com_checkin.sys.ini</filename>
                <filename>fr-FR.com_config.ini</filename>
                <filename>fr-FR.com_config.sys.ini</filename>
                <filename>fr-FR.com_contact.ini</filename>
                <filename>fr-FR.com_contact.sys.ini</filename>
                <filename>fr-FR.com_content.ini</filename>
                <filename>fr-FR.com_content.sys.ini</filename>
                <filename>fr-FR.com_contenthistory.ini</filename>
                <filename>fr-FR.com_contenthistory.sys.ini</filename>
                <filename>fr-FR.com_cpanel.ini</filename>
                <filename>fr-FR.com_cpanel.sys.ini</filename>
                <filename>fr-FR.com_fields.ini</filename>
                <filename>fr-FR.com_fields.sys.ini</filename>
                <filename>fr-FR.com_finder.ini</filename>
                <filename>fr-FR.com_finder.sys.ini</filename>
                <filename>fr-FR.com_installer.ini</filename>
                <filename>fr-FR.com_installer.sys.ini</filename>
                <filename>fr-FR.com_joomlaupdate.ini</filename>
                <filename>fr-FR.com_joomlaupdate.sys.ini</filename>
                <filename>fr-FR.com_languages.ini</filename>
                <filename>fr-FR.com_languages.sys.ini</filename>
                <filename>fr-FR.com_login.ini</filename>
                <filename>fr-FR.com_login.sys.ini</filename>
                <filename>fr-FR.com_mailto.sys.ini</filename>
                <filename>fr-FR.com_media.ini</filename>
                <filename>fr-FR.com_media.sys.ini</filename>
                <filename>fr-FR.com_menus.ini</filename>
                <filename>fr-FR.com_menus.sys.ini</filename>
                <filename>fr-FR.com_messages.ini</filename>
                <filename>fr-FR.com_messages.sys.ini</filename>
                <filename>fr-FR.com_modules.ini</filename>
                <filename>fr-FR.com_modules.sys.ini</filename>
                <filename>fr-FR.com_newsfeeds.ini</filename>
                <filename>fr-FR.com_newsfeeds.sys.ini</filename>
                <filename>fr-FR.com_plugins.ini</filename>
                <filename>fr-FR.com_plugins.sys.ini</filename>
                <filename>fr-FR.com_postinstall.ini</filename>
                <filename>fr-FR.com_postinstall.sys.ini</filename>
                <filename>fr-FR.com_redirect.ini</filename>
                <filename>fr-FR.com_redirect.sys.ini</filename>
                <filename>fr-FR.com_search.ini</filename>
                <filename>fr-FR.com_search.sys.ini</filename>
                <filename>fr-FR.com_tags.ini</filename>
                <filename>fr-FR.com_tags.sys.ini</filename>
                <filename>fr-FR.com_templates.ini</filename>
                <filename>fr-FR.com_templates.sys.ini</filename>
                <filename>fr-FR.com_users.ini</filename>
                <filename>fr-FR.com_users.sys.ini</filename>
                <filename>fr-FR.com_weblinks.ini</filename>
                <filename>fr-FR.com_weblinks.sys.ini</filename>
                <filename>fr-FR.com_wrapper.ini</filename>
                <filename>fr-FR.com_wrapper.sys.ini</filename>
                <!-- this file can be added in the ADMINISTRATOR pack if on=
e wants to change the fonts used to display the back-end interface.-->
                        <filename>fr-FR.css</filename>
                <!-- -->
                <filename>fr-FR.ini</filename>
                <filename>fr-FR.lib_joomla.ini</filename>
                <filename>fr-FR.localise.php</filename>
                <filename>fr-FR.mod_custom.ini</filename>
                <filename>fr-FR.mod_custom.sys.ini</filename>
                <filename>fr-FR.mod_feed.ini</filename>
                <filename>fr-FR.mod_feed.sys.ini</filename>
                <filename>fr-FR.mod_latest.ini</filename>
                <filename>fr-FR.mod_latest.sys.ini</filename>
                <filename>fr-FR.mod_logged.ini</filename>
                <filename>fr-FR.mod_logged.sys.ini</filename>
                <filename>fr-FR.mod_login.ini</filename>
                <filename>fr-FR.mod_login.sys.ini</filename>
                <filename>fr-FR.mod_menu.ini</filename>
                <filename>fr-FR.mod_menu.sys.ini</filename>
                <filename>fr-FR.mod_multilangstatus.ini</filename>
                <filename>fr-FR.mod_multilangstatus.sys.ini</filename>
                <filename>fr-FR.mod_popular.ini</filename>
                <filename>fr-FR.mod_popular.sys.ini</filename>
                <filename>fr-FR.mod_quickicon.ini</filename>
                <filename>fr-FR.mod_quickicon.sys.ini</filename>
                <filename>fr-FR.mod_stats_admin.ini</filename>
                <filename>fr-FR.mod_stats_admin.sys.ini</filename>
                <filename>fr-FR.mod_status.ini</filename>
                <filename>fr-FR.mod_status.sys.ini</filename>
                <filename>fr-FR.mod_submenu.ini</filename>
                <filename>fr-FR.mod_submenu.sys.ini</filename>
                <filename>fr-FR.mod_title.ini</filename>
                <filename>fr-FR.mod_title.sys.ini</filename>
                <filename>fr-FR.mod_toolbar.ini</filename>
                <filename>fr-FR.mod_toolbar.sys.ini</filename>
                <filename>fr-FR.mod_version.ini</filename>
                <filename>fr-FR.mod_version.sys.ini</filename>
                <filename>fr-FR.plg_authentication_cookie.ini</filename>
                <filename>fr-FR.plg_authentication_cookie.sys.ini</filename=
>
                <filename>fr-FR.plg_authentication_gmail.ini</filename>
                <filename>fr-FR.plg_authentication_gmail.sys.ini</filename>
                <filename>fr-FR.plg_authentication_joomla.ini</filename>
                <filename>fr-FR.plg_authentication_joomla.sys.ini</filename=
>
                <filename>fr-FR.plg_authentication_ldap.ini</filename>
                <filename>fr-FR.plg_authentication_ldap.sys.ini</filename>
                <filename>fr-FR.plg_captcha_recaptcha.ini</filename>
                <filename>fr-FR.plg_captcha_recaptcha.sys.ini</filename>
                <filename>fr-FR.plg_content_contact.ini</filename>
                <filename>fr-FR.plg_content_contact.sys.ini</filename>
                <filename>fr-FR.plg_content_emailcloak.ini</filename>
                <filename>fr-FR.plg_content_emailcloak.sys.ini</filename>
                <filename>fr-FR.plg_content_fields.ini</filename>
                <filename>fr-FR.plg_content_fields.sys.ini</filename>
                <filename>fr-FR.plg_content_finder.ini</filename>
                <filename>fr-FR.plg_content_finder.sys.ini</filename>
                <filename>fr-FR.plg_content_joomla.ini</filename>
                <filename>fr-FR.plg_content_joomla.sys.ini</filename>
                <filename>fr-FR.plg_content_loadmodule.ini</filename>
                <filename>fr-FR.plg_content_loadmodule.sys.ini</filename>
                <filename>fr-FR.plg_content_pagebreak.ini</filename>
                <filename>fr-FR.plg_content_pagebreak.sys.ini</filename>
                <filename>fr-FR.plg_content_pagenavigation.ini</filename>
                <filename>fr-FR.plg_content_pagenavigation.sys.ini</filenam=
e>
                <filename>fr-FR.plg_content_vote.ini</filename>
                <filename>fr-FR.plg_content_vote.sys.ini</filename>
                <filename>fr-FR.plg_editors-xtd_article.ini</filename>
                <filename>fr-FR.plg_editors-xtd_article.sys.ini</filename>
                <filename>fr-FR.plg_editors-xtd_contact.ini</filename>
                <filename>fr-FR.plg_editors-xtd_contact.sys.ini</filename>
                <filename>fr-FR.plg_editors-xtd_fields.ini</filename>
                <filename>fr-FR.plg_editors-xtd_fields.sys.ini</filename>
                <filename>fr-FR.plg_editors-xtd_image.ini</filename>
                <filename>fr-FR.plg_editors-xtd_image.sys.ini</filename>
                <filename>fr-FR.plg_editors-xtd_menu.ini</filename>
                <filename>fr-FR.plg_editors-xtd_menu.sys.ini</filename>
                <filename>fr-FR.plg_editors-xtd_module.ini</filename>
                <filename>fr-FR.plg_editors-xtd_module.sys.ini</filename>
                <filename>fr-FR.plg_editors-xtd_pagebreak.ini</filename>
                <filename>fr-FR.plg_editors-xtd_pagebreak.sys.ini</filename=
>
                <!-- Spacer to get past a buggy record count! -->
                <filename>fr-FR.plg_editors-xtd_readmore.ini</filename>
                <filename>fr-FR.plg_editors-xtd_readmore.sys.ini</filename>
                <filename>fr-FR.plg_editors_codemirror.ini</filename>
                <filename>fr-FR.plg_editors_codemirror.sys.ini</filename>
                <filename>fr-FR.plg_editors_none.ini</filename>
                <filename>fr-FR.plg_editors_none.sys.ini</filename>
                <filename>fr-FR.plg_editors_tinymce.ini</filename>
                <filename>fr-FR.plg_editors_tinymce.sys.ini</filename>
                <filename>fr-FR.plg_extension_joomla.ini</filename>
                <filename>fr-FR.plg_extension_joomla.sys.ini</filename>
                <filename>fr-FR.plg_fields_calendar.ini</filename>
                <filename>fr-FR.plg_fields_calendar.sys.ini</filename>
                <filename>fr-FR.plg_fields_checkboxes.ini</filename>
                <filename>fr-FR.plg_fields_checkboxes.sys.ini</filename>
                <filename>fr-FR.plg_fields_color.ini</filename>
                <filename>fr-FR.plg_fields_color.sys.ini</filename>
                <filename>fr-FR.plg_fields_editor.ini</filename>
                <filename>fr-FR.plg_fields_editor.sys.ini</filename>
                <filename>fr-FR.plg_fields_gallery.ini</filename>
                <filename>fr-FR.plg_fields_gallery.sys.ini</filename>
                <filename>fr-FR.plg_fields_image.ini</filename>
                <filename>fr-FR.plg_fields_image.sys.ini</filename>
                <filename>fr-FR.plg_fields_imagelist.ini</filename>
                <filename>fr-FR.plg_fields_imagelist.sys.ini</filename>
                <filename>fr-FR.plg_fields_integer.ini</filename>
                <filename>fr-FR.plg_fields_integer.sys.ini</filename>
                <filename>fr-FR.plg_fields_list.ini</filename>
                <filename>fr-FR.plg_fields_list.sys.ini</filename>
                <filename>fr-FR.plg_fields_media.ini</filename>
                <filename>fr-FR.plg_fields_media.sys.ini</filename>
                <filename>fr-FR.plg_fields_radio.ini</filename>
                <filename>fr-FR.plg_fields_radio.sys.ini</filename>
                <filename>fr-FR.plg_fields_sql.ini</filename>
                <filename>fr-FR.plg_fields_sql.sys.ini</filename>
                <filename>fr-FR.plg_fields_text.ini</filename>
                <filename>fr-FR.plg_fields_text.sys.ini</filename>
                <filename>fr-FR.plg_fields_textarea.ini</filename>
                <filename>fr-FR.plg_fields_textarea.sys.ini</filename>
                <filename>fr-FR.plg_fields_url.ini</filename>
                <filename>fr-FR.plg_fields_url.sys.ini</filename>
                <filename>fr-FR.plg_fields_user.ini</filename>
                <filename>fr-FR.plg_fields_user.sys.ini</filename>
                <filename>fr-FR.plg_fields_usergrouplist.ini</filename>
                <filename>fr-FR.plg_fields_usergrouplist.sys.ini</filename>
                <filename>fr-FR.plg_finder_categories.ini</filename>
                <filename>fr-FR.plg_finder_categories.sys.ini</filename>
                <filename>fr-FR.plg_finder_contacts.ini</filename>
                <filename>fr-FR.plg_finder_contacts.sys.ini</filename>
                <filename>fr-FR.plg_finder_content.ini</filename>
                <filename>fr-FR.plg_finder_content.sys.ini</filename>
                <filename>fr-FR.plg_finder_newsfeeds.ini</filename>
                <filename>fr-FR.plg_finder_newsfeeds.sys.ini</filename>
                <filename>fr-FR.plg_finder_tags.ini</filename>
                <filename>fr-FR.plg_finder_tags.sys.ini</filename>
                <filename>fr-FR.plg_finder_weblinks.ini</filename>
                <filename>fr-FR.plg_finder_weblinks.sys.ini</filename>
                <filename>fr-FR.plg_installer_folderinstaller.ini</filename=
>
                <filename>fr-FR.plg_installer_folderinstaller.sys.ini</file=
name>
                <filename>fr-FR.plg_installer_packageinstaller.ini</filenam=
e>
                <filename>fr-FR.plg_installer_packageinstaller.sys.ini</fil=
ename>
                <filename>fr-FR.plg_installer_urlinstaller.ini</filename>
                <filename>fr-FR.plg_installer_urlinstaller.sys.ini</filenam=
e>
                <filename>fr-FR.plg_installer_webinstaller.ini</filename>
                <filename>fr-FR.plg_installer_webinstaller.sys.ini</filenam=
e>
                <filename>fr-FR.plg_quickicon_extensionupdate.ini</filename=
>
                <filename>fr-FR.plg_quickicon_extensionupdate.sys.ini</file=
name>
                <filename>fr-FR.plg_quickicon_joomlaupdate.ini</filename>
                <filename>fr-FR.plg_quickicon_joomlaupdate.sys.ini</filenam=
e>
                <filename>fr-FR.plg_quickicon_phpversioncheck.ini</filename=
>
                <filename>fr-FR.plg_quickicon_phpversioncheck.sys.ini</file=
name>
                <filename>fr-FR.plg_search_categories.ini</filename>
                <filename>fr-FR.plg_search_categories.sys.ini</filename>
                <filename>fr-FR.plg_search_contacts.ini</filename>
                <filename>fr-FR.plg_search_contacts.sys.ini</filename>
                <filename>fr-FR.plg_search_content.ini</filename>
                <filename>fr-FR.plg_search_content.sys.ini</filename>
                <filename>fr-FR.plg_search_newsfeeds.ini</filename>
                <filename>fr-FR.plg_search_newsfeeds.sys.ini</filename>
                <filename>fr-FR.plg_search_tags.ini</filename>
                <filename>fr-FR.plg_search_tags.sys.ini</filename>
                <filename>fr-FR.plg_search_weblinks.ini</filename>
                <filename>fr-FR.plg_search_weblinks.sys.ini</filename>
                <filename>fr-FR.plg_system_cache.ini</filename>
                <filename>fr-FR.plg_system_cache.sys.ini</filename>
                <filename>fr-FR.plg_system_debug.ini</filename>
                <filename>fr-FR.plg_system_debug.sys.ini</filename>
                <filename>fr-FR.plg_system_fields.ini</filename>
                <filename>fr-FR.plg_system_fields.sys.ini</filename>
                <filename>fr-FR.plg_system_highlight.ini</filename>
                <filename>fr-FR.plg_system_highlight.sys.ini</filename>
                <filename>fr-FR.plg_system_languagecode.ini</filename>
                <filename>fr-FR.plg_system_languagecode.sys.ini</filename>
                <filename>fr-FR.plg_system_languagefilter.ini</filename>
                <filename>fr-FR.plg_system_languagefilter.sys.ini</filename=
>
                <filename>fr-FR.plg_system_log.ini</filename>
                <filename>fr-FR.plg_system_log.sys.ini</filename>
                <filename>fr-FR.plg_system_logout.ini</filename>
                <filename>fr-FR.plg_system_logout.sys.ini</filename>
                <filename>fr-FR.plg_system_p3p.ini</filename>
                <filename>fr-FR.plg_system_p3p.sys.ini</filename>
                <filename>fr-FR.plg_system_redirect.ini</filename>
                <filename>fr-FR.plg_system_redirect.sys.ini</filename>
                <filename>fr-FR.plg_system_remember.ini</filename>
                <filename>fr-FR.plg_system_remember.sys.ini</filename>
                <filename>fr-FR.plg_system_sef.ini</filename>
                <filename>fr-FR.plg_system_sef.sys.ini</filename>
                <filename>fr-FR.plg_system_stats.ini</filename>
                <filename>fr-FR.plg_system_stats.sys.ini</filename>
                <filename>fr-FR.plg_system_updatenotification.ini</filename=
>
                <filename>fr-FR.plg_system_updatenotification.sys.ini</file=
name>
                <filename>fr-FR.plg_twofactorauth_totp.ini</filename>
                <filename>fr-FR.plg_twofactorauth_totp.sys.ini</filename>
                <filename>fr-FR.plg_twofactorauth_yubikey.ini</filename>
                <filename>fr-FR.plg_twofactorauth_yubikey.sys.ini</filename=
>
                <filename>fr-FR.plg_user_contactcreator.ini</filename>
                <filename>fr-FR.plg_user_contactcreator.sys.ini</filename>
                <filename>fr-FR.plg_user_joomla.ini</filename>
                <filename>fr-FR.plg_user_joomla.sys.ini</filename>
                <filename>fr-FR.plg_user_profile.ini</filename>
                <filename>fr-FR.plg_user_profile.sys.ini</filename>
                <filename>fr-FR.tpl_hathor.ini</filename>
                <filename>fr-FR.tpl_hathor.sys.ini</filename>
                <filename>fr-FR.tpl_isis.ini</filename>
                <filename>fr-FR.tpl_isis.sys.ini</filename>
                <!-- This file is mandatory as otherwise the pack can't be =
uninstalled. -->
                <filename file=3D"meta">install.xml</filename>
                <filename file=3D"meta">fr-FR.xml</filename>
        </files>
        <media destination=3D"fr-FR">  <!-- If one needs to add a specific =
calendar -->
            <filename>index.html</filename>
            <filename>js/index.html</filename>
            <filename>js/calendar-setup.js</filename>
            <filename>js/calendar.js</filename>
        </media>
        <params />
</extension>

test2.xml

<extension version=3D"3.7" client=3D"administrator" type=3D"language" metho=
d=3D"upgrade"> <!-- change to client=3D"site" if site pack -->
        <name>French (fr-FR)</name> <!-- New in 3.7.0: Use only latin ascii=
 characters. -->
        <tag>fr-FR</tag>
        <version>3.7.0.1</version>
        <creationDate>15/02/2017</creationDate>
        <author>French translation team :http://joomla.fr </author>
        <authorEmail> [email protected] mailto:[email protected] </au=
thorEmail>
        <authorUrl>http://www.joomla.fr </authorUrl>
        <copyright>Copyright (C) 2005 - 2017http://joomla.fr et Open Source=
 Matters. Tous droits r=C3=A9serv=C3=A9s</copyright>
        <license>GNU General Public License version 2 or later; see LICENSE=
.txt</license>
        <description>fr-FR administrator language</description>
        <files>
                <filename>fr-FR.plg_captcha_recaptcha.sys.ini</filename>
                <filename>fr-FR.com_admin.ini</filename>
                <filename>fr-FR.com_admin.sys.ini</filename>
                <filename>fr-FR.com_ajax.ini</filename>
                <filename>fr-FR.com_ajax.sys.ini</filename>
                <filename>fr-FR.com_associations.ini</filename>
                <filename>fr-FR.com_associations.sys.ini</filename>
                <filename>fr-FR.com_banners.ini</filename>
                <filename>fr-FR.com_banners.sys.ini</filename>
                <filename>fr-FR.com_cache.ini</filename>
                <filename>fr-FR.com_cache.sys.ini</filename>
                <filename>fr-FR.com_categories.ini</filename>
                <filename>fr-FR.com_categories.sys.ini</filename>
                <filename>fr-FR.com_checkin.ini</filename>
                <filename>fr-FR.com_checkin.sys.ini</filename>
                <filename>fr-FR.com_config.ini</filename>
                <filename>fr-FR.com_config.sys.ini</filename>
                <filename>fr-FR.com_contact.ini</filename>
                <filename>fr-FR.com_contact.sys.ini</filename>
                <filename>fr-FR.com_content.ini</filename>
                <filename>fr-FR.com_content.sys.ini</filename>
                <filename>fr-FR.com_contenthistory.ini</filename>
                <filename>fr-FR.com_contenthistory.sys.ini</filename>
                <filename>fr-FR.com_cpanel.ini</filename>
                <filename>fr-FR.com_cpanel.sys.ini</filename>
                <filename>fr-FR.com_fields.ini</filename>
                <filename>fr-FR.com_fields.sys.ini</filename>
                <!-- Spacer to get past a buggy record count! -->
                <filename>fr-FR.com_finder.ini</filename>
                <filename>fr-FR.com_finder.sys.ini</filename>
                <filename>fr-FR.com_installer.ini</filename>
                <filename>fr-FR.com_installer.sys.ini</filename>
                <filename>fr-FR.com_joomlaupdate.ini</filename>
                <filename>fr-FR.com_joomlaupdate.sys.ini</filename>
                <filename>fr-FR.com_languages.ini</filename>
                <filename>fr-FR.com_languages.sys.ini</filename>
                <filename>fr-FR.com_login.ini</filename>
                <filename>fr-FR.com_login.sys.ini</filename>
                <filename>fr-FR.com_mailto.sys.ini</filename>
                <filename>fr-FR.com_media.ini</filename>
                <filename>fr-FR.com_media.sys.ini</filename>
                <filename>fr-FR.com_menus.ini</filename>
                <filename>fr-FR.com_menus.sys.ini</filename>
                <filename>fr-FR.com_messages.ini</filename>
                <filename>fr-FR.com_messages.sys.ini</filename>
                <filename>fr-FR.com_modules.ini</filename>
                <filename>fr-FR.com_modules.sys.ini</filename>
                <filename>fr-FR.com_newsfeeds.ini</filename>
                <filename>fr-FR.com_newsfeeds.sys.ini</filename>
                <filename>fr-FR.com_plugins.ini</filename>
                <filename>fr-FR.com_plugins.sys.ini</filename>
                <filename>fr-FR.com_postinstall.ini</filename>
                <filename>fr-FR.com_postinstall.sys.ini</filename>
                <filename>fr-FR.com_redirect.ini</filename>
                <filename>fr-FR.com_redirect.sys.ini</filename>
                <filename>fr-FR.com_search.ini</filename>
                <filename>fr-FR.com_search.sys.ini</filename>
                <filename>fr-FR.com_tags.ini</filename>
                <filename>fr-FR.com_tags.sys.ini</filename>
                <filename>fr-FR.com_templates.ini</filename>
                <filename>fr-FR.com_templates.sys.ini</filename>
                <filename>fr-FR.com_users.ini</filename>
                <filename>fr-FR.com_users.sys.ini</filename>
                <filename>fr-FR.com_weblinks.ini</filename>
                <filename>fr-FR.com_weblinks.sys.ini</filename>
                <filename>fr-FR.com_wrapper.ini</filename>
                <filename>fr-FR.com_wrapper.sys.ini</filename>
                <!-- this file can be added in the ADMINISTRATOR pack if on=
e wants to change the fonts used to display the back-end interface.-->
                        <filename>fr-FR.css</filename>
                <!-- -->
                <filename>fr-FR.ini</filename>
                <filename>fr-FR.lib_joomla.ini</filename>
                <filename>fr-FR.localise.php</filename>
                <filename>fr-FR.mod_custom.ini</filename>
                <filename>fr-FR.mod_custom.sys.ini</filename>
                <filename>fr-FR.mod_feed.ini</filename>
                <filename>fr-FR.mod_feed.sys.ini</filename>
                <filename>fr-FR.mod_latest.ini</filename>
                <filename>fr-FR.mod_latest.sys.ini</filename>
                <filename>fr-FR.mod_logged.ini</filename>
                <filename>fr-FR.mod_logged.sys.ini</filename>
                <filename>fr-FR.mod_login.ini</filename>
                <filename>fr-FR.mod_login.sys.ini</filename>
                <filename>fr-FR.mod_menu.ini</filename>
                <filename>fr-FR.mod_menu.sys.ini</filename>
                <filename>fr-FR.mod_multilangstatus.ini</filename>
                <filename>fr-FR.mod_multilangstatus.sys.ini</filename>
                <filename>fr-FR.mod_popular.ini</filename>
                <filename>fr-FR.mod_popular.sys.ini</filename>
                <filename>fr-FR.mod_quickicon.ini</filename>
                <filename>fr-FR.mod_quickicon.sys.ini</filename>
                <filename>fr-FR.mod_stats_admin.ini</filename>
                <filename>fr-FR.mod_stats_admin.sys.ini</filename>
                <filename>fr-FR.mod_status.ini</filename>
                <filename>fr-FR.mod_status.sys.ini</filename>
                <filename>fr-FR.mod_submenu.ini</filename>
                <filename>fr-FR.mod_submenu.sys.ini</filename>
                <filename>fr-FR.mod_title.ini</filename>
                <filename>fr-FR.mod_title.sys.ini</filename>
                <filename>fr-FR.mod_toolbar.ini</filename>
                <filename>fr-FR.mod_toolbar.sys.ini</filename>
                <filename>fr-FR.mod_version.ini</filename>
                <filename>fr-FR.mod_version.sys.ini</filename>
                <filename>fr-FR.plg_authentication_cookie.ini</filename>
                <filename>fr-FR.plg_authentication_cookie.sys.ini</filename=
>
                <filename>fr-FR.plg_authentication_gmail.ini</filename>
                <filename>fr-FR.plg_authentication_gmail.sys.ini</filename>
                <filename>fr-FR.plg_authentication_joomla.ini</filename>
                <filename>fr-FR.plg_authentication_joomla.sys.ini</filename=
>
                <filename>fr-FR.plg_authentication_ldap.ini</filename>
                <filename>fr-FR.plg_authentication_ldap.sys.ini</filename>
                <filename>fr-FR.plg_captcha_recaptcha.ini</filename>
                <filename>fr-FR.plg_captcha_recaptcha.sys.ini</filename>
                <filename>fr-FR.plg_content_contact.ini</filename>
                <filename>fr-FR.plg_content_contact.sys.ini</filename>
                <filename>fr-FR.plg_content_emailcloak.ini</filename>
                <filename>fr-FR.plg_content_emailcloak.sys.ini</filename>
                <filename>fr-FR.plg_content_fields.ini</filename>
                <filename>fr-FR.plg_content_fields.sys.ini</filename>
                <filename>fr-FR.plg_content_finder.ini</filename>
                <filename>fr-FR.plg_content_finder.sys.ini</filename>
                <filename>fr-FR.plg_content_joomla.ini</filename>
                <filename>fr-FR.plg_content_joomla.sys.ini</filename>
                <filename>fr-FR.plg_content_loadmodule.ini</filename>
                <filename>fr-FR.plg_content_loadmodule.sys.ini</filename>
                <filename>fr-FR.plg_content_pagebreak.ini</filename>
                <filename>fr-FR.plg_content_pagebreak.sys.ini</filename>
                <filename>fr-FR.plg_content_pagenavigation.ini</filename>
                <filename>fr-FR.plg_content_pagenavigation.sys.ini</filenam=
e>
                <filename>fr-FR.plg_content_vote.ini</filename>
                <filename>fr-FR.plg_content_vote.sys.ini</filename>
                <filename>fr-FR.plg_editors-xtd_article.ini</filename>
                <filename>fr-FR.plg_editors-xtd_article.sys.ini</filename>
                <filename>fr-FR.plg_editors-xtd_contact.ini</filename>
                <filename>fr-FR.plg_editors-xtd_contact.sys.ini</filename>
                <filename>fr-FR.plg_editors-xtd_fields.ini</filename>
                <filename>fr-FR.plg_editors-xtd_fields.sys.ini</filename>
                <filename>fr-FR.plg_editors-xtd_image.ini</filename>
                <filename>fr-FR.plg_editors-xtd_image.sys.ini</filename>
                <filename>fr-FR.plg_editors-xtd_menu.ini</filename>
                <filename>fr-FR.plg_editors-xtd_menu.sys.ini</filename>
                <filename>fr-FR.plg_editors-xtd_module.ini</filename>
                <filename>fr-FR.plg_editors-xtd_module.sys.ini</filename>
                <filename>fr-FR.plg_editors-xtd_pagebreak.ini</filename>
                <filename>fr-FR.plg_editors-xtd_pagebreak.sys.ini</filename=
>
                <!-- Spacer to get past a buggy record count! -->
                <filename>fr-FR.plg_editors-xtd_readmore.ini</filename>
                <filename>fr-FR.plg_editors-xtd_readmore.sys.ini</filename>
                <filename>fr-FR.plg_editors_codemirror.ini</filename>
                <filename>fr-FR.plg_editors_codemirror.sys.ini</filename>
                <filename>fr-FR.plg_editors_none.ini</filename>
                <filename>fr-FR.plg_editors_none.sys.ini</filename>
                <filename>fr-FR.plg_editors_tinymce.ini</filename>
                <filename>fr-FR.plg_editors_tinymce.sys.ini</filename>
                <filename>fr-FR.plg_extension_joomla.ini</filename>
                <filename>fr-FR.plg_extension_joomla.sys.ini</filename>
                <filename>fr-FR.plg_fields_calendar.ini</filename>
                <filename>fr-FR.plg_fields_calendar.sys.ini</filename>
                <filename>fr-FR.plg_fields_checkboxes.ini</filename>
                <filename>fr-FR.plg_fields_checkboxes.sys.ini</filename>
                <filename>fr-FR.plg_fields_color.ini</filename>
                <filename>fr-FR.plg_fields_color.sys.ini</filename>
                <filename>fr-FR.plg_fields_editor.ini</filename>
                <filename>fr-FR.plg_fields_editor.sys.ini</filename>
                <filename>fr-FR.plg_fields_gallery.ini</filename>
                <filename>fr-FR.plg_fields_gallery.sys.ini</filename>
                <filename>fr-FR.plg_fields_image.ini</filename>
                <filename>fr-FR.plg_fields_image.sys.ini</filename>
                <filename>fr-FR.plg_fields_imagelist.ini</filename>
                <filename>fr-FR.plg_fields_imagelist.sys.ini</filename>
                <filename>fr-FR.plg_fields_integer.ini</filename>
                <filename>fr-FR.plg_fields_integer.sys.ini</filename>
                <filename>fr-FR.plg_fields_list.ini</filename>
                <filename>fr-FR.plg_fields_list.sys.ini</filename>
                <filename>fr-FR.plg_fields_media.ini</filename>
                <filename>fr-FR.plg_fields_media.sys.ini</filename>
                <filename>fr-FR.plg_fields_radio.ini</filename>
                <filename>fr-FR.plg_fields_radio.sys.ini</filename>
                <filename>fr-FR.plg_fields_sql.ini</filename>
                <filename>fr-FR.plg_fields_sql.sys.ini</filename>
                <filename>fr-FR.plg_fields_text.ini</filename>
                <filename>fr-FR.plg_fields_text.sys.ini</filename>
                <!-- Spacer to get past a buggy record count! -->
                <filename>fr-FR.plg_fields_textarea.ini</filename>
                <filename>fr-FR.plg_fields_textarea.sys.ini</filename>
                <filename>fr-FR.plg_fields_url.ini</filename>
                <filename>fr-FR.plg_fields_url.sys.ini</filename>
                <filename>fr-FR.plg_fields_user.ini</filename>
                <filename>fr-FR.plg_fields_user.sys.ini</filename>
                <filename>fr-FR.plg_fields_usergrouplist.ini</filename>
                <filename>fr-FR.plg_fields_usergrouplist.sys.ini</filename>
                <filename>fr-FR.plg_finder_categories.ini</filename>
                <filename>fr-FR.plg_finder_categories.sys.ini</filename>
                <filename>fr-FR.plg_finder_contacts.ini</filename>
                <filename>fr-FR.plg_finder_contacts.sys.ini</filename>
                <filename>fr-FR.plg_finder_content.ini</filename>
                <filename>fr-FR.plg_finder_content.sys.ini</filename>
                <filename>fr-FR.plg_finder_newsfeeds.ini</filename>
                <filename>fr-FR.plg_finder_newsfeeds.sys.ini</filename>
                <filename>fr-FR.plg_finder_tags.ini</filename>
                <filename>fr-FR.plg_finder_tags.sys.ini</filename>
                <filename>fr-FR.plg_finder_weblinks.ini</filename>
                <filename>fr-FR.plg_finder_weblinks.sys.ini</filename>
                <filename>fr-FR.plg_installer_folderinstaller.ini</filename=
>
                <filename>fr-FR.plg_installer_folderinstaller.sys.ini</file=
name>
                <filename>fr-FR.plg_installer_packageinstaller.ini</filenam=
e>
                <filename>fr-FR.plg_installer_packageinstaller.sys.ini</fil=
ename>
                <filename>fr-FR.plg_installer_urlinstaller.ini</filename>
                <filename>fr-FR.plg_installer_urlinstaller.sys.ini</filenam=
e>
                <filename>fr-FR.plg_installer_webinstaller.ini</filename>
                <filename>fr-FR.plg_installer_webinstaller.sys.ini</filenam=
e>
                <filename>fr-FR.plg_quickicon_extensionupdate.ini</filename=
>
                <filename>fr-FR.plg_quickicon_extensionupdate.sys.ini</file=
name>
                <filename>fr-FR.plg_quickicon_joomlaupdate.ini</filename>
                <filename>fr-FR.plg_quickicon_joomlaupdate.sys.ini</filenam=
e>
                <filename>fr-FR.plg_quickicon_phpversioncheck.ini</filename=
>
                <filename>fr-FR.plg_quickicon_phpversioncheck.sys.ini</file=
name>
                <!-- Spacer to get past a buggy record count! -->
                <filename>fr-FR.plg_search_categories.ini</filename>
                <filename>fr-FR.plg_search_categories.sys.ini</filename>
                <filename>fr-FR.plg_search_contacts.ini</filename>
                <filename>fr-FR.plg_search_contacts.sys.ini</filename>
                <filename>fr-FR.plg_search_content.ini</filename>
                <filename>fr-FR.plg_search_content.sys.ini</filename>
                <filename>fr-FR.plg_search_newsfeeds.ini</filename>
                <filename>fr-FR.plg_search_newsfeeds.sys.ini</filename>
                <filename>fr-FR.plg_search_tags.ini</filename>
                <filename>fr-FR.plg_search_tags.sys.ini</filename>
                <filename>fr-FR.plg_search_weblinks.ini</filename>
                <filename>fr-FR.plg_search_weblinks.sys.ini</filename>
                <filename>fr-FR.plg_system_cache.ini</filename>
                <filename>fr-FR.plg_system_cache.sys.ini</filename>
                <filename>fr-FR.plg_system_debug.ini</filename>
                <filename>fr-FR.plg_system_debug.sys.ini</filename>
                <filename>fr-FR.plg_system_fields.ini</filename>
                <filename>fr-FR.plg_system_fields.sys.ini</filename>
                <filename>fr-FR.plg_system_highlight.ini</filename>
                <filename>fr-FR.plg_system_highlight.sys.ini</filename>
                <filename>fr-FR.plg_system_languagecode.ini</filename>
                <filename>fr-FR.plg_system_languagecode.sys.ini</filename>
                <filename>fr-FR.plg_system_languagefilter.ini</filename>
                <filename>fr-FR.plg_system_languagefilter.sys.ini</filename=
>
                <filename>fr-FR.plg_system_log.ini</filename>
                <filename>fr-FR.plg_system_log.sys.ini</filename>
                <filename>fr-FR.plg_system_logout.ini</filename>
                <filename>fr-FR.plg_system_logout.sys.ini</filename>
                <filename>fr-FR.plg_system_p3p.ini</filename>
                <filename>fr-FR.plg_system_p3p.sys.ini</filename>
                <filename>fr-FR.plg_system_redirect.ini</filename>
                <filename>fr-FR.plg_system_redirect.sys.ini</filename>
                <filename>fr-FR.plg_system_remember.ini</filename>
                <filename>fr-FR.plg_system_remember.sys.ini</filename>
                <filename>fr-FR.plg_system_sef.ini</filename>
                <filename>fr-FR.plg_system_sef.sys.ini</filename>
                <!-- Spacer to get past a buggy record count! -->
                <filename>fr-FR.plg_system_stats.ini</filename>
                <filename>fr-FR.plg_system_stats.sys.ini</filename>
                <filename>fr-FR.plg_system_updatenotification.ini</filename=
>
                <filename>fr-FR.plg_system_updatenotification.sys.ini</file=
name>
                <filename>fr-FR.plg_twofactorauth_totp.ini</filename>
                <filename>fr-FR.plg_twofactorauth_totp.sys.ini</filename>
                <filename>fr-FR.plg_twofactorauth_yubikey.ini</filename>
                <filename>fr-FR.plg_twofactorauth_yubikey.sys.ini</filename=
>
                <filename>fr-FR.plg_user_contactcreator.ini</filename>
                <filename>fr-FR.plg_user_contactcreator.sys.ini</filename>
                <filename>fr-FR.plg_user_joomla.ini</filename>
                <filename>fr-FR.plg_user_joomla.sys.ini</filename>
                <filename>fr-FR.plg_user_profile.ini</filename>
                <filename>fr-FR.plg_user_profile.sys.ini</filename>
                <filename>fr-FR.tpl_hathor.ini</filename>
                <filename>fr-FR.tpl_hathor.sys.ini</filename>
                <filename>fr-FR.tpl_isis.ini</filename>
                <filename>fr-FR.tpl_isis.sys.ini</filename>
                <!-- This file is mandatory as otherwise the pack can't be =
uninstalled. -->
                <filename file=3D"meta">install.xml</filename>
                <filename file=3D"meta">fr-FR.xml</filename>
        </files>
        <media destination=3D"fr-FR">  <!-- If one needs to add a specific =
calendar -->
            <filename>index.html</filename>
            <filename>js/index.html</filename>
            <filename>js/calendar-setup.js</filename>
            <filename>js/calendar.js</filename>
        </media>
        <params />
</extension>

excerpts from test1.out (showing errors reported at lines 40, 158, 195 in t=
est1.xml):

...
   startElement(name=3D"filename",type=3D"typeLanguageFilesFilename",attrib=
utes=3D{})
   endElement(name=3D"filename")
   startElement(name=3D"filename",type=3D"typeLanguageFilesFilename",attrib=
utes=3D{})
[Error] test1.xml:40:44: cvc-assertion: Assertion evaluation ('./text()[mat=
ches(.,'^([a-z]{2}[a-z]?-[A-Z]{2}\.((((com)|(lib)|(mod(_[a-z][a-z0-9]+)?)|(=
plg_[a-z][a-z0-9]+(\-[a-z0-9][a-z0-9]+)*)|(tpl))_[a-z][a-z0-9]+(\.sys)?(\.i=
ni))|(ini)|(css)|(localise\.php)))|([a-z]{2}[a-z]?-[A-Z]{2}\.xml)|(install\=
.xml)$')]') for element 'filename' on schema type 'typeLanguageFilesFilenam=
e' did not succeed.
[Error] test1.xml:40:44: cvc-assertion: Assertion evaluation ('if (matches(=
text(),'^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$')) then @file else true()') for el=
ement 'filename' on schema type 'typeLanguageFilesFilename' did not succeed=
. XPTY0004 : Value does not match a required type.
[Error] test1.xml:40:44: cvc-assertion: Assertion evaluation ('if (matches(=
text(),'^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$')) then @file[.=3D'meta'] else tru=
e()') for element 'filename' on schema type 'typeLanguageFilesFilename' did=
 not succeed. XPTY0004 : Value does not match a required type.
   endElement(name=3D"filename")
   startElement(name=3D"filename",type=3D"typeLanguageFilesFilename",attrib=
utes=3D{})
   endElement(name=3D"filename")
...
   startElement(name=3D"filename",type=3D"typeLanguageFilesFilename",attrib=
utes=3D{})
   endElement(name=3D"filename")
   startElement(name=3D"filename",type=3D"typeLanguageFilesFilename",attrib=
utes=3D{})
[Error] test1.xml:158:58: cvc-assertion: Assertion evaluation ('./text()[ma=
tches(.,'^([a-z]{2}[a-z]?-[A-Z]{2}\.((((com)|(lib)|(mod(_[a-z][a-z0-9]+)?)|=
(plg_[a-z][a-z0-9]+(\-[a-z0-9][a-z0-9]+)*)|(tpl))_[a-z][a-z0-9]+(\.sys)?(\.=
ini))|(ini)|(css)|(localise\.php)))|([a-z]{2}[a-z]?-[A-Z]{2}\.xml)|(install=
\.xml)$')]') for element 'filename' on schema type 'typeLanguageFilesFilena=
me' did not succeed.
[Error] test1.xml:158:58: cvc-assertion: Assertion evaluation ('if (matches=
(text(),'^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$')) then @file else true()') for e=
lement 'filename' on schema type 'typeLanguageFilesFilename' did not succee=
d. XPTY0004 : Value does not match a required type.
[Error] test1.xml:158:58: cvc-assertion: Assertion evaluation ('if (matches=
(text(),'^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$')) then @file[.=3D'meta'] else tr=
ue()') for element 'filename' on schema type 'typeLanguageFilesFilename' di=
d not succeed. XPTY0004 : Value does not match a required type.
   endElement(name=3D"filename")
   startElement(name=3D"filename",type=3D"typeLanguageFilesFilename",attrib=
utes=3D{})
   endElement(name=3D"filename")
...
   startElement(name=3D"filename",type=3D"typeLanguageFilesFilename",attrib=
utes=3D{})
   endElement(name=3D"filename")
   startElement(name=3D"filename",type=3D"typeLanguageFilesFilename",attrib=
utes=3D{})
[Error] test1.xml:195:57: cvc-assertion: Assertion evaluation ('./text()[ma=
tches(.,'^([a-z]{2}[a-z]?-[A-Z]{2}\.((((com)|(lib)|(mod(_[a-z][a-z0-9]+)?)|=
(plg_[a-z][a-z0-9]+(\-[a-z0-9][a-z0-9]+)*)|(tpl))_[a-z][a-z0-9]+(\.sys)?(\.=
ini))|(ini)|(css)|(localise\.php)))|([a-z]{2}[a-z]?-[A-Z]{2}\.xml)|(install=
\.xml)$')]') for element 'filename' on schema type 'typeLanguageFilesFilena=
me' did not succeed.
[Error] test1.xml:195:57: cvc-assertion: Assertion evaluation ('if (matches=
(text(),'^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$')) then @file else true()') for e=
lement 'filename' on schema type 'typeLanguageFilesFilename' did not succee=
d. XPTY0004 : Value does not match a required type.
[Error] test1.xml:195:57: cvc-assertion: Assertion evaluation ('if (matches=
(text(),'^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$')) then @file[.=3D'meta'] else tr=
ue()') for element 'filename' on schema type 'typeLanguageFilesFilename' di=
d not succeed. XPTY0004 : Value does not match a required type.
   endElement(name=3D"filename")
   startElement(name=3D"filename",type=3D"typeLanguageFilesFilename",attrib=
utes=3D{})
   endElement(name=3D"filename")
...

xml_diffs.out

Comparing files test1.xml and TEST2.XML
***** test1.xml
                <filename>fr-FR.com_fields.sys.ini</filename>
                <filename>fr-FR.com_finder.ini</filename>
***** TEST2.XML
                <filename>fr-FR.com_fields.sys.ini</filename>
                <!-- Spacer to get past a buggy record count! -->
                <filename>fr-FR.com_finder.ini</filename>
*****

***** test1.xml
                <filename>fr-FR.plg_fields_text.sys.ini</filename>
                <filename>fr-FR.plg_fields_textarea.ini</filename>
***** TEST2.XML
                <filename>fr-FR.plg_fields_text.sys.ini</filename>
                <!-- Spacer to get past a buggy record count! -->
                <filename>fr-FR.plg_fields_textarea.ini</filename>
*****

***** test1.xml
                <filename>fr-FR.plg_quickicon_phpversioncheck.sys.ini</file=
name>
                <filename>fr-FR.plg_search_categories.ini</filename>
***** TEST2.XML
                <filename>fr-FR.plg_quickicon_phpversioncheck.sys.ini</file=
name>
                <!-- Spacer to get past a buggy record count! -->
                <filename>fr-FR.plg_search_categories.ini</filename>
*****

***** test1.xml
                <filename>fr-FR.plg_system_sef.sys.ini</filename>
                <filename>fr-FR.plg_system_stats.ini</filename>
***** TEST2.XML
                <filename>fr-FR.plg_system_sef.sys.ini</filename>
                <!-- Spacer to get past a buggy record count! -->
                <filename>fr-FR.plg_system_stats.ini</filename>
*****


John MORRIS.


> ---------- Original Message ----------
> From: JOHN Morris < [email protected] mailto:[email protected]=
m .INVALID>
> To: [email protected] mailto:[email protected]
> Date: 18 August 2020 at 22:04
> Subject: Possible Bug: Xerces 2.12.1 for XML Validation with XSD 1.1 Sche=
ma under Java - Plain Text
>
> Hi,
>
> I am a relative newcomer to Xerces for XML Validation.
>
> I have been trying to replicate the results of a tutorial that I found on=
 the Internet. with particular reference to XSD Schema 1.1 features, Over t=
ime, I have tried using Xerces 2.12.1, along with various JDK versions (7, =
8, 13). Currently, I am using the validation capabilities of the jaxp.TypeI=
nfoWriter program.
>
> Recently, I have begun to look at the XSD 1.1 assert/assertion features w=
ith a longer XML file.
>
> I have used two sample XML files:
>
> 1) The first has more than 200 elements, one following hard on the previo=
us one.
>
> With this file, I find that there are particular line numbers that give t=
rouble in the validation process, although the XML content of those lines a=
ppears to be legal and valid.
>
> Moving the complete XML code from one of the troublesome lines to another=
 position, makes the same code in its new postion pass the validation but n=
ow another new error occurs with a new XML contruct, which now appears at t=
he troublesome line number.
>
> 2) The same XML file as in (1) but with XML comment lines introduced at e=
ach of the troublesome line numbers so that no validation is now required a=
t those lines. It should be noted, however, that the troublesome lines from=
 case (1) still appear, immediately after each of the new comment lines. Th=
e validation now passes completely.
>
> I am currently assuming that this behaviour (i.e. the errors) is unexpect=
ed.
>
> I can provide a ZIP file with these test cases. (I did try to send the e-=
mail posting this incident to the mailing list, complete with the attachmen=
t, but it did not post. Can someone tell me whether attachments are support=
ed on this mailing list)?
>
> The a ZIP file comprises a directory, testX, with following contents:
>
> java_xercesX.bat - the batch file to run the test cases
>
> test.xsd - the XSD 1.1 Schema file
>
> test1.xml - the first XML file, without the extra comment lines
>
> test2.xml - the second XML file, with the extra comment lines
>
> xml_diffs.out - the result of a comparison (with the "fc" program) of the=
 content of the two XML files
>
> In order to be able to run these test cases, you would have to unzip the =
attached file, go to the testX directory and update the paths in the few fe=
w lines of the file java_xercesX.bat to suit your system. Then, to run one =
test case, you would use:
>
> java_xercesX  jaxp.TypeInfoWriter test.xsd test1.xml
>
> for example, to validate test1.xml. (This batch file currently uses JDK8)=
.
>
> Results of my validations of the two test files are provided in test1.out=
 and test2.out, also in the testX directory.
>
> I look forward to getting some feedback on this possible bug.
>
> Please do not hesitate to ask questions or to point out anything foolish =
that I have been doing.
>
> Regards,
>
> John MORRIS,
> Abingdon, UK.


=20


--
Regards,
Mukul Gandhi



------=_Part_1309290_224465007.1598115453531
MIME-Version: 1.0
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE html>
<html><head>
    <meta charset=3D"UTF-8">
</head><body><p>Dear Mukul,<br></p><p>Many thanks for coming back to me on =
this one. You must be very busy with other on-going tasks.<br></p><p>I note=
 your reference to using jaxp.SourceValidator/ I&#39;m not sure whether you=
 are claiming that, if you use that, you don&#39;t see any of the problems =
that I have highlighted(?)<br></p><p>I would also like to understand more a=
bout the incomptabilities in &#39;matches&#39; function implementation in J=
ave and Xpath 2.0. I am not sure that this fits the bill as an explanation =
of those problems. I think that I may not have explained my test cases clea=
rly enough.<br></p><p>I find that seemingly good XML constructs cause valid=
ation error WHEN THOSE XML CONSTRUCTS OCCUR AT CERTAIN PROBLEMATIC LINE NUM=
BERS e.g. line 44, in my test1.xml file). However, those exact same constru=
cts DO NOT trigger errors if they appear at different XML line numbers. For=
 example, if I insert an XML comment line before one of these constructs,fo=
rmerly appearing at a problematic line number, so that it now appears at th=
e subsequent line number, it no longer triggers an error!!! That was what t=
he second test file was supposed to illustrate.<br></p><p>This smacks more =
of some kind of buffering problem in the validation code, rather than an in=
compatibility between implementations of &#39;matches&#39; functions (or in=
deed complexity of &#39;matches&#39; expressions).<br></p><p>As for using x=
s:pattern, my imagination was not rich enough to know how to achieve the sa=
me effect as I was trying to get with &#39;matches&#39; but now with xs:pat=
tern. Have you been able to visualise how to do that?<br></p><p>I look forw=
ard to hearing your reaction to these comments.<br></p><p>Best regards,<br>=
</p><p>John.<br></p><blockquote type=3D"cite">---------- Original Message -=
--------- <br>From: Mukul Gandhi &#60;[email protected]&#62; <br>To: j-user=
[email protected] <br>Date: 22 August 2020 at 10:22 <br>Subject: Re: Poss=
ible Bug: Xerces 2.12.1 for XML Validation with XSD 1.1 Schema under Java -=
 Plain Text <br> <br><div dir=3D"ltr"><div dir=3D"ltr"><div dir=3D"ltr"><di=
v>Hi John,</div><div dir=3D"ltr">&#160; &#160; &#160;With Xerces-J 2.12.1 X=
SD 1.1 implementation, given your test case XML and XSD documents, I see fe=
w xs:assert false results on the XPath 2.0 &#39;matches&#39; function. I&#3=
9;m using Xerces-J&#39;s jaxp.SourceValidator sample for XSD validation.</d=
iv><div dir=3D"ltr"><br></div><div dir=3D"ltr">As per my knowledge, Xerces-=
J XPath 2.0 engine&#39;s &#39;matches&#39; function implementation is based=
 on Java&#39;s regex classes, which is not 100% compliant to XPath 2.0 &#39=
;matches&#39; regex spec (my gut feeling is that, these two regex specs [ja=
va &#38; XPath 2.0 &#39;matches&#39;] have about 95% syntax and semantics i=
n common).</div><div dir=3D"ltr"><br></div><div dir=3D"ltr">Your XPath 2.0 =
&#39;matches&#39; regex expressions seem to me quite complex, and looks to =
me as sort of edge case requirements. My recommendation would be, to use XP=
ath 2.0 &#39;matches&#39; within Xerce-J&#39;s xs:assert for simple require=
ments. If you&#39;re looking for XSD (1.1) regex 100% compliance, I&#39;d s=
uggest using xs:pattern facet with Xerces-J.</div></div><br><div class=3D"o=
x-bce41a40f5-gmail_quote"><div dir=3D"ltr" class=3D"ox-bce41a40f5-gmail_att=
r">On Wed, Aug 19, 2020 at 2:40 PM JOHN Morris &#60;[email protected]=
.invalid&#62; wrote: <br></div><blockquote>Strictly speaking, I sould proba=
bly have be referring to Xerces-J 2.12.1. Sorry. <br> <br> One other thing =
that I should add is that I have not succeeded in finding any pattern to th=
e line numbers at which the apparently spurious errors are reported. <br> <=
br> Here are the files inline, which would have been part of the ZIP file, =
had I been able to send it. <br> <br> java_xercesX.bat: <br> <br> set &#34;=
jdkpath=3Di:\jdk1.8.0_261&#34; <br> set &#34;x2path=3Di:\Xerces-J-bin.2.12.=
1-xml-schema-1.1\xerces-2_12_1-xml-schema-1.1&#34; <br> set &#34;xml_data_p=
ath=3DI:\Joomla_MVC_dev\validatexml\admin\testA\&#34; <br> <br> %jdkpath%\b=
in\java -cp .;%x2path%\xml-apis.jar;%x2path%\xercesImpl.jar;%x2path%\serial=
izer.jar;%x2path%\resolver.jar;%x2path%\org.eclipse.wst.xml.xpath2.processo=
r_1.2.0.jar;%x2path%\xercesSamples.jar;%x2path%\cupv10k-runtime.jar;%x2path=
%\icu4j.jar; %1 -xsd11 -a %xml_data_path%%2 -i %xml_data_path%%3 <br> <br> =
test.xsd: <br> <br> &#60;?xml version=3D&#34;1.0&#34;?&#62; <br> &#60;xs:sc=
hema xmlns:xs=3D&#34; <a href=3D"http://www.w3.org/2001/XMLSchema" target=
=3D"_blank" rel=3D"noopener">http://www.w3.org/2001/XMLSchema</a>&#34; <br>=
 &#160; &#160; &#160; &#160; &#160; &#160;elementFormDefault=3D&#34;qualifi=
ed&#34;&#62; <br> &#160; &#160; &#160; &#160; &#60;!-- ********************=
** --&#62; <br> &#160; &#160; &#160; &#160; &#60;!-- * Top-level elements *=
 --&#62; <br> &#160; &#160; &#160; &#160; &#60;!-- ********************** -=
-&#62; <br> &#160; &#160; &#160; &#160; &#60;xs:element name=3D&#34;extensi=
on&#34;&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#60;xs:alternative test=3D&#34;@type=3D&#39;language&#39;&#34; type=3D&#34;=
extensionTypeLanguage&#34;/&#62; <br> &#160; &#160; &#160; &#160; &#60;/xs:=
element&#62; <br> &#160; &#160; &#160; &#160; &#60;!-- ********************=
************************************ --&#62; <br> &#160; &#160; &#160; &#16=
0; &#60;!-- * Structures used from more than one top-level element * --&#62=
; <br> &#160; &#160; &#160; &#160; &#60;!-- *******************************=
************************* --&#62; <br> &#160; &#160; &#160; &#160; &#60;xs:=
group name=3D&#34;metadata&#34;&#62; <br> &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#60;xs:all&#62; <br> &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:element name=
=3D&#34;name&#34; type=3D&#34;xs:string&#34; minOccurs=3D&#34;0&#34; maxOcc=
urs=3D&#34;1&#34;/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#60;xs:element name=3D&#34;creationD=
ate&#34; type=3D&#34;xs:string&#34; minOccurs=3D&#34;0&#34; maxOccurs=3D&#3=
4;1&#34;/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#60;xs:element name=3D&#34;author&#34; type=
=3D&#34;xs:string&#34; minOccurs=3D&#34;0&#34; maxOccurs=3D&#34;1&#34;/&#62=
; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#60;xs:element name=3D&#34;authorEmail&#34; type=3D&#34;xs=
:string&#34; minOccurs=3D&#34;0&#34; maxOccurs=3D&#34;1&#34;/&#62; <br> &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#60;xs:element name=3D&#34;authorUrl&#34; type=3D&#34;xs:anyURI&#34;=
 minOccurs=3D&#34;0&#34; maxOccurs=3D&#34;1&#34;/&#62; <br> &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;x=
s:element name=3D&#34;copyright&#34; type=3D&#34;xs:string&#34; minOccurs=
=3D&#34;0&#34; maxOccurs=3D&#34;1&#34;/&#62; <br> &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- *******=
********************************************************************** --&#=
62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#60;!-- * Disregard the following element, not decoded b=
y the installation software * --&#62; <br> &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- **************=
*************************************************************** --&#62; <br=
> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#60;xs:element name=3D&#34;license&#34; type=3D&#34;xs:string&#=
34; minOccurs=3D&#34;0&#34; maxOccurs=3D&#34;1&#34;/&#62; <br> &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#6=
0;xs:element name=3D&#34;version&#34; type=3D&#34;extensionVersionType&#34;=
 minOccurs=3D&#34;0&#34; maxOccurs=3D&#34;1&#34;/&#62; <br> &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;x=
s:element name=3D&#34;description&#34; type=3D&#34;xs:string&#34; minOccurs=
=3D&#34;0&#34; maxOccurs=3D&#34;1&#34;/&#62; <br> &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#60;/xs:all&#62; <br> &#160; &#160; &#160; =
&#160; &#60;/xs:group&#62; <br> &#160; &#160; &#160; &#160; &#60;xs:simpleT=
ype name=3D&#34;methodChoice&#34;&#62; <br> &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#60;xs:restriction base=3D&#34;xs:string&#34;&#62=
; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#60;xs:enumeration value=3D&#34;install&#34;/&#62; <br> &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#60;xs:enumeration value=3D&#34;upgrade&#34;/&#62; <br> &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#60;/xs:restriction&#62; <br>=
 &#160; &#160; &#160; &#160; &#60;/xs:simpleType&#62; <br> &#160; &#160; &#=
160; &#160; &#60;xs:simpleType name=3D&#34;joomlaVersionChoice&#34;&#62; <b=
r> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:restrict=
ion base=3D&#34;xs:string&#34;&#62; <br> &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:pattern value=3D&=
#34;[23].[0-9]&#34;/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#60;/xs:restriction&#62; <br> &#160; &#160; &#160; &#160; &#60=
;/xs:simpleType&#62; <br> &#160; &#160; &#160; &#160; &#60;xs:simpleType na=
me=3D&#34;extensionVersionType&#34;&#62; <br> &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#60;xs:restriction base=3D&#34;xs:string&#34;&#=
62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#60;xs:pattern value=3D&#34;[0-9]([0-9])*(.[0-9]([0-9])*=
)+&#34;/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#60;/xs:restriction&#62; <br> &#160; &#160; &#160; &#160; &#60;/xs:simpleT=
ype&#62; <br> &#160; &#160; &#160; &#160; &#60;xs:simpleType name=3D&#34;ta=
gChoice&#34;&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#60;xs:restriction base=3D&#34;xs:string&#34;&#62; <br> &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;=
xs:pattern value=3D&#34;[a-z]{2,3}-[A-Z]{2,3}&#34;/&#62; <br> &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#60;/xs:restriction&#62; <br> &=
#160; &#160; &#160; &#160; &#60;/xs:simpleType&#62; <br> &#160; &#160; &#16=
0; &#160; &#60;xs:simpleType name=3D&#34;clientChoice&#34;&#62; <br> &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:restriction base=
=3D&#34;xs:string&#34;&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:pattern value=3D&#34;admi=
nistrator|site&#34;/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#60;/xs:restriction&#62; <br> &#160; &#160; &#160; &#160; &#60=
;/xs:simpleType&#62; <br> &#160; &#160; &#160; &#160; &#60;xs:complexType n=
ame=3D&#34;typeUpdateServers&#34;&#62; <br> &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#60;xs:complexContent&#62; <br> &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:=
restriction base=3D&#34;xs:anyType&#34;&#62; <br> &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#60;xs:all&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#60;xs:element name=3D&#34;server&#34; type=3D&#34=
;typeServerUpdateServers&#34; minOccurs=3D&#34;0&#34; maxOccurs=3D&#34;unbo=
unded&#34;/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;/xs:all&#62=
; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#60;/xs:restriction&#62; <br> &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#60;/xs:complexContent&#62; <br> &#160; &#160;=
 &#160; &#160; &#60;/xs:complexType&#62; <br> &#160; &#160; &#160; &#160; &=
#60;xs:complexType name=3D&#34;typeMedia&#34;&#62; <br> &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#60;xs:all&#62; <br> &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs=
:element name=3D&#34;filename&#34; type=3D&#34;xs:string&#34; minOccurs=3D&=
#34;0&#34; maxOccurs=3D&#34;unbounded&#34;/&#62; <br> &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:elem=
ent name=3D&#34;folder&#34; type=3D&#34;xs:string&#34; minOccurs=3D&#34;0&#=
34; maxOccurs=3D&#34;unbounded&#34;/&#62; <br> &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#60;/xs:all&#62; <br> &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#60;xs:attribute name=3D&#34;folder&#34; t=
ype=3D&#34;xs:string&#34; use=3D&#34;optional&#34;/&#62; <br> &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:attribute name=3D&#34;de=
stination&#34; type=3D&#34;xs:string&#34; use=3D&#34;optional&#34;/&#62; <b=
r> &#160; &#160; &#160; &#160; &#60;/xs:complexType&#62; <br> &#160; &#160;=
 &#160; &#160; &#60;xs:simpleType name=3D&#34;typeParams&#34;&#62; <br> &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:restriction ba=
se=3D&#34;xs:string&#34;&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#60;/xs:restriction&#62; <br> &#160; &#160; &#160; &#160; =
&#60;/xs:simpleType&#62; <br> &#160; &#160; &#160; &#160; &#60;!-- ********=
**************************** --&#62; <br> &#160; &#160; &#160; &#160; &#60;=
!-- * attributes optional or required? * --&#62; <br> &#160; &#160; &#160; =
&#160; &#60;!-- ************************************ --&#62; <br> &#160; &#=
160; &#160; &#160; &#60;xs:complexType name=3D&#34;typeServerUpdateServers&=
#34;&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60=
;xs:simpleContent&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#60;xs:extension base=3D&#34;xs:strin=
g&#34;&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:attribute nam=
e=3D&#34;name&#34; type=3D&#34;xs:string&#34;/&#62; <br> &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#60;xs:attribute name=3D&#34;type&#34; type=3D&#34;serv=
erChoice&#34;/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- ****=
************************************************ --&#62; <br> &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#60;!-- * Include the &#34;priority&#34; attribute=
 here to prevent * --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!=
-- * errors although I have failed to identify&#160; &#160; &#160; &#160; *=
 --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- * code in Jooml=
a! which processes it.&#160; &#160; &#160; &#160; &#160; &#160; &#160; * --=
&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- ******************=
********************************** --&#62; <br> &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#60;xs:attribute name=3D&#34;priority&#34; type=3D&#34;xs:positi=
veInteger&#34;/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#60;/xs:extension&#62; <br> &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#60;/xs:simpleContent&#62; <b=
r> &#160; &#160; &#160; &#160; &#60;/xs:complexType&#62; <br> &#160; &#160;=
 &#160; &#160; &#60;xs:simpleType name=3D&#34;serverChoice&#34;&#62; <br> &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:restriction =
base=3D&#34;xs:string&#34;&#62; <br> &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:pattern value=3D&#34;=
extension|collection&#34;/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#60;/xs:restriction&#62; <br> &#160; &#160; &#160; &#160=
; &#60;/xs:simpleType&#62; <br> &#160; &#160; &#160; &#160; &#60;!-- ******=
*************************************** --&#62; <br> &#160; &#160; &#160; &=
#160; &#60;!-- * Material for Language-specific extensions * --&#62; <br> &=
#160; &#160; &#160; &#160; &#60;!-- ***************************************=
****** --&#62; <br> &#160; &#160; &#160; &#160; &#60;xs:complexType name=3D=
&#34;extensionTypeLanguage&#34;&#62; <br> &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#60;xs:all&#62; <br> &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:element name=
=3D&#34;tag&#34; type=3D&#34;tagChoice&#34; minOccurs=3D&#34;0&#34; maxOccu=
rs=3D&#34;1&#34;/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#60;xs:group ref=3D&#34;metadata&#34;=
/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#60;xs:element name=3D&#34;files&#34; type=3D&#34;typ=
eLanguageFiles&#34; minOccurs=3D&#34;1&#34; maxOccurs=3D&#34;unbounded&#34;=
/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#60;xs:element name=3D&#34;media&#34; type=3D&#34;typ=
eMedia&#34; minOccurs=3D&#34;0&#34; maxOccurs=3D&#34;1&#34;/&#62; <br> &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#60;xs:element name=3D&#34;params&#34; type=3D&#34;typeParams&#34; mi=
nOccurs=3D&#34;1&#34; maxOccurs=3D&#34;1&#34;/&#62; <br> &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#60;/xs:all&#62; <br> &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:attribute name=3D&#34;typ=
e&#34; type=3D&#34;xs:string&#34; use=3D&#34;required&#34; fixed=3D&#34;lan=
guage&#34;/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#60;xs:attribute name=3D&#34;method&#34; type=3D&#34;methodChoice&#34;/=
&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:=
attribute name=3D&#34;version&#34; type=3D&#34;joomlaVersionChoice&#34;/&#6=
2; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:att=
ribute name=3D&#34;client&#34; type=3D&#34;clientChoice&#34;/&#62; <br> &#1=
60; &#160; &#160; &#160; &#60;/xs:complexType&#62; <br> &#160; &#160; &#160=
; &#160; &#60;xs:complexType name=3D&#34;typeLanguageFilesFilename&#34;&#62=
; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:simp=
leContent&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#60;xs:extension base=3D&#34;xs:string&#34;&#=
62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:attribute name=3D&#34=
;file&#34; type=3D&#34;xs:string&#34; use=3D&#34;optional&#34;/&#62; <br> &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#60;!-- ******************************=
***************************************************************************=
***************************************************************************=
***** --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- * Assuming=
 that the current context is &#34;/extension/files/filename&#34;&#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; * --&#62; <br> &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#60;!-- * check that there are ALL elements in this context whose valu=
es DO match one of:&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160;* --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- *&#160;=
 1) ^([a-z]{2}[a-z]?-[A-Z]{2}\.((((com)|(lib)|(mod(_[a-z][a-z0-9]+)?)|(plg_=
[a-z][a-z0-9]+(\-[a-z0-9][a-z0-9]+)*)|(tpl))_[a-z][a-z0-9]+(\.sys)?(\.ini))=
|(ini)|(css)|(localise\.php)))$ * --&#62; <br> &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#60;!-- *&#160; 2) ^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$&#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; * --&#62; <br> &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#60;!-- *&#160; 3) ^(install\.xml)$&#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; * --&#62; <br> &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#60;!-- **************************************************************=
***************************************************************************=
************************************************ --&#62; <br> &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#60;xs:assert test=3D&#34;./text()[matches(.,&#39;=
^([a-z]{2}[a-z]?-[A-Z]{2}\.((((com)|(lib)|(mod(_[a-z][a-z0-9]+)?)|(plg_[a-z=
][a-z0-9]+(\-[a-z0-9][a-z0-9]+)*)|(tpl))_[a-z][a-z0-9]+(\.sys)?(\.ini))|(in=
i)|(css)|(localise\.php)))|([a-z]{2}[a-z]?-[A-Z]{2}\.xml)|(install\.xml)$&#=
39;)]&#34;/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- *******=
***************************************************************************=
********************************************************* --&#62; <br> &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#60;!-- * Of the elements whose values (.=
/text()) match:&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; * --&#62; <br> &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#60;!-- *&#160; 2) ^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$&#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; * --&#62; <br> &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#60;!-- * check that ALL have the &#34;file&#34; attribute.&#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160;* --&#62; <br> &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#60;!-- **********************************************************=
***************************************************************************=
****** --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- &#60;xs:a=
ssert test=3D&#34;./text()[matches(.,&#39;^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$&=
#39;)]/../@file&#34;/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;x=
s:assert test=3D&#34;if (true()) then true() else false()&#34;/&#62; <br> &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#60;xs:assert test=3D&#34;matches(text=
(),&#39;^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$&#39;)&#34;/&#62; --&#62; <br> &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#60;xs:assert test=3D&#34;if (matches(tex=
t(),&#39;^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$&#39;)) then @file else true()&#34=
;/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- ****************=
***************************************************************************=
************************************************ --&#62; <br> &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#60;!-- * Check that the ONE element which matches=
:&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160;* --&#62; <br> &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#60;!-- *&#160; 2) ^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$&#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; * --&#62; <br> &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#60;!-- * has an attribute &#34;file&#34; with val=
ue &#34;meta&#34;.&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; * --&#62; <br> &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#60;!-- ******************************************=
***************************************************************************=
********************** --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
60;!-- &#60;xs:assert test=3D&#34;./text()[matches(.,&#39;^([a-z]{2}[a-z]?-=
[A-Z]{2}\.xml)$&#39;)]/../@file[.=3D&#39;meta&#39;]&#34;/&#62; --&#62; <br>=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#60;xs:assert test=3D&#34;if (matche=
s(text(),&#39;^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$&#39;)) then @file[.=3D&#39;m=
eta&#39;] else true()&#34;/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#60;!-- ******************************************************************=
************************************************************************* -=
-&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- * Of the elements=
 whose values (./text()) match:&#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; * --&#62; <br> &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#60;!-- *&#160; 3) ^(install\.xml)$&#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; * --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#60;!-- * check that ALL have the &#34;file&#34; attribute.&#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160;* --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60=
;!-- **********************************************************************=
********************************************************************* --&#6=
2; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:assert test=3D&#34;if =
(./text()[matches(.,&#39;^(install\.xml)$&#39;)]) then @file else true()&#3=
4;/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- ***************=
***************************************************************************=
************************************************* --&#62; <br> &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#60;!-- * Check that the ONE element which matche=
s:&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160;* --&#62; <br> &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#60;!-- *&#160; 3) ^(install\.xml)$&#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; * --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- *=
 has an attribute &#34;file&#34; with value &#34;meta&#34;.&#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; * --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- *=
***************************************************************************=
*************************************************************** --&#62; <br=
> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#60;xs:assert test=3D&#34;if (./tex=
t()[matches(.,&#39;^(install\.xml)$&#39;)]) then @file[.=3D&#39;meta&#39;] =
else true()&#34;/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#60;/xs:extension&#62; <br> &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;/xs:simpleContent&#62; =
<br> &#160; &#160; &#160; &#160; &#60;/xs:complexType&#62; <br> &#160; &#16=
0; &#160; &#160; &#60;xs:complexType name=3D&#34;typeLanguageFiles&#34;&#62=
; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:all&=
#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#60;xs:element name=3D&#34;folder&#34; type=3D&#34;xs:s=
tring&#34; minOccurs=3D&#34;0&#34; maxOccurs=3D&#34;unbounded&#34;/&#62; <b=
r> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#60;xs:element name=3D&#34;filename&#34; type=3D&#34;typeLangu=
ageFilesFilename&#34; minOccurs=3D&#34;1&#34; maxOccurs=3D&#34;unbounded&#3=
4;/&#62; &#60;!-- For the &#34;index.&#60;php|html&#62;&#34; file --&#62; <=
br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;/xs:all&#6=
2; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;xs:att=
ribute name=3D&#34;folder&#34; type=3D&#34;xs:string&#34; use=3D&#34;option=
al&#34;/&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#60;!-- ******************************************************************=
***************************************************************************=
******************************************** --&#62; <br> &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#60;!-- * Assuming that the current=
 context is &#34;/extension/files&#34;&#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160;* --&#62; <br> &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#60;!-- ***********************************=
***************************************************************************=
***************************************************************************=
 --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;=
!-- ***********************************************************************=
***************************************************************************=
*************************************** --&#62; <br> &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#60;!-- Of the elements whose values (./=
text()) match:&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; * --&#62; <br> &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- *&#160; 1) ^([a-z]{2}[a=
-z]?-[A-Z]{2}\.((((com)|(lib)|(mod(_[a-z][a-z0-9]+)?)|(plg_[a-z][a-z0-9]+(\=
-[a-z0-9][a-z0-9]+)*)|(tpl))_[a-z][a-z0-9]+(\.sys)?(\.ini))|(ini)|(css)|(lo=
calise\.php)))$ * --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#60;!-- * check that NONE have the &#34;file&#34; attribute.&#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; * --&#62; <br> &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#60;!-- ********************************=
***************************************************************************=
***************************************************************************=
*** --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
60;xs:assert test=3D&#34;count(./filename/text()[matches(.,&#39;^([a-z]{2}[=
a-z]?-[A-Z]{2}\.((((com)|(lib)|(mod(_[a-z][a-z0-9]+)?)|(plg_[a-z][a-z0-9]+(=
\-[a-z0-9][a-z0-9]+)*)|(tpl))_[a-z][a-z0-9]+(\.sys)?(\.ini))|(ini)|(css)|(l=
ocalise\.php)))$&#39;)]/..[@file])=3D0&#34;/&#62; <br> &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#60;!-- ******************************=
***************************************************************************=
***************************************************************************=
***** --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#60;!-- * Check there is ONE and ONLY ONE element whose value (./text()) m=
atches:&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160;* --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#60;!-- *&#160; 2) ^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$&#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; * --&#62; <br> &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- *************=
***************************************************************************=
***************************************************************************=
********************** --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#60;xs:assert test=3D&#34;count(./filename/text()[matches=
(.,&#39;^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$&#39;)])=3D1&#34;/&#62; <br> &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- ****************=
***************************************************************************=
***************************************************************************=
******************* --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#60;!-- * Check there is ONE and ONLY ONE element whose valu=
e (./text()) matches:&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160;* --&#62; <br> &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#60;!-- *&#160; 3) ^(install\.xml)$&#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; * --&#62; <br> &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#60;!-- **********************************=
***************************************************************************=
***************************************************************************=
* --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60=
;xs:assert test=3D&#34;count(./filename/text()[matches(.,&#39;^(install\.xm=
l)$&#39;)])=3D1&#34;/&#62; <br> &#160; &#160; &#160; &#160; &#60;/xs:comple=
xType&#62; <br> &#60;/xs:schema&#62; <br> <br> test1.xml <br> <br> &#60;ext=
ension version=3D&#34;3.7&#34; client=3D&#34;administrator&#34; type=3D&#34=
;language&#34; method=3D&#34;upgrade&#34;&#62; &#60;!-- change to client=3D=
&#34;site&#34; if site pack --&#62; <br> &#160; &#160; &#160; &#160; &#60;n=
ame&#62;French (fr-FR)&#60;/name&#62; &#60;!-- New in 3.7.0: Use only latin=
 ascii characters. --&#62; <br> &#160; &#160; &#160; &#160; &#60;tag&#62;fr=
-FR&#60;/tag&#62; <br> &#160; &#160; &#160; &#160; &#60;version&#62;3.7.0.1=
&#60;/version&#62; <br> &#160; &#160; &#160; &#160; &#60;creationDate&#62;1=
5/02/2017&#60;/creationDate&#62; <br> &#160; &#160; &#160; &#160; &#60;auth=
or&#62;French translation team : <a href=3D"http://joomla.fr" target=3D"_bl=
ank" rel=3D"noopener">joomla.fr</a>&#60;/author&#62; <br> &#160; &#160; &#1=
60; &#160; &#60;authorEmail&#62; <a href=3D"mailto:[email protected]" ta=
rget=3D"_blank" rel=3D"noopener">[email protected]</a>&#60;/authorEmail&=
#62; <br> &#160; &#160; &#160; &#160; &#60;authorUrl&#62; <a href=3D"http:/=
/www.joomla.fr" target=3D"_blank" rel=3D"noopener">www.joomla.fr</a>&#60;/a=
uthorUrl&#62; <br> &#160; &#160; &#160; &#160; &#60;copyright&#62;Copyright=
 (C) 2005 - 2017 <a href=3D"http://joomla.fr" target=3D"_blank" rel=3D"noop=
ener">joomla.fr</a> et Open Source Matters. Tous droits r&#233;serv&#233;s&=
#60;/copyright&#62; <br> &#160; &#160; &#160; &#160; &#60;license&#62;GNU G=
eneral Public License version 2 or later; see LICENSE.txt&#60;/license&#62;=
 <br> &#160; &#160; &#160; &#160; &#60;description&#62;fr-FR administrator =
language&#60;/description&#62; <br> &#160; &#160; &#160; &#160; &#60;files&=
#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;file=
name&#62;fr-FR.plg_captcha_recaptcha.sys.ini&#60;/filename&#62; <br> &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.c=
om_admin.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#60;filename&#62;fr-FR.com_admin.sys.ini&#60;/filename&#=
62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filen=
ame&#62;fr-FR.com_ajax.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_ajax.sys.ini&#6=
0;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#60;filename&#62;fr-FR.com_associations.ini&#60;/filename&#62; <br> &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-F=
R.com_associations.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_banners.ini&#60=
;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#60;filename&#62;fr-FR.com_banners.sys.ini&#60;/filename&#62; <br> &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.=
com_cache.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#60;filename&#62;fr-FR.com_cache.sys.ini&#60;/filename&=
#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;file=
name&#62;fr-FR.com_categories.ini&#60;/filename&#62; <br> &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_categori=
es.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#60;filename&#62;fr-FR.com_checkin.ini&#60;/filename&#62; =
<br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&=
#62;fr-FR.com_checkin.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_config.ini&#=
60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#60;filename&#62;fr-FR.com_config.sys.ini&#60;/filename&#62; <br> &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR=
.com_contact.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_contact.sys.ini&#60;/file=
name&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60=
;filename&#62;fr-FR.com_content.ini&#60;/filename&#62; <br> &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_conten=
t.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#60;filename&#62;fr-FR.com_contenthistory.ini&#60;/filename=
&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;fil=
ename&#62;fr-FR.com_contenthistory.sys.ini&#60;/filename&#62; <br> &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com=
_cpanel.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#60;filename&#62;fr-FR.com_cpanel.sys.ini&#60;/filename&#=
62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filen=
ame&#62;fr-FR.com_fields.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_fields.sys.in=
i&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#60;filename&#62;fr-FR.com_finder.ini&#60;/filename&#62; <br> &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.=
com_finder.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_installer.ini&#60;/file=
name&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60=
;filename&#62;fr-FR.com_installer.sys.ini&#60;/filename&#62; <br> &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_=
joomlaupdate.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_joomlaupdate.sys.ini&#60;=
/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#60;filename&#62;fr-FR.com_languages.ini&#60;/filename&#62; <br> &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com=
_languages.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_login.ini&#60;/filename=
&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;fil=
ename&#62;fr-FR.com_login.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_mailto.s=
ys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#60;filename&#62;fr-FR.com_media.ini&#60;/filename&#62; <br> &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr=
-FR.com_media.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_menus.ini&#60;/filen=
ame&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;=
filename&#62;fr-FR.com_menus.sys.ini&#60;/filename&#62; <br> &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_messa=
ges.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#60;filename&#62;fr-FR.com_messages.sys.ini&#60;/filename&#62=
; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filenam=
e&#62;fr-FR.com_modules.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_modules.sys.in=
i&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#60;filename&#62;fr-FR.com_newsfeeds.ini&#60;/filename&#62; <br> &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-=
FR.com_newsfeeds.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_plugins.ini&#60;/=
filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#60;filename&#62;fr-FR.com_plugins.sys.ini&#60;/filename&#62; <br> &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.co=
m_postinstall.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_postinstall.sys.ini&#60;=
/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#60;filename&#62;fr-FR.com_redirect.ini&#60;/filename&#62; <br> &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_=
redirect.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_search.ini&#60;/filename&=
#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;file=
name&#62;fr-FR.com_search.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_tags.ini=
&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#60;filename&#62;fr-FR.com_tags.sys.ini&#60;/filename&#62; <br> &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR=
.com_templates.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_templates.sys.ini&#60;/=
filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#60;filename&#62;fr-FR.com_users.ini&#60;/filename&#62; <br> &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_user=
s.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#60;filename&#62;fr-FR.com_weblinks.ini&#60;/filename&#62; =
<br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&=
#62;fr-FR.com_weblinks.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_wrapper.ini=
&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#60;filename&#62;fr-FR.com_wrapper.sys.ini&#60;/filename&#62; <br> &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- this file c=
an be added in the ADMINISTRATOR pack if one wants to change the fonts used=
 to display the back-end interface.--&#62; <br> &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;=
fr-FR.css&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#60;!-- --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#60;filename&#62;fr-FR.ini&#60;/filename&#62; <br> &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.=
lib_joomla.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#60;filename&#62;fr-FR.localise.php&#60;/filename&#62;=
 <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename=
&#62;fr-FR.mod_custom.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_custom.sys.ini&#=
60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#60;filename&#62;fr-FR.mod_feed.ini&#60;/filename&#62; <br> &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_f=
eed.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#60;filename&#62;fr-FR.mod_latest.ini&#60;/filename&#62; =
<br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&=
#62;fr-FR.mod_latest.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_logged.ini&#6=
0;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#60;filename&#62;fr-FR.mod_logged.sys.ini&#60;/filename&#62; <br> &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.=
mod_login.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#60;filename&#62;fr-FR.mod_login.sys.ini&#60;/filename&=
#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;file=
name&#62;fr-FR.mod_menu.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_menu.sys.ini&#=
60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#60;filename&#62;fr-FR.mod_multilangstatus.ini&#60;/filename&#62; <br>=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;=
fr-FR.mod_multilangstatus.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_popular.=
ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#60;filename&#62;fr-FR.mod_popular.sys.ini&#60;/filename&#62; <br=
> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62=
;fr-FR.mod_quickicon.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_quickicon.sys.ini=
&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#60;filename&#62;fr-FR.mod_stats_admin.ini&#60;/filename&#62; <br> &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr=
-FR.mod_stats_admin.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_status.ini&#60=
;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#60;filename&#62;fr-FR.mod_status.sys.ini&#60;/filename&#62; <br> &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.m=
od_submenu.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_submenu.sys.ini&#60;/filena=
me&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;f=
ilename&#62;fr-FR.mod_title.ini&#60;/filename&#62; <br> &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_title.sys.=
ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#60;filename&#62;fr-FR.mod_toolbar.ini&#60;/filename&#62; <br> &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-=
FR.mod_toolbar.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_version.ini&#60;/fi=
lename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
60;filename&#62;fr-FR.mod_version.sys.ini&#60;/filename&#62; <br> &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_=
authentication_cookie.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_authentication_c=
ookie.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#60;filename&#62;fr-FR.plg_authentication_gmail.ini&#60=
;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#60;filename&#62;fr-FR.plg_authentication_gmail.sys.ini&#60;/filename&#6=
2; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filena=
me&#62;fr-FR.plg_authentication_joomla.ini&#60;/filename&#62; <br> &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg=
_authentication_joomla.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_authenticat=
ion_ldap.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#60;filename&#62;fr-FR.plg_authentication_ldap.sys.ini&#=
60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#60;filename&#62;fr-FR.plg_captcha_recaptcha.ini&#60;/filename&#62; <b=
r> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#6=
2;fr-FR.plg_captcha_recaptcha.sys.ini&#60;/filename&#62; <br> &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_cont=
ent_contact.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_content_contact.sys.ini&#6=
0;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#60;filename&#62;fr-FR.plg_content_emailcloak.ini&#60;/filename&#62; <b=
r> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#6=
2;fr-FR.plg_content_emailcloak.sys.ini&#60;/filename&#62; <br> &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_con=
tent_fields.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_content_fields.sys.ini&#60=
;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#60;filename&#62;fr-FR.plg_content_finder.ini&#60;/filename&#62; <br> &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-=
FR.plg_content_finder.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_content_joom=
la.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#60;filename&#62;fr-FR.plg_content_joomla.sys.ini&#60;/filenam=
e&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;fi=
lename&#62;fr-FR.plg_content_loadmodule.ini&#60;/filename&#62; <br> &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.pl=
g_content_loadmodule.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_content_pageb=
reak.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#60;filename&#62;fr-FR.plg_content_pagebreak.sys.ini&#60;/fi=
lename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
60;filename&#62;fr-FR.plg_content_pagenavigation.ini&#60;/filename&#62; <br=
> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62=
;fr-FR.plg_content_pagenavigation.sys.ini&#60;/filename&#62; <br> &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_=
content_vote.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_content_vote.sys.ini&#60;=
/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#60;filename&#62;fr-FR.plg_editors-xtd_article.ini&#60;/filename&#62; <br=
> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62=
;fr-FR.plg_editors-xtd_article.sys.ini&#60;/filename&#62; <br> &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_edi=
tors-xtd_contact.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_editors-xtd_contact.s=
ys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#60;filename&#62;fr-FR.plg_editors-xtd_fields.ini&#60;/filenam=
e&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;fi=
lename&#62;fr-FR.plg_editors-xtd_fields.sys.ini&#60;/filename&#62; <br> &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-F=
R.plg_editors-xtd_image.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_editors-xtd_im=
age.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#60;filename&#62;fr-FR.plg_editors-xtd_menu.ini&#60;/file=
name&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60=
;filename&#62;fr-FR.plg_editors-xtd_menu.sys.ini&#60;/filename&#62; <br> &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-=
FR.plg_editors-xtd_module.ini&#60;/filename&#62; <br> &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_editors-xtd_=
module.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_editors-xtd_pagebreak.ini&#=
60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#60;filename&#62;fr-FR.plg_editors-xtd_pagebreak.sys.ini&#60;/filename=
&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!--=
 Spacer to get past a buggy record count! --&#62; <br> &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_editors-xtd=
_readmore.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#60;filename&#62;fr-FR.plg_editors-xtd_readmore.sys.ini=
&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#60;filename&#62;fr-FR.plg_editors_codemirror.ini&#60;/filename&#62;=
 <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename=
&#62;fr-FR.plg_editors_codemirror.sys.ini&#60;/filename&#62; <br> &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_=
editors_none.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_editors_none.sys.ini&#60;=
/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#60;filename&#62;fr-FR.plg_editors_tinymce.ini&#60;/filename&#62; <br> &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-=
FR.plg_editors_tinymce.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_extension_j=
oomla.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#60;filename&#62;fr-FR.plg_extension_joomla.sys.ini&#60;/fi=
lename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
60;filename&#62;fr-FR.plg_fields_calendar.ini&#60;/filename&#62; <br> &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.=
plg_fields_calendar.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_checkbo=
xes.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#60;filename&#62;fr-FR.plg_fields_checkboxes.sys.ini&#60;/fil=
ename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#6=
0;filename&#62;fr-FR.plg_fields_color.ini&#60;/filename&#62; <br> &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_=
fields_color.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_editor.ini&#60=
;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#60;filename&#62;fr-FR.plg_fields_editor.sys.ini&#60;/filename&#62; <br>=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;=
fr-FR.plg_fields_gallery.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_galler=
y.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_image.ini&#60;/filename&#=
62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filen=
ame&#62;fr-FR.plg_fields_image.sys.ini&#60;/filename&#62; <br> &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fie=
lds_imagelist.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_imagelist.sys.ini=
&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#60;filename&#62;fr-FR.plg_fields_integer.ini&#60;/filename&#62; <br=
> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62=
;fr-FR.plg_fields_integer.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_l=
ist.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#60;filename&#62;fr-FR.plg_fields_list.sys.ini&#60;/filename&=
#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;file=
name&#62;fr-FR.plg_fields_media.ini&#60;/filename&#62; <br> &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields=
_media.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_radio.ini&#60;/filen=
ame&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;=
filename&#62;fr-FR.plg_fields_radio.sys.ini&#60;/filename&#62; <br> &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.pl=
g_fields_sql.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_sql.sys.ini&#60;/f=
ilename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#60;filename&#62;fr-FR.plg_fields_text.ini&#60;/filename&#62; <br> &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg=
_fields_text.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_textarea.ini&#=
60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#60;filename&#62;fr-FR.plg_fields_textarea.sys.ini&#60;/filename&#62; =
<br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&=
#62;fr-FR.plg_fields_url.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_url.sy=
s.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#60;filename&#62;fr-FR.plg_fields_user.ini&#60;/filename&#62; <=
br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#=
62;fr-FR.plg_fields_user.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_us=
ergrouplist.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_usergrouplist.sys.i=
ni&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#60;filename&#62;fr-FR.plg_finder_categories.ini&#60;/filename&#62=
; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filenam=
e&#62;fr-FR.plg_finder_categories.sys.ini&#60;/filename&#62; <br> &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_=
finder_contacts.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_finder_contacts.sys.in=
i&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#60;filename&#62;fr-FR.plg_finder_content.ini&#60;/filename&#62; <b=
r> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#6=
2;fr-FR.plg_finder_content.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_finder_=
newsfeeds.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#60;filename&#62;fr-FR.plg_finder_newsfeeds.sys.ini&#60=
;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#60;filename&#62;fr-FR.plg_finder_tags.ini&#60;/filename&#62; <br> &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.=
plg_finder_tags.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_finder_weblinks.in=
i&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#60;filename&#62;fr-FR.plg_finder_weblinks.sys.ini&#60;/filename&#6=
2; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filena=
me&#62;fr-FR.plg_installer_folderinstaller.ini&#60;/filename&#62; <br> &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR=
.plg_installer_folderinstaller.sys.ini&#60;/filename&#62; <br> &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_ins=
taller_packageinstaller.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_installer_pack=
ageinstaller.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_installer_urlinstalle=
r.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#60;filename&#62;fr-FR.plg_installer_urlinstaller.sys.ini&#60;/=
filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#60;filename&#62;fr-FR.plg_installer_webinstaller.ini&#60;/filename&#62; <=
br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#=
62;fr-FR.plg_installer_webinstaller.sys.ini&#60;/filename&#62; <br> &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.pl=
g_quickicon_extensionupdate.ini&#60;/filename&#62; <br> &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_quickicon_=
extensionupdate.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_quickicon_joomlaup=
date.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#60;filename&#62;fr-FR.plg_quickicon_joomlaupdate.sys.ini&#6=
0;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#60;filename&#62;fr-FR.plg_quickicon_phpversioncheck.ini&#60;/filename&=
#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;file=
name&#62;fr-FR.plg_quickicon_phpversioncheck.sys.ini&#60;/filename&#62; <br=
> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62=
;fr-FR.plg_search_categories.ini&#60;/filename&#62; <br> &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_search_ca=
tegories.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_search_contacts.ini&#60;/=
filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#60;filename&#62;fr-FR.plg_search_contacts.sys.ini&#60;/filename&#62; <br>=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;=
fr-FR.plg_search_content.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_search_conten=
t.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#60;filename&#62;fr-FR.plg_search_newsfeeds.ini&#60;/filena=
me&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;f=
ilename&#62;fr-FR.plg_search_newsfeeds.sys.ini&#60;/filename&#62; <br> &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR=
.plg_search_tags.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_search_tags.sys.ini&#=
60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#60;filename&#62;fr-FR.plg_search_weblinks.ini&#60;/filename&#62; <br>=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;=
fr-FR.plg_search_weblinks.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_c=
ache.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#60;filename&#62;fr-FR.plg_system_cache.sys.ini&#60;/filenam=
e&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;fi=
lename&#62;fr-FR.plg_system_debug.ini&#60;/filename&#62; <br> &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_syst=
em_debug.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_fields.ini&#60;/fi=
lename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
60;filename&#62;fr-FR.plg_system_fields.sys.ini&#60;/filename&#62; <br> &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-F=
R.plg_system_highlight.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_highligh=
t.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#60;filename&#62;fr-FR.plg_system_languagecode.ini&#60;/fil=
ename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#6=
0;filename&#62;fr-FR.plg_system_languagecode.sys.ini&#60;/filename&#62; <br=
> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62=
;fr-FR.plg_system_languagefilter.ini&#60;/filename&#62; <br> &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_syste=
m_languagefilter.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_log.ini&#6=
0;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#60;filename&#62;fr-FR.plg_system_log.sys.ini&#60;/filename&#62; <br> &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr=
-FR.plg_system_logout.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_logout.sy=
s.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#60;filename&#62;fr-FR.plg_system_p3p.ini&#60;/filename&#62; <b=
r> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#6=
2;fr-FR.plg_system_p3p.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_redi=
rect.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#60;filename&#62;fr-FR.plg_system_redirect.sys.ini&#60;/file=
name&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60=
;filename&#62;fr-FR.plg_system_remember.ini&#60;/filename&#62; <br> &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.pl=
g_system_remember.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_sef.ini&#=
60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#60;filename&#62;fr-FR.plg_system_sef.sys.ini&#60;/filename&#62; <br> =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;f=
r-FR.plg_system_stats.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_stats.sys=
.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#60;filename&#62;fr-FR.plg_system_updatenotification.ini&#60;/fi=
lename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
60;filename&#62;fr-FR.plg_system_updatenotification.sys.ini&#60;/filename&#=
62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filen=
ame&#62;fr-FR.plg_twofactorauth_totp.ini&#60;/filename&#62; <br> &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_t=
wofactorauth_totp.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_twofactorauth_yu=
bikey.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#60;filename&#62;fr-FR.plg_twofactorauth_yubikey.sys.ini&#6=
0;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#60;filename&#62;fr-FR.plg_user_contactcreator.ini&#60;/filename&#62; <=
br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#=
62;fr-FR.plg_user_contactcreator.sys.ini&#60;/filename&#62; <br> &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_u=
ser_joomla.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_user_joomla.sys.ini&#60;/fi=
lename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
60;filename&#62;fr-FR.plg_user_profile.ini&#60;/filename&#62; <br> &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg=
_user_profile.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.tpl_hathor.ini&#60;/file=
name&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60=
;filename&#62;fr-FR.tpl_hathor.sys.ini&#60;/filename&#62; <br> &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.tpl_isi=
s.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#60;filename&#62;fr-FR.tpl_isis.sys.ini&#60;/filename&#62; <br>=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- This file=
 is mandatory as otherwise the pack can&#39;t be uninstalled. --&#62; <br> =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename file=
=3D&#34;meta&#34;&#62;install.xml&#60;/filename&#62; <br> &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#60;filename file=3D&#34;meta&#34;&=
#62;fr-FR.xml&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#60;/fil=
es&#62; <br> &#160; &#160; &#160; &#160; &#60;media destination=3D&#34;fr-F=
R&#34;&#62;&#160; &#60;!-- If one needs to add a specific calendar --&#62; =
<br> &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;index.html=
&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#60;fil=
ename&#62;js/index.html&#60;/filename&#62; <br> &#160; &#160; &#160; &#160;=
 &#160; &#160; &#60;filename&#62;js/calendar-setup.js&#60;/filename&#62; <b=
r> &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;js/calendar.=
js&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#60;/media&#62; <br=
> &#160; &#160; &#160; &#160; &#60;params /&#62; <br> &#60;/extension&#62; =
<br> <br> test2.xml <br> <br> &#60;extension version=3D&#34;3.7&#34; client=
=3D&#34;administrator&#34; type=3D&#34;language&#34; method=3D&#34;upgrade&=
#34;&#62; &#60;!-- change to client=3D&#34;site&#34; if site pack --&#62; <=
br> &#160; &#160; &#160; &#160; &#60;name&#62;French (fr-FR)&#60;/name&#62;=
 &#60;!-- New in 3.7.0: Use only latin ascii characters. --&#62; <br> &#160=
; &#160; &#160; &#160; &#60;tag&#62;fr-FR&#60;/tag&#62; <br> &#160; &#160; =
&#160; &#160; &#60;version&#62;3.7.0.1&#60;/version&#62; <br> &#160; &#160;=
 &#160; &#160; &#60;creationDate&#62;15/02/2017&#60;/creationDate&#62; <br>=
 &#160; &#160; &#160; &#160; &#60;author&#62;French translation team : <a h=
ref=3D"http://joomla.fr" target=3D"_blank" rel=3D"noopener">joomla.fr</a>&#=
60;/author&#62; <br> &#160; &#160; &#160; &#160; &#60;authorEmail&#62; <a h=
ref=3D"mailto:[email protected]" target=3D"_blank" rel=3D"noopener">trad=
[email protected]</a>&#60;/authorEmail&#62; <br> &#160; &#160; &#160; &#160;=
 &#60;authorUrl&#62; <a href=3D"http://www.joomla.fr" target=3D"_blank" rel=
=3D"noopener">www.joomla.fr</a>&#60;/authorUrl&#62; <br> &#160; &#160; &#16=
0; &#160; &#60;copyright&#62;Copyright (C) 2005 - 2017 <a href=3D"http://jo=
omla.fr" target=3D"_blank" rel=3D"noopener">joomla.fr</a> et Open Source Ma=
tters. Tous droits r&#233;serv&#233;s&#60;/copyright&#62; <br> &#160; &#160=
; &#160; &#160; &#60;license&#62;GNU General Public License version 2 or la=
ter; see LICENSE.txt&#60;/license&#62; <br> &#160; &#160; &#160; &#160; &#6=
0;description&#62;fr-FR administrator language&#60;/description&#62; <br> &=
#160; &#160; &#160; &#160; &#60;files&#62; <br> &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_captcha_recaptcha.=
sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#60;filename&#62;fr-FR.com_admin.ini&#60;/filename&#62; <br> =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;f=
r-FR.com_admin.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_ajax.ini&#60;/filen=
ame&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;=
filename&#62;fr-FR.com_ajax.sys.ini&#60;/filename&#62; <br> &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_associ=
ations.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#60;filename&#62;fr-FR.com_associations.sys.ini&#60;/filen=
ame&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;=
filename&#62;fr-FR.com_banners.ini&#60;/filename&#62; <br> &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_banners=
.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#60;filename&#62;fr-FR.com_cache.ini&#60;/filename&#62; <br>=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;=
fr-FR.com_cache.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_categories.ini&#60=
;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#60;filename&#62;fr-FR.com_categories.sys.ini&#60;/filename&#62; <br> &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-=
FR.com_checkin.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_checkin.sys.ini&#60;/fi=
lename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
60;filename&#62;fr-FR.com_config.ini&#60;/filename&#62; <br> &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_confi=
g.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#60;filename&#62;fr-FR.com_contact.ini&#60;/filename&#62; <=
br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#=
62;fr-FR.com_contact.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_content.ini&#=
60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#60;filename&#62;fr-FR.com_content.sys.ini&#60;/filename&#62; <br> &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-F=
R.com_contenthistory.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_contenthistory.sy=
s.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#60;filename&#62;fr-FR.com_cpanel.ini&#60;/filename&#62; <br> &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr=
-FR.com_cpanel.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_fields.ini&#60;/fil=
ename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#6=
0;filename&#62;fr-FR.com_fields.sys.ini&#60;/filename&#62; <br> &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- Spacer to get past a =
buggy record count! --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#60;filename&#62;fr-FR.com_finder.ini&#60;/filename&#62; <br=
> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62=
;fr-FR.com_finder.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_installer.ini&#6=
0;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#60;filename&#62;fr-FR.com_installer.sys.ini&#60;/filename&#62; <br> &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-=
FR.com_joomlaupdate.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_joomlaupdate.sys.i=
ni&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#60;filename&#62;fr-FR.com_languages.ini&#60;/filename&#62; <br> &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr=
-FR.com_languages.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_login.ini&#60;/f=
ilename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#60;filename&#62;fr-FR.com_login.sys.ini&#60;/filename&#62; <br> &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_m=
ailto.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#60;filename&#62;fr-FR.com_media.ini&#60;/filename&#62;=
 <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename=
&#62;fr-FR.com_media.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_menus.ini&#60=
;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#60;filename&#62;fr-FR.com_menus.sys.ini&#60;/filename&#62; <br> &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.co=
m_messages.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#60;filename&#62;fr-FR.com_messages.sys.ini&#60;/filen=
ame&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;=
filename&#62;fr-FR.com_modules.ini&#60;/filename&#62; <br> &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_modules=
.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#60;filename&#62;fr-FR.com_newsfeeds.ini&#60;/filename&#62; =
<br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&=
#62;fr-FR.com_newsfeeds.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_plugins.in=
i&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#60;filename&#62;fr-FR.com_plugins.sys.ini&#60;/filename&#62; <br> =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;f=
r-FR.com_postinstall.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_postinstall.sys.i=
ni&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#60;filename&#62;fr-FR.com_redirect.ini&#60;/filename&#62; <br> &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-=
FR.com_redirect.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_search.ini&#60;/fi=
lename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
60;filename&#62;fr-FR.com_search.sys.ini&#60;/filename&#62; <br> &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_t=
ags.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#60;filename&#62;fr-FR.com_tags.sys.ini&#60;/filename&#62; <b=
r> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#6=
2;fr-FR.com_templates.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_templates.sys.in=
i&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#60;filename&#62;fr-FR.com_users.ini&#60;/filename&#62; <br> &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.c=
om_users.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_weblinks.ini&#60;/filenam=
e&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;fi=
lename&#62;fr-FR.com_weblinks.sys.ini&#60;/filename&#62; <br> &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_wrap=
per.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#60;filename&#62;fr-FR.com_wrapper.sys.ini&#60;/filename&#62;=
 <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- this=
 file can be added in the ADMINISTRATOR pack if one wants to change the fon=
ts used to display the back-end interface.--&#62; <br> &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filena=
me&#62;fr-FR.css&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#60;!-- --&#62; <br> &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#60;filename&#62;fr-FR.ini&#60;/filename&#62; <br=
> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62=
;fr-FR.lib_joomla.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.localise.php&#60;/filena=
me&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;f=
ilename&#62;fr-FR.mod_custom.ini&#60;/filename&#62; <br> &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_custom.sy=
s.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#60;filename&#62;fr-FR.mod_feed.ini&#60;/filename&#62; <br> &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-F=
R.mod_feed.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_latest.ini&#60;/filenam=
e&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;fi=
lename&#62;fr-FR.mod_latest.sys.ini&#60;/filename&#62; <br> &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_logged=
.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#60;filename&#62;fr-FR.mod_logged.sys.ini&#60;/filename&#62; <br=
> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62=
;fr-FR.mod_login.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_login.sys.ini&#60;/fi=
lename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
60;filename&#62;fr-FR.mod_menu.ini&#60;/filename&#62; <br> &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_menu.sy=
s.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#60;filename&#62;fr-FR.mod_multilangstatus.ini&#60;/filename&#6=
2; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filena=
me&#62;fr-FR.mod_multilangstatus.sys.ini&#60;/filename&#62; <br> &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_p=
opular.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#60;filename&#62;fr-FR.mod_popular.sys.ini&#60;/filename&#=
62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filen=
ame&#62;fr-FR.mod_quickicon.ini&#60;/filename&#62; <br> &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_quickicon.=
sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#60;filename&#62;fr-FR.mod_stats_admin.ini&#60;/filename&#62;=
 <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename=
&#62;fr-FR.mod_stats_admin.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_status.=
ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#60;filename&#62;fr-FR.mod_status.sys.ini&#60;/filename&#62; <br>=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;=
fr-FR.mod_submenu.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_submenu.sys.ini&#60;=
/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#60;filename&#62;fr-FR.mod_title.ini&#60;/filename&#62; <br> &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_tit=
le.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#60;filename&#62;fr-FR.mod_toolbar.ini&#60;/filename&#62; =
<br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&=
#62;fr-FR.mod_toolbar.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.mod_version.ini&=
#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#60;filename&#62;fr-FR.mod_version.sys.ini&#60;/filename&#62; <br> &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-=
FR.plg_authentication_cookie.ini&#60;/filename&#62; <br> &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_authentic=
ation_cookie.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_authentication_gmail.=
ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#60;filename&#62;fr-FR.plg_authentication_gmail.sys.ini&#60;/file=
name&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60=
;filename&#62;fr-FR.plg_authentication_joomla.ini&#60;/filename&#62; <br> &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr=
-FR.plg_authentication_joomla.sys.ini&#60;/filename&#62; <br> &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_auth=
entication_ldap.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_authentication_ldap.sy=
s.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#60;filename&#62;fr-FR.plg_captcha_recaptcha.ini&#60;/filename&=
#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;file=
name&#62;fr-FR.plg_captcha_recaptcha.sys.ini&#60;/filename&#62; <br> &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.p=
lg_content_contact.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_content_contact.sys=
.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#60;filename&#62;fr-FR.plg_content_emailcloak.ini&#60;/filename&=
#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;file=
name&#62;fr-FR.plg_content_emailcloak.sys.ini&#60;/filename&#62; <br> &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.=
plg_content_fields.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_content_fields.sys.=
ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#60;filename&#62;fr-FR.plg_content_finder.ini&#60;/filename&#62; =
<br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&=
#62;fr-FR.plg_content_finder.sys.ini&#60;/filename&#62; <br> &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_conte=
nt_joomla.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#60;filename&#62;fr-FR.plg_content_joomla.sys.ini&#60;/=
filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#60;filename&#62;fr-FR.plg_content_loadmodule.ini&#60;/filename&#62; <br> =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;f=
r-FR.plg_content_loadmodule.sys.ini&#60;/filename&#62; <br> &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_conten=
t_pagebreak.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_content_pagebreak.sys.ini&=
#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#60;filename&#62;fr-FR.plg_content_pagenavigation.ini&#60;/filename&#=
62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filen=
ame&#62;fr-FR.plg_content_pagenavigation.sys.ini&#60;/filename&#62; <br> &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-=
FR.plg_content_vote.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_content_vote.sys.i=
ni&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#60;filename&#62;fr-FR.plg_editors-xtd_article.ini&#60;/filename&#=
62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filen=
ame&#62;fr-FR.plg_editors-xtd_article.sys.ini&#60;/filename&#62; <br> &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.=
plg_editors-xtd_contact.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_editors-xtd_co=
ntact.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#60;filename&#62;fr-FR.plg_editors-xtd_fields.ini&#60;/=
filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#60;filename&#62;fr-FR.plg_editors-xtd_fields.sys.ini&#60;/filename&#62; <=
br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#=
62;fr-FR.plg_editors-xtd_image.ini&#60;/filename&#62; <br> &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_editors=
-xtd_image.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_editors-xtd_menu.ini&#6=
0;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#60;filename&#62;fr-FR.plg_editors-xtd_menu.sys.ini&#60;/filename&#62; =
<br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&=
#62;fr-FR.plg_editors-xtd_module.ini&#60;/filename&#62; <br> &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_edito=
rs-xtd_module.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_editors-xtd_pagebrea=
k.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#60;filename&#62;fr-FR.plg_editors-xtd_pagebreak.sys.ini&#60;/f=
ilename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#60;!-- Spacer to get past a buggy record count! --&#62; <br> &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_edit=
ors-xtd_readmore.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_editors-xtd_readmore.=
sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#60;filename&#62;fr-FR.plg_editors_codemirror.ini&#60;/filena=
me&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;f=
ilename&#62;fr-FR.plg_editors_codemirror.sys.ini&#60;/filename&#62; <br> &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-=
FR.plg_editors_none.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_editors_none.sys.i=
ni&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#60;filename&#62;fr-FR.plg_editors_tinymce.ini&#60;/filename&#62; =
<br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&=
#62;fr-FR.plg_editors_tinymce.sys.ini&#60;/filename&#62; <br> &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_exte=
nsion_joomla.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_extension_joomla.sys.ini&=
#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#60;filename&#62;fr-FR.plg_fields_calendar.ini&#60;/filename&#62; <br=
> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62=
;fr-FR.plg_fields_calendar.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_=
checkboxes.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_checkboxes.sys.ini&#=
60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#60;filename&#62;fr-FR.plg_fields_color.ini&#60;/filename&#62; <br> &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-=
FR.plg_fields_color.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_editor.=
ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#60;filename&#62;fr-FR.plg_fields_editor.sys.ini&#60;/filename&#6=
2; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filena=
me&#62;fr-FR.plg_fields_gallery.ini&#60;/filename&#62; <br> &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields=
_gallery.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_image.ini&#60;/fil=
ename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#6=
0;filename&#62;fr-FR.plg_fields_image.sys.ini&#60;/filename&#62; <br> &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.=
plg_fields_imagelist.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_imagelist.=
sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#60;filename&#62;fr-FR.plg_fields_integer.ini&#60;/filename&#=
62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filen=
ame&#62;fr-FR.plg_fields_integer.sys.ini&#60;/filename&#62; <br> &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_f=
ields_list.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_list.sys.ini&#60;/fi=
lename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
60;filename&#62;fr-FR.plg_fields_media.ini&#60;/filename&#62; <br> &#160; &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg=
_fields_media.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_radio.ini&#60=
;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#60;filename&#62;fr-FR.plg_fields_radio.sys.ini&#60;/filename&#62; <br> =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;f=
r-FR.plg_fields_sql.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_sql.sys.ini=
&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#60;filename&#62;fr-FR.plg_fields_text.ini&#60;/filename&#62; <br> &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr=
-FR.plg_fields_text.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#60;!-- Spacer to get past a buggy record=
 count! --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#60;filename&#62;fr-FR.plg_fields_textarea.ini&#60;/filename&#62; <br> &=
#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr=
-FR.plg_fields_textarea.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_url=
.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#60;filename&#62;fr-FR.plg_fields_url.sys.ini&#60;/filename&#62;=
 <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename=
&#62;fr-FR.plg_fields_user.ini&#60;/filename&#62; <br> &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_user=
.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#60;filename&#62;fr-FR.plg_fields_usergrouplist.ini&#60;/fil=
ename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#6=
0;filename&#62;fr-FR.plg_fields_usergrouplist.sys.ini&#60;/filename&#62; <b=
r> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#6=
2;fr-FR.plg_finder_categories.ini&#60;/filename&#62; <br> &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_finder_c=
ategories.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_finder_contacts.ini&#60;=
/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#60;filename&#62;fr-FR.plg_finder_contacts.sys.ini&#60;/filename&#62; <br=
> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62=
;fr-FR.plg_finder_content.ini&#60;/filename&#62; <br> &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_finder_conte=
nt.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#60;filename&#62;fr-FR.plg_finder_newsfeeds.ini&#60;/filen=
ame&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;=
filename&#62;fr-FR.plg_finder_newsfeeds.sys.ini&#60;/filename&#62; <br> &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-F=
R.plg_finder_tags.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_finder_tags.sys.ini&=
#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#60;filename&#62;fr-FR.plg_finder_weblinks.ini&#60;/filename&#62; <br=
> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62=
;fr-FR.plg_finder_weblinks.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_install=
er_folderinstaller.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_installer_folderins=
taller.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_installer_packageinstaller.=
ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#60;filename&#62;fr-FR.plg_installer_packageinstaller.sys.ini&#60=
;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#60;filename&#62;fr-FR.plg_installer_urlinstaller.ini&#60;/filename&#62;=
 <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename=
&#62;fr-FR.plg_installer_urlinstaller.sys.ini&#60;/filename&#62; <br> &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.=
plg_installer_webinstaller.ini&#60;/filename&#62; <br> &#160; &#160; &#160;=
 &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_installer_w=
ebinstaller.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_quickicon_extensionupd=
ate.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#60;filename&#62;fr-FR.plg_quickicon_extensionupdate.sys.ini&=
#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
160; &#60;filename&#62;fr-FR.plg_quickicon_joomlaupdate.ini&#60;/filename&#=
62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filen=
ame&#62;fr-FR.plg_quickicon_joomlaupdate.sys.ini&#60;/filename&#62; <br> &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-=
FR.plg_quickicon_phpversioncheck.ini&#60;/filename&#62; <br> &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_quick=
icon_phpversioncheck.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#60;!-- Spacer to get past a buggy recor=
d count! --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#60;filename&#62;fr-FR.plg_search_categories.ini&#60;/filename&#62; <br=
> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62=
;fr-FR.plg_search_categories.sys.ini&#60;/filename&#62; <br> &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_searc=
h_contacts.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_search_contacts.sys.ini&#60=
;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#60;filename&#62;fr-FR.plg_search_content.ini&#60;/filename&#62; <br> &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-=
FR.plg_search_content.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_search_newsf=
eeds.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; =
&#160; &#160; &#60;filename&#62;fr-FR.plg_search_newsfeeds.sys.ini&#60;/fil=
ename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#6=
0;filename&#62;fr-FR.plg_search_tags.ini&#60;/filename&#62; <br> &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_s=
earch_tags.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_search_weblinks.ini&#60=
;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#60;filename&#62;fr-FR.plg_search_weblinks.sys.ini&#60;/filename&#62; <b=
r> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#6=
2;fr-FR.plg_system_cache.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_cache.=
sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#60;filename&#62;fr-FR.plg_system_debug.ini&#60;/filename&#62=
; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filenam=
e&#62;fr-FR.plg_system_debug.sys.ini&#60;/filename&#62; <br> &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_syste=
m_fields.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_fields.sys.ini&#60;/fi=
lename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
60;filename&#62;fr-FR.plg_system_highlight.ini&#60;/filename&#62; <br> &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR=
.plg_system_highlight.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_langu=
agecode.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_languagecode.sys.ini&#6=
0;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#16=
0; &#60;filename&#62;fr-FR.plg_system_languagefilter.ini&#60;/filename&#62;=
 <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename=
&#62;fr-FR.plg_system_languagefilter.sys.ini&#60;/filename&#62; <br> &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.p=
lg_system_log.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_log.sys.ini&#60;/=
filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#60;filename&#62;fr-FR.plg_system_logout.ini&#60;/filename&#62; <br> &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.=
plg_system_logout.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_p3p.ini&#=
60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#60;filename&#62;fr-FR.plg_system_p3p.sys.ini&#60;/filename&#62; <br> =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;f=
r-FR.plg_system_redirect.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_redire=
ct.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_remember.ini&#60;/filena=
me&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;f=
ilename&#62;fr-FR.plg_system_remember.sys.ini&#60;/filename&#62; <br> &#160=
; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.=
plg_system_sef.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_sef.sys.ini&#60;=
/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#60;!-- Spacer to get past a buggy record count! --&#62; <br> &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_sy=
stem_stats.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_stats.sys.ini&#60;/f=
ilename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &=
#60;filename&#62;fr-FR.plg_system_updatenotification.ini&#60;/filename&#62;=
 <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename=
&#62;fr-FR.plg_system_updatenotification.sys.ini&#60;/filename&#62; <br> &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-=
FR.plg_twofactorauth_totp.ini&#60;/filename&#62; <br> &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_twofactoraut=
h_totp.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_twofactorauth_yubikey.ini&#=
60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#1=
60; &#60;filename&#62;fr-FR.plg_twofactorauth_yubikey.sys.ini&#60;/filename=
&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;fil=
ename&#62;fr-FR.plg_user_contactcreator.ini&#60;/filename&#62; <br> &#160; =
&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.pl=
g_user_contactcreator.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; =
&#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_user_joomla.=
ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#60;filename&#62;fr-FR.plg_user_joomla.sys.ini&#60;/filename&#62;=
 <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename=
&#62;fr-FR.plg_user_profile.ini&#60;/filename&#62; <br> &#160; &#160; &#160=
; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_user_profi=
le.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160=
; &#160; &#160; &#60;filename&#62;fr-FR.tpl_hathor.ini&#60;/filename&#62; <=
br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#=
62;fr-FR.tpl_hathor.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.tpl_isis.ini&#60;/=
filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; =
&#60;filename&#62;fr-FR.tpl_isis.sys.ini&#60;/filename&#62; <br> &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- This file is mandato=
ry as otherwise the pack can&#39;t be uninstalled. --&#62; <br> &#160; &#16=
0; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename file=3D&#34;meta=
&#34;&#62;install.xml&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#60;filename file=3D&#34;meta&#34;&#62;fr-FR.xm=
l&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#60;/files&#62; <br>=
 &#160; &#160; &#160; &#160; &#60;media destination=3D&#34;fr-FR&#34;&#62;&=
#160; &#60;!-- If one needs to add a specific calendar --&#62; <br> &#160; =
&#160; &#160; &#160; &#160; &#160; &#60;filename&#62;index.html&#60;/filena=
me&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;js=
/index.html&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#16=
0; &#60;filename&#62;js/calendar-setup.js&#60;/filename&#62; <br> &#160; &#=
160; &#160; &#160; &#160; &#160; &#60;filename&#62;js/calendar.js&#60;/file=
name&#62; <br> &#160; &#160; &#160; &#160; &#60;/media&#62; <br> &#160; &#1=
60; &#160; &#160; &#60;params /&#62; <br> &#60;/extension&#62; <br> <br> ex=
cerpts from test1.out (showing errors reported at lines 40, 158, 195 in tes=
t1.xml): <br> <br> ... <br> &#160; &#160;startElement(name=3D&#34;filename&=
#34;,type=3D&#34;typeLanguageFilesFilename&#34;,attributes=3D{}) <br> &#160=
; &#160;endElement(name=3D&#34;filename&#34;) <br> &#160; &#160;startElemen=
t(name=3D&#34;filename&#34;,type=3D&#34;typeLanguageFilesFilename&#34;,attr=
ibutes=3D{}) <br> [Error] test1.xml:40:44: cvc-assertion: Assertion evaluat=
ion (&#39;./text()[matches(.,&#39;^([a-z]{2}[a-z]?-[A-Z]{2}\.((((com)|(lib)=
|(mod(_[a-z][a-z0-9]+)?)|(plg_[a-z][a-z0-9]+(\-[a-z0-9][a-z0-9]+)*)|(tpl))_=
[a-z][a-z0-9]+(\.sys)?(\.ini))|(ini)|(css)|(localise\.php)))|([a-z]{2}[a-z]=
?-[A-Z]{2}\.xml)|(install\.xml)$&#39;)]&#39;) for element &#39;filename&#39=
; on schema type &#39;typeLanguageFilesFilename&#39; did not succeed. <br> =
[Error] test1.xml:40:44: cvc-assertion: Assertion evaluation (&#39;if (matc=
hes(text(),&#39;^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$&#39;)) then @file else tru=
e()&#39;) for element &#39;filename&#39; on schema type &#39;typeLanguageFi=
lesFilename&#39; did not succeed. XPTY0004 : Value does not match a require=
d type. <br> [Error] test1.xml:40:44: cvc-assertion: Assertion evaluation (=
&#39;if (matches(text(),&#39;^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$&#39;)) then @=
file[.=3D&#39;meta&#39;] else true()&#39;) for element &#39;filename&#39; o=
n schema type &#39;typeLanguageFilesFilename&#39; did not succeed. XPTY0004=
 : Value does not match a required type. <br> &#160; &#160;endElement(name=
=3D&#34;filename&#34;) <br> &#160; &#160;startElement(name=3D&#34;filename&=
#34;,type=3D&#34;typeLanguageFilesFilename&#34;,attributes=3D{}) <br> &#160=
; &#160;endElement(name=3D&#34;filename&#34;) <br> ... <br> &#160; &#160;st=
artElement(name=3D&#34;filename&#34;,type=3D&#34;typeLanguageFilesFilename&=
#34;,attributes=3D{}) <br> &#160; &#160;endElement(name=3D&#34;filename&#34=
;) <br> &#160; &#160;startElement(name=3D&#34;filename&#34;,type=3D&#34;typ=
eLanguageFilesFilename&#34;,attributes=3D{}) <br> [Error] test1.xml:158:58:=
 cvc-assertion: Assertion evaluation (&#39;./text()[matches(.,&#39;^([a-z]{=
2}[a-z]?-[A-Z]{2}\.((((com)|(lib)|(mod(_[a-z][a-z0-9]+)?)|(plg_[a-z][a-z0-9=
]+(\-[a-z0-9][a-z0-9]+)*)|(tpl))_[a-z][a-z0-9]+(\.sys)?(\.ini))|(ini)|(css)=
|(localise\.php)))|([a-z]{2}[a-z]?-[A-Z]{2}\.xml)|(install\.xml)$&#39;)]&#3=
9;) for element &#39;filename&#39; on schema type &#39;typeLanguageFilesFil=
ename&#39; did not succeed. <br> [Error] test1.xml:158:58: cvc-assertion: A=
ssertion evaluation (&#39;if (matches(text(),&#39;^([a-z]{2}[a-z]?-[A-Z]{2}=
\.xml)$&#39;)) then @file else true()&#39;) for element &#39;filename&#39; =
on schema type &#39;typeLanguageFilesFilename&#39; did not succeed. XPTY000=
4 : Value does not match a required type. <br> [Error] test1.xml:158:58: cv=
c-assertion: Assertion evaluation (&#39;if (matches(text(),&#39;^([a-z]{2}[=
a-z]?-[A-Z]{2}\.xml)$&#39;)) then @file[.=3D&#39;meta&#39;] else true()&#39=
;) for element &#39;filename&#39; on schema type &#39;typeLanguageFilesFile=
name&#39; did not succeed. XPTY0004 : Value does not match a required type.=
 <br> &#160; &#160;endElement(name=3D&#34;filename&#34;) <br> &#160; &#160;=
startElement(name=3D&#34;filename&#34;,type=3D&#34;typeLanguageFilesFilenam=
e&#34;,attributes=3D{}) <br> &#160; &#160;endElement(name=3D&#34;filename&#=
34;) <br> ... <br> &#160; &#160;startElement(name=3D&#34;filename&#34;,type=
=3D&#34;typeLanguageFilesFilename&#34;,attributes=3D{}) <br> &#160; &#160;e=
ndElement(name=3D&#34;filename&#34;) <br> &#160; &#160;startElement(name=3D=
&#34;filename&#34;,type=3D&#34;typeLanguageFilesFilename&#34;,attributes=3D=
{}) <br> [Error] test1.xml:195:57: cvc-assertion: Assertion evaluation (&#3=
9;./text()[matches(.,&#39;^([a-z]{2}[a-z]?-[A-Z]{2}\.((((com)|(lib)|(mod(_[=
a-z][a-z0-9]+)?)|(plg_[a-z][a-z0-9]+(\-[a-z0-9][a-z0-9]+)*)|(tpl))_[a-z][a-=
z0-9]+(\.sys)?(\.ini))|(ini)|(css)|(localise\.php)))|([a-z]{2}[a-z]?-[A-Z]{=
2}\.xml)|(install\.xml)$&#39;)]&#39;) for element &#39;filename&#39; on sch=
ema type &#39;typeLanguageFilesFilename&#39; did not succeed. <br> [Error] =
test1.xml:195:57: cvc-assertion: Assertion evaluation (&#39;if (matches(tex=
t(),&#39;^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$&#39;)) then @file else true()&#39=
;) for element &#39;filename&#39; on schema type &#39;typeLanguageFilesFile=
name&#39; did not succeed. XPTY0004 : Value does not match a required type.=
 <br> [Error] test1.xml:195:57: cvc-assertion: Assertion evaluation (&#39;i=
f (matches(text(),&#39;^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$&#39;)) then @file[.=
=3D&#39;meta&#39;] else true()&#39;) for element &#39;filename&#39; on sche=
ma type &#39;typeLanguageFilesFilename&#39; did not succeed. XPTY0004 : Val=
ue does not match a required type. <br> &#160; &#160;endElement(name=3D&#34=
;filename&#34;) <br> &#160; &#160;startElement(name=3D&#34;filename&#34;,ty=
pe=3D&#34;typeLanguageFilesFilename&#34;,attributes=3D{}) <br> &#160; &#160=
;endElement(name=3D&#34;filename&#34;) <br> ... <br> <br> xml_diffs.out <br=
> <br> Comparing files test1.xml and TEST2.XML <br> ***** test1.xml <br> &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-=
FR.com_fields.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_finder.ini&#60;/file=
name&#62; <br> ***** TEST2.XML <br> &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#60;filename&#62;fr-FR.com_fields.sys.ini&#60;/filename&#=
62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- S=
pacer to get past a buggy record count! --&#62; <br> &#160; &#160; &#160; &=
#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.com_finder.ini&#6=
0;/filename&#62; <br> ***** <br> <br> ***** test1.xml <br> &#160; &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_=
text.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_textarea.ini&#60;/file=
name&#62; <br> ***** TEST2.XML <br> &#160; &#160; &#160; &#160; &#160; &#16=
0; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_text.sys.ini&#60;/filen=
ame&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;=
!-- Spacer to get past a buggy record count! --&#62; <br> &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_fields_t=
extarea.ini&#60;/filename&#62; <br> ***** <br> <br> ***** test1.xml <br> &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-=
FR.plg_quickicon_phpversioncheck.sys.ini&#60;/filename&#62; <br> &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_s=
earch_categories.ini&#60;/filename&#62; <br> ***** TEST2.XML <br> &#160; &#=
160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_=
quickicon_phpversioncheck.sys.ini&#60;/filename&#62; <br> &#160; &#160; &#1=
60; &#160; &#160; &#160; &#160; &#160; &#60;!-- Spacer to get past a buggy =
record count! --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160;=
 &#160; &#60;filename&#62;fr-FR.plg_search_categories.ini&#60;/filename&#62=
; <br> ***** <br> <br> ***** test1.xml <br> &#160; &#160; &#160; &#160; &#1=
60; &#160; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_sef.sys.ini&#60=
;/filename&#62; <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160=
; &#60;filename&#62;fr-FR.plg_system_stats.ini&#60;/filename&#62; <br> ****=
* TEST2.XML <br> &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#=
60;filename&#62;fr-FR.plg_system_sef.sys.ini&#60;/filename&#62; <br> &#160;=
 &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#60;!-- Spacer to get pa=
st a buggy record count! --&#62; <br> &#160; &#160; &#160; &#160; &#160; &#=
160; &#160; &#160; &#60;filename&#62;fr-FR.plg_system_stats.ini&#60;/filena=
me&#62; <br> ***** <br> <br> <br> John MORRIS. <br> <br> <br> &#62; -------=
--- Original Message ---------- <br> &#62; From: JOHN Morris &#60; <a href=
=3D"mailto:[email protected]" target=3D"_blank" rel=3D"noopener">j.mo=
[email protected]</a>.INVALID&#62; <br> &#62; To: <a href=3D"mailto:j-use=
[email protected]" target=3D"_blank" rel=3D"noopener">[email protected]=
che.org</a> <br> &#62; Date: 18 August 2020 at 22:04 <br> &#62; Subject: Po=
ssible Bug: Xerces 2.12.1 for XML Validation with XSD 1.1 Schema under Java=
 - Plain Text <br> &#62; <br> &#62; Hi, <br> &#62; <br> &#62; I am a relati=
ve newcomer to Xerces for XML Validation. <br> &#62; <br> &#62; I have been=
 trying to replicate the results of a tutorial that I found on the Internet=
. with particular reference to XSD Schema 1.1 features, Over time, I have t=
ried using Xerces 2.12.1, along with various JDK versions (7, 8, 13). Curre=
ntly, I am using the validation capabilities of the jaxp.TypeInfoWriter pro=
gram. <br> &#62; <br> &#62; Recently, I have begun to look at the XSD 1.1 a=
ssert/assertion features with a longer XML file. <br> &#62; <br> &#62; I ha=
ve used two sample XML files: <br> &#62; <br> &#62; 1) The first has more t=
han 200 elements, one following hard on the previous one. <br> &#62; <br> &=
#62; With this file, I find that there are particular line numbers that giv=
e trouble in the validation process, although the XML content of those line=
s appears to be legal and valid. <br> &#62; <br> &#62; Moving the complete =
XML code from one of the troublesome lines to another position, makes the s=
ame code in its new postion pass the validation but now another new error o=
ccurs with a new XML contruct, which now appears at the troublesome line nu=
mber. <br> &#62; <br> &#62; 2) The same XML file as in (1) but with XML com=
ment lines introduced at each of the troublesome line numbers so that no va=
lidation is now required at those lines. It should be noted, however, that =
the troublesome lines from case (1) still appear, immediately after each of=
 the new comment lines. The validation now passes completely. <br> &#62; <b=
r> &#62; I am currently assuming that this behaviour (i.e. the errors) is u=
nexpected. <br> &#62; <br> &#62; I can provide a ZIP file with these test c=
ases. (I did try to send the e-mail posting this incident to the mailing li=
st, complete with the attachment, but it did not post. Can someone tell me =
whether attachments are supported on this mailing list)? <br> &#62; <br> &#=
62; The a ZIP file comprises a directory, testX, with following contents: <=
br> &#62; <br> &#62; java_xercesX.bat - the batch file to run the test case=
s <br> &#62; <br> &#62; test.xsd - the XSD 1.1 Schema file <br> &#62; <br> =
&#62; test1.xml - the first XML file, without the extra comment lines <br> =
&#62; <br> &#62; test2.xml - the second XML file, with the extra comment li=
nes <br> &#62; <br> &#62; xml_diffs.out - the result of a comparison (with =
the &#34;fc&#34; program) of the content of the two XML files <br> &#62; <b=
r> &#62; In order to be able to run these test cases, you would have to unz=
ip the attached file, go to the testX directory and update the paths in the=
 few few lines of the file&#160;java_xercesX.bat to suit your system. Then,=
 to run one test case, you would use: <br> &#62; <br> &#62; java_xercesX&#1=
60;&#160;jaxp.TypeInfoWriter test.xsd&#160;test1.xml <br> &#62; <br> &#62; =
for example, to validate test1.xml. (This batch file currently uses JDK8). =
<br> &#62; <br> &#62; Results of my validations of the two test files are p=
rovided in test1.out and test2.out, also in the testX directory. <br> &#62;=
 <br> &#62; I look forward to getting some feedback on this possible bug. <=
br> &#62; <br> &#62; Please do not hesitate to ask questions or to point ou=
t anything foolish that I have been doing. <br> &#62; <br> &#62; Regards, <=
br> &#62; <br> &#62; John MORRIS, <br> &#62; Abingdon, UK. <br></blockquote=
><div><br></div><div>&#160;</div></div><br clear=3D"all"><div><br></div>-- =
<br><div dir=3D"ltr" class=3D"ox-bce41a40f5-gmail_signature"><div dir=3D"lt=
r"><div>Regards, <br>Mukul Gandhi <br> <br></div></div></div></div></div></=
blockquote></body></html>
=20
------=_Part_1309290_224465007.1598115453531--