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'm not sure whether you= are claiming that, if you use that, you don'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 'matches' 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 'matches' functions (or in= deed complexity of 'matches' 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 'matches' 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 <[email protected]> <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">     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 'matches' function. I= 9;m using Xerces-J'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's 'matches' function implementation is based= on Java's regex classes, which is not 100% compliant to XPath 2.0 '= ;matches' regex spec (my gut feeling is that, these two regex specs [ja= va & XPath 2.0 'matches'] have about 95% syntax and semantics i= n common).</div><div dir=3D"ltr"><br></div><div dir=3D"ltr">Your XPath 2.0 = 'matches' 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 'matches' within Xerce-J's xs:assert for simple require= ments. If you're looking for XSD (1.1) regex 100% compliance, I'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 <[email protected]= .invalid> 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 "= jdkpath=3Di:\jdk1.8.0_261" <br> set "x2path=3Di:\Xerces-J-bin.2.12.= 1-xml-schema-1.1\xerces-2_12_1-xml-schema-1.1" <br> set "xml_data_p= ath=3DI:\Joomla_MVC_dev\validatexml\admin\testA\" <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> <?xml version=3D"1.0"?> <br> <xs:sc= hema xmlns:xs=3D" <a href=3D"http://www.w3.org/2001/XMLSchema" target= =3D"_blank" rel=3D"noopener">http://www.w3.org/2001/XMLSchema</a>" <br>=            elementFormDefault=3D"qualifi= ed"> <br>         <!-- ********************= ** --> <br>         <!-- * Top-level elements *= --> <br>         <!-- ********************** -= -> <br>         <xs:element name=3D"extensi= on"> <br>                 &= #60;xs:alternative test=3D"@type=3D'language'" type=3D"= extensionTypeLanguage"/> <br>         </xs:= element> <br>         <!-- ********************= ************************************ --> <br>       = 0; <!-- * Structures used from more than one top-level element * -->= ; <br>         <!-- *******************************= ************************* --> <br>         <xs:= group name=3D"metadata"> <br>          = ;       <xs:all> <br>         &#= 160;               <xs:element name= =3D"name" type=3D"xs:string" minOccurs=3D"0" maxOcc= urs=3D"1"/> <br>             = 0;           <xs:element name=3D"creationD= ate" type=3D"xs:string" minOccurs=3D"0" maxOccurs=3D= 4;1"/> <br>                =         <xs:element name=3D"author" type= =3D"xs:string" minOccurs=3D"0" maxOccurs=3D"1"/>= ; <br>                    = ;     <xs:element name=3D"authorEmail" type=3D"xs= :string" minOccurs=3D"0" maxOccurs=3D"1"/> <br> = 60;                     &= #160; <xs:element name=3D"authorUrl" type=3D"xs:anyURI"= minOccurs=3D"0" maxOccurs=3D"1"/> <br>     &= #160;                   <x= s:element name=3D"copyright" type=3D"xs:string" minOccurs= =3D"0" maxOccurs=3D"1"/> <br>       = 0;                 <!-- *******= ********************************************************************** --&#= 62; <br>                   = 60;     <!-- * Disregard the following element, not decoded b= y the installation software * --> <br>         = 0;               <!-- **************= *************************************************************** --> <br= >                     = 60;   <xs:element name=3D"license" type=3D"xs:string&#= 34; minOccurs=3D"0" maxOccurs=3D"1"/> <br>    = ;                     = 0;xs:element name=3D"version" type=3D"extensionVersionType"= minOccurs=3D"0" maxOccurs=3D"1"/> <br>     &= #160;                   <x= s:element name=3D"description" type=3D"xs:string" minOccurs= =3D"0" maxOccurs=3D"1"/> <br>       = 0;         </xs:all> <br>       =   </xs:group> <br>         <xs:simpleT= ype name=3D"methodChoice"> <br>         = 60;       <xs:restriction base=3D"xs:string">= ; <br>                    = ;     <xs:enumeration value=3D"install"/> <br> &#= 160;                     =   <xs:enumeration value=3D"upgrade"/> <br>   = 0;             </xs:restriction> <br>=         </xs:simpleType> <br>     &#= 160;   <xs:simpleType name=3D"joomlaVersionChoice"> <b= r>                 <xs:restrict= ion base=3D"xs:string"> <br>          =               <xs:pattern value=3D&= #34;[23].[0-9]"/> <br>             &#= 160;   </xs:restriction> <br>         <= ;/xs:simpleType> <br>         <xs:simpleType na= me=3D"extensionVersionType"> <br>         &= #160;       <xs:restriction base=3D"xs:string"&#= 62; <br>                   = 60;     <xs:pattern value=3D"[0-9]([0-9])*(.[0-9]([0-9])*= )+"/> <br>                 = </xs:restriction> <br>         </xs:simpleT= ype> <br>         <xs:simpleType name=3D"ta= gChoice"> <br>               = 60; <xs:restriction base=3D"xs:string"> <br>     =                     <= xs:pattern value=3D"[a-z]{2,3}-[A-Z]{2,3}"/> <br>    =             </xs:restriction> <br> &= #160;       </xs:simpleType> <br>     = 0;   <xs:simpleType name=3D"clientChoice"> <br>  =               <xs:restriction base= =3D"xs:string"> <br>             =             <xs:pattern value=3D"admi= nistrator|site"/> <br>             &#= 160;   </xs:restriction> <br>         <= ;/xs:simpleType> <br>         <xs:complexType n= ame=3D"typeUpdateServers"> <br>         = 60;       <xs:complexContent> <br>     = 60;                   <xs:= restriction base=3D"xs:anyType"> <br>       = 0;                     &#= 160;   <xs:all> <br>            =                     = 0;       <xs:element name=3D"server" type=3D"= ;typeServerUpdateServers" minOccurs=3D"0" maxOccurs=3D"unbo= unded"/> <br>               = 0;                 </xs:all>= ; <br>                    = ;     </xs:restriction> <br>         =         </xs:complexContent> <br>    =     </xs:complexType> <br>         &= #60;xs:complexType name=3D"typeMedia"> <br>      = ;           <xs:all> <br>     &#= 160;                   <xs= :element name=3D"filename" type=3D"xs:string" minOccurs=3D&= #34;0" maxOccurs=3D"unbounded"/> <br>       =                   <xs:elem= ent name=3D"folder" type=3D"xs:string" minOccurs=3D"0&#= 34; maxOccurs=3D"unbounded"/> <br>         =         </xs:all> <br>       = 60;         <xs:attribute name=3D"folder" t= ype=3D"xs:string" use=3D"optional"/> <br>    =             <xs:attribute name=3D"de= stination" type=3D"xs:string" use=3D"optional"/> <b= r>         </xs:complexType> <br>    =     <xs:simpleType name=3D"typeParams"> <br> = 60;               <xs:restriction ba= se=3D"xs:string"> <br>            = ;     </xs:restriction> <br>         = </xs:simpleType> <br>         <!-- ********= **************************** --> <br>         <= !-- * attributes optional or required? * --> <br>       =   <!-- ************************************ --> <br>   &#= 160;     <xs:complexType name=3D"typeServerUpdateServers&= #34;> <br>                 <= ;xs:simpleContent> <br>              = ;           <xs:extension base=3D"xs:strin= g"> <br>                 &#= 160;               <xs:attribute nam= e=3D"name" type=3D"xs:string"/> <br>     = 0;                     &#= 160;     <xs:attribute name=3D"type" type=3D"serv= erChoice"/> <br>               &= #160;                 <!-- ****= ************************************************ --> <br>    =                     = 0;       <!-- * Include the "priority" attribute= here to prevent * --> <br>             &= #160;                   <!= -- * errors although I have failed to identify        *= --> <br>                  = ;               <!-- * code in Jooml= a! which processes it.              * --= > <br>                   &= #160;             <!-- ******************= ********************************** --> <br>        =                     = 0;   <xs:attribute name=3D"priority" type=3D"xs:positi= veInteger"/> <br>               =           </xs:extension> <br>   = 0;             </xs:simpleContent> <b= r>         </xs:complexType> <br>    =     <xs:simpleType name=3D"serverChoice"> <br> &= #160;               <xs:restriction = base=3D"xs:string"> <br>           = 60;             <xs:pattern value=3D"= extension|collection"/> <br>           = 60;     </xs:restriction> <br>        = ; </xs:simpleType> <br>         <!-- ******= *************************************** --> <br>       &= #160; <!-- * Material for Language-specific extensions * --> <br> &= #160;       <!-- ***************************************= ****** --> <br>         <xs:complexType name=3D= "extensionTypeLanguage"> <br>          = ;       <xs:all> <br>         &#= 160;               <xs:element name= =3D"tag" type=3D"tagChoice" minOccurs=3D"0" maxOccu= rs=3D"1"/> <br>              = ;           <xs:group ref=3D"metadata"= /> <br>                   =       <xs:element name=3D"files" type=3D"typ= eLanguageFiles" minOccurs=3D"1" maxOccurs=3D"unbounded"= /> <br>                   =       <xs:element name=3D"media" type=3D"typ= eMedia" minOccurs=3D"0" maxOccurs=3D"1"/> <br> = 0;                     &#= 160; <xs:element name=3D"params" type=3D"typeParams" mi= nOccurs=3D"1" maxOccurs=3D"1"/> <br>     = 0;           </xs:all> <br>     =             <xs:attribute name=3D"typ= e" type=3D"xs:string" use=3D"required" fixed=3D"lan= guage"/> <br>               = 0; <xs:attribute name=3D"method" type=3D"methodChoice"/= > <br>                 <xs:= attribute name=3D"version" type=3D"joomlaVersionChoice"/= 2; <br>                 <xs:att= ribute name=3D"client" type=3D"clientChoice"/> <br> = 60;       </xs:complexType> <br>      = ;   <xs:complexType name=3D"typeLanguageFilesFilename">= ; <br>                 <xs:simp= leContent> <br>                =         <xs:extension base=3D"xs:string"&#= 62; <br>                   = 60;             <xs:attribute name=3D"= ;file" type=3D"xs:string" use=3D"optional"/> <br> &= #160;                    =           <!-- ******************************= ***************************************************************************= ***************************************************************************= ***** --> <br>                 =                 <!-- * Assuming= that the current context is "/extension/files/filename"  = 0;                     &#= 160;                     =                      = ;                     = 60;                     &= #160;       * --> <br>          = ;                     = 60; <!-- * check that there are ALL elements in this context whose valu= es DO match one of:                =                      = ;                     = 60;                     &= #160;                    =  * --> <br>               = 0;                 <!-- * = 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)))$ * --> <br>         =                      = ;   <!-- *  2) ^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$    =                      = ;                     = 60;                     &= #160;                    =                     = 0;                     &#= 160;             * --> <br>    =                     = 0;       <!-- *  3) ^(install\.xml)$    &= #160;                    =                     = 0;                     &#= 160;                     =                      = ;                     = 60;                     &= #160;       * --> <br>          = ;                     = 60; <!-- **************************************************************= ***************************************************************************= ************************************************ --> <br>    =                     = 0;       <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))|(in= i)|(css)|(localise\.php)))|([a-z]{2}[a-z]?-[A-Z]{2}\.xml)|(install\.xml)$&#= 39;)]"/> <br>               = 0;                 <!-- *******= ***************************************************************************= ********************************************************* --> <br> = 0;                     &#= 160;         <!-- * Of the elements whose values (.= /text()) match:                = 0;                     &#= 160;                     =                      = ;         * --> <br>         &#= 160;                     =   <!-- *  2) ^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$    &#= 160;                     =                      = ;                     = 60;                     &= #160;         * --> <br>        = ;                     = 60;   <!-- * check that ALL have the "file" attribute.= 0;                     &#= 160;                     =                      = ;                     = 60;        * --> <br>         &= #160;                    =   <!-- **********************************************************= ***************************************************************************= ****** --> <br>                =                 <!-- <xs:a= ssert test=3D"./text()[matches(.,'^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$&= #39;)]/../@file"/> <br>             &= #160;                   <x= s:assert test=3D"if (true()) then true() else false()"/> <br> &= #160;                    =           <xs:assert test=3D"matches(text= (),'^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$')"/> --> <br> = 0;                     &#= 160;         <xs:assert test=3D"if (matches(tex= t(),'^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$')) then @file else true()"= ;/> <br>                  =               <!-- ****************= ***************************************************************************= ************************************************ --> <br>    =                     = 0;       <!-- * Check that the ONE element which matches= :                    = 0;                     &#= 160;                     =                      = ;            * --> <br>     = 60;                     &= #160;     <!-- *  2) ^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$= 60;                     &= #160;                    =                     = 0;                     &#= 160;             * --> <br>    =                     = 0;       <!-- * has an attribute "file" with val= ue "meta".                &= #160;                    =                     = 0;                     &#= 160;             * --> <br>    =                     = 0;       <!-- ******************************************= ***************************************************************************= ********************** --> <br>           = 0;                     &#= 60;!-- <xs:assert test=3D"./text()[matches(.,'^([a-z]{2}[a-z]?-= [A-Z]{2}\.xml)$')]/../@file[.=3D'meta']"/> --> <br>=                     = 0;           <xs:assert test=3D"if (matche= s(text(),'^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$')) then @file[.=3D'm= eta'] else true()"/> <br>           &#= 160;                     = <!-- ******************************************************************= ************************************************************************* -= -> <br>                   =               <!-- * Of the elements= whose values (./text()) match:            &#= 160;                     =                      = ;                     = 60;               * --> <br>   =                      = ;         <!-- *  3) ^(install\.xml)$  &#= 160;                     =                      = ;                     = 60;                     &= #160;                    =       * --> <br>           = 60;                     &= #60;!-- * check that ALL have the "file" attribute.    &#= 160;                     =                      = ;                     = 60;                     &= #160;    * --> <br>            =                     <= ;!-- **********************************************************************= ********************************************************************* --= 2; <br>                   = 0;             <xs:assert test=3D"if = (./text()[matches(.,'^(install\.xml)$')]) then @file else true()= 4;/> <br>                  = ;               <!-- ***************= ***************************************************************************= ************************************************* --> <br>    = ;                     = 60;       <!-- * Check that the ONE element which matche= s:                    = 60;                     &= #160;                    =                     = 0;            * --> <br>     &#= 160;                     =       <!-- *  3) ^(install\.xml)$    = 0;                     &#= 160;                     =                      = ;                     = 60;                     &= #160;   * --> <br>              = ;                   <!-- *= has an attribute "file" with value "meta".    &#= 160;                     =                      = ;                     = 60;                     &= #160;   * --> <br>              = ;                   <!-- *= ***************************************************************************= *************************************************************** --> <br= >                     = 60;           <xs:assert test=3D"if (./tex= t()[matches(.,'^(install\.xml)$')]) then @file[.=3D'meta'] = else true()"/> <br>              = ;           </xs:extension> <br>   &#= 160;             </xs:simpleContent> = <br>         </xs:complexType> <br>   = 0;     <xs:complexType name=3D"typeLanguageFiles">= ; <br>                 <xs:all&= #62; <br>                   &#= 160;     <xs:element name=3D"folder" type=3D"xs:s= tring" minOccurs=3D"0" maxOccurs=3D"unbounded"/> <b= r>                     &#= 160;   <xs:element name=3D"filename" type=3D"typeLangu= ageFilesFilename" minOccurs=3D"1" maxOccurs=3D"unbounded= 4;/> <!-- For the "index.<php|html>" file --> <= br>                 </xs:all= 2; <br>                 <xs:att= ribute name=3D"folder" type=3D"xs:string" use=3D"option= al"/> <br>                 = <!-- ******************************************************************= ***************************************************************************= ******************************************** --> <br>     = 60;           <!-- * Assuming that the current= context is "/extension/files"          &#= 160;                     =                      = ;                     = 60;                     &= #160;                    =          * --> <br>       = 0;         <!-- ***********************************= ***************************************************************************= ***************************************************************************= --> <br>                 <= !-- ***********************************************************************= ***************************************************************************= *************************************** --> <br>       &= #160;         <!-- Of the elements whose values (./= text()) match:                 = ;                     = 60;                     &= #160;                    =                     = 0;                     &#= 160;             * --> <br>    =             <!-- *  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)))$ * --> <br>             &#= 160;   <!-- * check that NONE have the "file" attribute.&#= 160;                     =                      = ;                     = 60;                     &= #160;                    =                     = 0;           * --> <br>       &= #160;         <!-- ********************************= ***************************************************************************= ***************************************************************************= *** --> <br>                 &#= 60;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-z0-9]+(= \-[a-z0-9][a-z0-9]+)*)|(tpl))_[a-z][a-z0-9]+(\.sys)?(\.ini))|(ini)|(css)|(l= ocalise\.php)))$')]/..[@file])=3D0"/> <br>      =           <!-- ******************************= ***************************************************************************= ***************************************************************************= ***** --> <br>                 = <!-- * Check there is ONE and ONLY ONE element whose value (./text()) m= atches:                   = ;                     = 60;                     &= #160;                    =                     = 0;      * --> <br>           &#= 160;     <!-- *  2) ^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$= 0;                     &#= 160;                     =                      = ;                     = 60;                     &= #160;                    =                 * --> <br> = 60;               <!-- *************= ***************************************************************************= ***************************************************************************= ********************** --> <br>           = 0;     <xs:assert test=3D"count(./filename/text()[matches= (.,'^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$')])=3D1"/> <br>  =               <!-- ****************= ***************************************************************************= ***************************************************************************= ******************* --> <br>             =     <!-- * Check there is ONE and ONLY ONE element whose valu= e (./text()) matches:               = ;                     = 60;                     &= #160;                    =                     = 0;          * --> <br>       &#= 160;         <!-- *  3) ^(install\.xml)$ =                     = 0;                     &#= 160;                     =                      = ;                     = 60;                     &= #160;                    =           * --> <br>       = 60;         <!-- **********************************= ***************************************************************************= ***************************************************************************= * --> <br>                 <= ;xs:assert test=3D"count(./filename/text()[matches(.,'^(install\.xm= l)$')])=3D1"/> <br>         </xs:comple= xType> <br> </xs:schema> <br> <br> test1.xml <br> <br> <ext= ension version=3D"3.7" client=3D"administrator" type=3D"= ;language" method=3D"upgrade"> <!-- change to client=3D= "site" if site pack --> <br>         <n= ame>French (fr-FR)</name> <!-- New in 3.7.0: Use only latin= ascii characters. --> <br>         <tag>fr= -FR</tag> <br>         <version>3.7.0.1= </version> <br>         <creationDate>1= 5/02/2017</creationDate> <br>         <auth= or>French translation team : <a href=3D"http://joomla.fr" target=3D"_bl= ank" rel=3D"noopener">joomla.fr</a></author> <br>     = 60;   <authorEmail> <a href=3D"mailto:[email protected]" ta= rget=3D"_blank" rel=3D"noopener">[email protected]</a></authorEmail&= #62; <br>         <authorUrl> <a href=3D"http:/= /www.joomla.fr" target=3D"_blank" rel=3D"noopener">www.joomla.fr</a></a= uthorUrl> <br>         <copyright>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éservés&= #60;/copyright> <br>         <license>GNU G= eneral Public License version 2 or later; see LICENSE.txt</license>= <br>         <description>fr-FR administrator = language</description> <br>         <files&= #62; <br>                 <file= name>fr-FR.plg_captcha_recaptcha.sys.ini</filename> <br>  =               <filename>fr-FR.c= om_admin.ini</filename> <br>           = 60;     <filename>fr-FR.com_admin.sys.ini</filename&#= 62; <br>                 <filen= ame>fr-FR.com_ajax.ini</filename> <br>       = 60;         <filename>fr-FR.com_ajax.sys.ini= 0;/filename> <br>               = 0; <filename>fr-FR.com_associations.ini</filename> <br> = 60;               <filename>fr-F= R.com_associations.sys.ini</filename> <br>       = 60;         <filename>fr-FR.com_banners.ini<= ;/filename> <br>                = ; <filename>fr-FR.com_banners.sys.ini</filename> <br>  = ;               <filename>fr-FR.= com_cache.ini</filename> <br>           &#= 160;     <filename>fr-FR.com_cache.sys.ini</filename&= #62; <br>                 <file= name>fr-FR.com_categories.ini</filename> <br>     = 60;           <filename>fr-FR.com_categori= es.sys.ini</filename> <br>            = ;     <filename>fr-FR.com_checkin.ini</filename> = <br>                 <filename&= #62;fr-FR.com_checkin.sys.ini</filename> <br>       =           <filename>fr-FR.com_config.ini&#= 60;/filename> <br>               = 60; <filename>fr-FR.com_config.sys.ini</filename> <br> = 0;               <filename>fr-FR= .com_contact.ini</filename> <br>          =       <filename>fr-FR.com_contact.sys.ini</file= name> <br>                 <= ;filename>fr-FR.com_content.ini</filename> <br>     &= #160;           <filename>fr-FR.com_conten= t.sys.ini</filename> <br>            =     <filename>fr-FR.com_contenthistory.ini</filename= > <br>                 <fil= ename>fr-FR.com_contenthistory.sys.ini</filename> <br>   &= #160;             <filename>fr-FR.com= _cpanel.ini</filename> <br>           = 0;     <filename>fr-FR.com_cpanel.sys.ini</filename&#= 62; <br>                 <filen= ame>fr-FR.com_fields.ini</filename> <br>       &= #160;         <filename>fr-FR.com_fields.sys.in= i</filename> <br>               =   <filename>fr-FR.com_finder.ini</filename> <br>  = ;               <filename>fr-FR.= com_finder.sys.ini</filename> <br>         = 0;       <filename>fr-FR.com_installer.ini</file= name> <br>                 <= ;filename>fr-FR.com_installer.sys.ini</filename> <br>   &#= 160;             <filename>fr-FR.com_= joomlaupdate.ini</filename> <br>          =       <filename>fr-FR.com_joomlaupdate.sys.ini<= /filename> <br>                = <filename>fr-FR.com_languages.ini</filename> <br>   &= #160;             <filename>fr-FR.com= _languages.sys.ini</filename> <br>         = 0;       <filename>fr-FR.com_login.ini</filename= > <br>                 <fil= ename>fr-FR.com_login.sys.ini</filename> <br>     = 60;           <filename>fr-FR.com_mailto.s= ys.ini</filename> <br>             &#= 160;   <filename>fr-FR.com_media.ini</filename> <br> &= #160;               <filename>fr= -FR.com_media.sys.ini</filename> <br>         &= #160;       <filename>fr-FR.com_menus.ini</filen= ame> <br>                 <= filename>fr-FR.com_menus.sys.ini</filename> <br>     =             <filename>fr-FR.com_messa= ges.ini</filename> <br>             &= #160;   <filename>fr-FR.com_messages.sys.ini</filename>= ; <br>                 <filenam= e>fr-FR.com_modules.ini</filename> <br>       &#= 160;         <filename>fr-FR.com_modules.sys.in= i</filename> <br>               =   <filename>fr-FR.com_newsfeeds.ini</filename> <br> &#= 160;               <filename>fr-= FR.com_newsfeeds.sys.ini</filename> <br>        = ;         <filename>fr-FR.com_plugins.ini</= filename> <br>                 = <filename>fr-FR.com_plugins.sys.ini</filename> <br>   =               <filename>fr-FR.co= m_postinstall.ini</filename> <br>          = ;       <filename>fr-FR.com_postinstall.sys.ini<= /filename> <br>                = <filename>fr-FR.com_redirect.ini</filename> <br>   &#= 160;             <filename>fr-FR.com_= redirect.sys.ini</filename> <br>          =       <filename>fr-FR.com_search.ini</filename&= #62; <br>                 <file= name>fr-FR.com_search.sys.ini</filename> <br>     = 60;           <filename>fr-FR.com_tags.ini= </filename> <br>               &= #160; <filename>fr-FR.com_tags.sys.ini</filename> <br> = 0;               <filename>fr-FR= .com_templates.ini</filename> <br>         = 0;       <filename>fr-FR.com_templates.sys.ini</= filename> <br>                 = <filename>fr-FR.com_users.ini</filename> <br>    =             <filename>fr-FR.com_user= s.sys.ini</filename> <br>            =     <filename>fr-FR.com_weblinks.ini</filename> = <br>                 <filename&= #62;fr-FR.com_weblinks.sys.ini</filename> <br>      =           <filename>fr-FR.com_wrapper.ini= </filename> <br>               &= #160; <filename>fr-FR.com_wrapper.sys.ini</filename> <br> &= #160;               <!-- this file c= an be added in the ADMINISTRATOR pack if one wants to change the fonts used= to display the back-end interface.--> <br>        =                 <filename>= fr-FR.css</filename> <br>            =     <!-- --> <br>           = 60;     <filename>fr-FR.ini</filename> <br>  = ;               <filename>fr-FR.= lib_joomla.ini</filename> <br>           &= #160;     <filename>fr-FR.localise.php</filename>= <br>                 <filename= >fr-FR.mod_custom.ini</filename> <br>       = 0;         <filename>fr-FR.mod_custom.sys.ini&#= 60;/filename> <br>               = 60; <filename>fr-FR.mod_feed.ini</filename> <br>   = 60;             <filename>fr-FR.mod_f= eed.sys.ini</filename> <br>           = 0;     <filename>fr-FR.mod_latest.ini</filename> = <br>                 <filename&= #62;fr-FR.mod_latest.sys.ini</filename> <br>       &= #160;         <filename>fr-FR.mod_logged.ini= 0;/filename> <br>               = 0; <filename>fr-FR.mod_logged.sys.ini</filename> <br>  = ;               <filename>fr-FR.= mod_login.ini</filename> <br>           &#= 160;     <filename>fr-FR.mod_login.sys.ini</filename&= #62; <br>                 <file= name>fr-FR.mod_menu.ini</filename> <br>       &#= 160;         <filename>fr-FR.mod_menu.sys.ini&#= 60;/filename> <br>               = 60; <filename>fr-FR.mod_multilangstatus.ini</filename> <br>=                 <filename>= fr-FR.mod_multilangstatus.sys.ini</filename> <br>     = 60;           <filename>fr-FR.mod_popular.= ini</filename> <br>              = ;   <filename>fr-FR.mod_popular.sys.ini</filename> <br= >                 <filename>= ;fr-FR.mod_quickicon.ini</filename> <br>        = ;         <filename>fr-FR.mod_quickicon.sys.ini= </filename> <br>               &= #160; <filename>fr-FR.mod_stats_admin.ini</filename> <br> &= #160;               <filename>fr= -FR.mod_stats_admin.sys.ini</filename> <br>       &#= 160;         <filename>fr-FR.mod_status.ini<= ;/filename> <br>                = ; <filename>fr-FR.mod_status.sys.ini</filename> <br>  =               <filename>fr-FR.m= od_submenu.ini</filename> <br>           &= #160;     <filename>fr-FR.mod_submenu.sys.ini</filena= me> <br>                 <f= ilename>fr-FR.mod_title.ini</filename> <br>      = ;           <filename>fr-FR.mod_title.sys.= ini</filename> <br>              = ;   <filename>fr-FR.mod_toolbar.ini</filename> <br> &#= 160;               <filename>fr-= FR.mod_toolbar.sys.ini</filename> <br>         =         <filename>fr-FR.mod_version.ini</fi= lename> <br>                 &#= 60;filename>fr-FR.mod_version.sys.ini</filename> <br>   &#= 160;             <filename>fr-FR.plg_= authentication_cookie.ini</filename> <br>       = 0;         <filename>fr-FR.plg_authentication_c= ookie.sys.ini</filename> <br>           &#= 160;     <filename>fr-FR.plg_authentication_gmail.ini<= ;/filename> <br>                = ; <filename>fr-FR.plg_authentication_gmail.sys.ini</filename= 2; <br>                 <filena= me>fr-FR.plg_authentication_joomla.ini</filename> <br>   &= #160;             <filename>fr-FR.plg= _authentication_joomla.sys.ini</filename> <br>      =           <filename>fr-FR.plg_authenticat= ion_ldap.ini</filename> <br>           = 60;     <filename>fr-FR.plg_authentication_ldap.sys.ini&#= 60;/filename> <br>               = 60; <filename>fr-FR.plg_captcha_recaptcha.ini</filename> <b= r>                 <filename= 2;fr-FR.plg_captcha_recaptcha.sys.ini</filename> <br>    =             <filename>fr-FR.plg_cont= ent_contact.ini</filename> <br>           =       <filename>fr-FR.plg_content_contact.sys.ini= 0;/filename> <br>               = 0; <filename>fr-FR.plg_content_emailcloak.ini</filename> <b= r>                 <filename= 2;fr-FR.plg_content_emailcloak.sys.ini</filename> <br>    = ;             <filename>fr-FR.plg_con= tent_fields.ini</filename> <br>           =       <filename>fr-FR.plg_content_fields.sys.ini<= ;/filename> <br>                = ; <filename>fr-FR.plg_content_finder.ini</filename> <br> &#= 160;               <filename>fr-= FR.plg_content_finder.sys.ini</filename> <br>       =           <filename>fr-FR.plg_content_joom= la.ini</filename> <br>             &#= 160;   <filename>fr-FR.plg_content_joomla.sys.ini</filenam= e> <br>                 <fi= lename>fr-FR.plg_content_loadmodule.ini</filename> <br>   =               <filename>fr-FR.pl= g_content_loadmodule.sys.ini</filename> <br>       &= #160;         <filename>fr-FR.plg_content_pageb= reak.ini</filename> <br>             =     <filename>fr-FR.plg_content_pagebreak.sys.ini</fi= lename> <br>                 &#= 60;filename>fr-FR.plg_content_pagenavigation.ini</filename> <br= >                 <filename>= ;fr-FR.plg_content_pagenavigation.sys.ini</filename> <br>   &#= 160;             <filename>fr-FR.plg_= content_vote.ini</filename> <br>          =       <filename>fr-FR.plg_content_vote.sys.ini<= /filename> <br>                = <filename>fr-FR.plg_editors-xtd_article.ini</filename> <br= >                 <filename>= ;fr-FR.plg_editors-xtd_article.sys.ini</filename> <br>    = ;             <filename>fr-FR.plg_edi= tors-xtd_contact.ini</filename> <br>         &#= 160;       <filename>fr-FR.plg_editors-xtd_contact.s= ys.ini</filename> <br>             &#= 160;   <filename>fr-FR.plg_editors-xtd_fields.ini</filenam= e> <br>                 <fi= lename>fr-FR.plg_editors-xtd_fields.sys.ini</filename> <br> = 60;               <filename>fr-F= R.plg_editors-xtd_image.ini</filename> <br>       &#= 160;         <filename>fr-FR.plg_editors-xtd_im= age.sys.ini</filename> <br>           = 0;     <filename>fr-FR.plg_editors-xtd_menu.ini</file= name> <br>                 <= ;filename>fr-FR.plg_editors-xtd_menu.sys.ini</filename> <br> &#= 160;               <filename>fr-= FR.plg_editors-xtd_module.ini</filename> <br>       =           <filename>fr-FR.plg_editors-xtd_= module.sys.ini</filename> <br>           &= #160;     <filename>fr-FR.plg_editors-xtd_pagebreak.ini&#= 60;/filename> <br>               = 60; <filename>fr-FR.plg_editors-xtd_pagebreak.sys.ini</filename= > <br>                 <!--= Spacer to get past a buggy record count! --> <br>      =           <filename>fr-FR.plg_editors-xtd= _readmore.ini</filename> <br>           &#= 160;     <filename>fr-FR.plg_editors-xtd_readmore.sys.ini= </filename> <br>               &= #160; <filename>fr-FR.plg_editors_codemirror.ini</filename>= <br>                 <filename= >fr-FR.plg_editors_codemirror.sys.ini</filename> <br>   &#= 160;             <filename>fr-FR.plg_= editors_none.ini</filename> <br>          =       <filename>fr-FR.plg_editors_none.sys.ini<= /filename> <br>                = <filename>fr-FR.plg_editors_tinymce.ini</filename> <br> &#= 160;               <filename>fr-= FR.plg_editors_tinymce.sys.ini</filename> <br>      =           <filename>fr-FR.plg_extension_j= oomla.ini</filename> <br>            =     <filename>fr-FR.plg_extension_joomla.sys.ini</fi= lename> <br>                 &#= 60;filename>fr-FR.plg_fields_calendar.ini</filename> <br>  = ;               <filename>fr-FR.= plg_fields_calendar.sys.ini</filename> <br>       &#= 160;         <filename>fr-FR.plg_fields_checkbo= xes.ini</filename> <br>             &= #160;   <filename>fr-FR.plg_fields_checkboxes.sys.ini</fil= ename> <br>                 = 0;filename>fr-FR.plg_fields_color.ini</filename> <br>   &#= 160;             <filename>fr-FR.plg_= fields_color.sys.ini</filename> <br>         &#= 160;       <filename>fr-FR.plg_fields_editor.ini<= ;/filename> <br>                = ; <filename>fr-FR.plg_fields_editor.sys.ini</filename> <br>=                 <filename>= fr-FR.plg_fields_gallery.ini</filename> <br>       &= #160;         <filename>fr-FR.plg_fields_galler= y.sys.ini</filename> <br>            =     <filename>fr-FR.plg_fields_image.ini</filename&#= 62; <br>                 <filen= ame>fr-FR.plg_fields_image.sys.ini</filename> <br>    = ;             <filename>fr-FR.plg_fie= lds_imagelist.ini</filename> <br>          = ;       <filename>fr-FR.plg_fields_imagelist.sys.ini= </filename> <br>               &= #160; <filename>fr-FR.plg_fields_integer.ini</filename> <br= >                 <filename>= ;fr-FR.plg_fields_integer.sys.ini</filename> <br>     = 60;           <filename>fr-FR.plg_fields_l= ist.ini</filename> <br>             &= #160;   <filename>fr-FR.plg_fields_list.sys.ini</filename&= #62; <br>                 <file= name>fr-FR.plg_fields_media.ini</filename> <br>     &= #160;           <filename>fr-FR.plg_fields= _media.sys.ini</filename> <br>           &= #160;     <filename>fr-FR.plg_fields_radio.ini</filen= ame> <br>                 <= filename>fr-FR.plg_fields_radio.sys.ini</filename> <br>   =               <filename>fr-FR.pl= g_fields_sql.ini</filename> <br>          =       <filename>fr-FR.plg_fields_sql.sys.ini</f= ilename> <br>                 &= #60;filename>fr-FR.plg_fields_text.ini</filename> <br>   &= #160;             <filename>fr-FR.plg= _fields_text.sys.ini</filename> <br>         &#= 160;       <filename>fr-FR.plg_fields_textarea.ini&#= 60;/filename> <br>               = 60; <filename>fr-FR.plg_fields_textarea.sys.ini</filename> = <br>                 <filename&= #62;fr-FR.plg_fields_url.ini</filename> <br>       &= #160;         <filename>fr-FR.plg_fields_url.sy= s.ini</filename> <br>             = 60;   <filename>fr-FR.plg_fields_user.ini</filename> <= br>                 <filename&#= 62;fr-FR.plg_fields_user.sys.ini</filename> <br>     = 0;           <filename>fr-FR.plg_fields_us= ergrouplist.ini</filename> <br>           =       <filename>fr-FR.plg_fields_usergrouplist.sys.i= ni</filename> <br>              =   <filename>fr-FR.plg_finder_categories.ini</filename>= ; <br>                 <filenam= e>fr-FR.plg_finder_categories.sys.ini</filename> <br>   &#= 160;             <filename>fr-FR.plg_= finder_contacts.ini</filename> <br>         = 60;       <filename>fr-FR.plg_finder_contacts.sys.in= i</filename> <br>               =   <filename>fr-FR.plg_finder_content.ini</filename> <b= r>                 <filename= 2;fr-FR.plg_finder_content.sys.ini</filename> <br>     &#= 160;           <filename>fr-FR.plg_finder_= newsfeeds.ini</filename> <br>           &#= 160;     <filename>fr-FR.plg_finder_newsfeeds.sys.ini<= ;/filename> <br>                = ; <filename>fr-FR.plg_finder_tags.ini</filename> <br>  = ;               <filename>fr-FR.= plg_finder_tags.sys.ini</filename> <br>        =         <filename>fr-FR.plg_finder_weblinks.in= i</filename> <br>               =   <filename>fr-FR.plg_finder_weblinks.sys.ini</filename= 2; <br>                 <filena= me>fr-FR.plg_installer_folderinstaller.ini</filename> <br> = 0;               <filename>fr-FR= .plg_installer_folderinstaller.sys.ini</filename> <br>    = ;             <filename>fr-FR.plg_ins= taller_packageinstaller.ini</filename> <br>       &#= 160;         <filename>fr-FR.plg_installer_pack= ageinstaller.sys.ini</filename> <br>         &#= 160;       <filename>fr-FR.plg_installer_urlinstalle= r.ini</filename> <br>             = 60;   <filename>fr-FR.plg_installer_urlinstaller.sys.ini</= filename> <br>                 = <filename>fr-FR.plg_installer_webinstaller.ini</filename> <= br>                 <filename&#= 62;fr-FR.plg_installer_webinstaller.sys.ini</filename> <br>   =               <filename>fr-FR.pl= g_quickicon_extensionupdate.ini</filename> <br>      = ;           <filename>fr-FR.plg_quickicon_= extensionupdate.sys.ini</filename> <br>        =         <filename>fr-FR.plg_quickicon_joomlaup= date.ini</filename> <br>             =     <filename>fr-FR.plg_quickicon_joomlaupdate.sys.ini= 0;/filename> <br>               = 0; <filename>fr-FR.plg_quickicon_phpversioncheck.ini</filename&= #62; <br>                 <file= name>fr-FR.plg_quickicon_phpversioncheck.sys.ini</filename> <br= >                 <filename>= ;fr-FR.plg_search_categories.ini</filename> <br>     = 0;           <filename>fr-FR.plg_search_ca= tegories.sys.ini</filename> <br>          =       <filename>fr-FR.plg_search_contacts.ini</= filename> <br>                 = <filename>fr-FR.plg_search_contacts.sys.ini</filename> <br>=                 <filename>= fr-FR.plg_search_content.ini</filename> <br>       &= #160;         <filename>fr-FR.plg_search_conten= t.sys.ini</filename> <br>            =     <filename>fr-FR.plg_search_newsfeeds.ini</filena= me> <br>                 <f= ilename>fr-FR.plg_search_newsfeeds.sys.ini</filename> <br> = 0;               <filename>fr-FR= .plg_search_tags.ini</filename> <br>         &#= 160;       <filename>fr-FR.plg_search_tags.sys.ini&#= 60;/filename> <br>               = 60; <filename>fr-FR.plg_search_weblinks.ini</filename> <br>=                 <filename>= fr-FR.plg_search_weblinks.sys.ini</filename> <br>     = 60;           <filename>fr-FR.plg_system_c= ache.ini</filename> <br>             =     <filename>fr-FR.plg_system_cache.sys.ini</filenam= e> <br>                 <fi= lename>fr-FR.plg_system_debug.ini</filename> <br>    =             <filename>fr-FR.plg_syst= em_debug.sys.ini</filename> <br>          =       <filename>fr-FR.plg_system_fields.ini</fi= lename> <br>                 &#= 60;filename>fr-FR.plg_system_fields.sys.ini</filename> <br> = 60;               <filename>fr-F= R.plg_system_highlight.ini</filename> <br>       = 60;         <filename>fr-FR.plg_system_highligh= t.sys.ini</filename> <br>            =     <filename>fr-FR.plg_system_languagecode.ini</fil= ename> <br>                 = 0;filename>fr-FR.plg_system_languagecode.sys.ini</filename> <br= >                 <filename>= ;fr-FR.plg_system_languagefilter.ini</filename> <br>     =             <filename>fr-FR.plg_syste= m_languagefilter.sys.ini</filename> <br>        = ;         <filename>fr-FR.plg_system_log.ini= 0;/filename> <br>               = 0; <filename>fr-FR.plg_system_log.sys.ini</filename> <br> &= #160;               <filename>fr= -FR.plg_system_logout.ini</filename> <br>       = 0;         <filename>fr-FR.plg_system_logout.sy= s.ini</filename> <br>             = 60;   <filename>fr-FR.plg_system_p3p.ini</filename> <b= r>                 <filename= 2;fr-FR.plg_system_p3p.sys.ini</filename> <br>      =           <filename>fr-FR.plg_system_redi= rect.ini</filename> <br>             =     <filename>fr-FR.plg_system_redirect.sys.ini</file= name> <br>                 <= ;filename>fr-FR.plg_system_remember.ini</filename> <br>   =               <filename>fr-FR.pl= g_system_remember.sys.ini</filename> <br>       = 0;         <filename>fr-FR.plg_system_sef.ini&#= 60;/filename> <br>               = 60; <filename>fr-FR.plg_system_sef.sys.ini</filename> <br> =                 <filename>f= r-FR.plg_system_stats.ini</filename> <br>       = 0;         <filename>fr-FR.plg_system_stats.sys= .ini</filename> <br>             = 0;   <filename>fr-FR.plg_system_updatenotification.ini</fi= lename> <br>                 &#= 60;filename>fr-FR.plg_system_updatenotification.sys.ini</filename&#= 62; <br>                 <filen= ame>fr-FR.plg_twofactorauth_totp.ini</filename> <br>   = 60;             <filename>fr-FR.plg_t= wofactorauth_totp.sys.ini</filename> <br>       = 0;         <filename>fr-FR.plg_twofactorauth_yu= bikey.ini</filename> <br>            =     <filename>fr-FR.plg_twofactorauth_yubikey.sys.ini= 0;/filename> <br>               = 0; <filename>fr-FR.plg_user_contactcreator.ini</filename> <= br>                 <filename&#= 62;fr-FR.plg_user_contactcreator.sys.ini</filename> <br>   = 60;             <filename>fr-FR.plg_u= ser_joomla.ini</filename> <br>           &= #160;     <filename>fr-FR.plg_user_joomla.sys.ini</fi= lename> <br>                 &#= 60;filename>fr-FR.plg_user_profile.ini</filename> <br>   &= #160;             <filename>fr-FR.plg= _user_profile.sys.ini</filename> <br>         &= #160;       <filename>fr-FR.tpl_hathor.ini</file= name> <br>                 <= ;filename>fr-FR.tpl_hathor.sys.ini</filename> <br>    = ;             <filename>fr-FR.tpl_isi= s.ini</filename> <br>             = 60;   <filename>fr-FR.tpl_isis.sys.ini</filename> <br>=                 <!-- This file= is mandatory as otherwise the pack can't be uninstalled. --> <br> =                 <filename file= =3D"meta">install.xml</filename> <br>     = 60;           <filename file=3D"meta"&= #62;fr-FR.xml</filename> <br>         </fil= es> <br>         <media destination=3D"fr-F= R">  <!-- If one needs to add a specific calendar --> = <br>             <filename>index.html= </filename> <br>             <fil= ename>js/index.html</filename> <br>        =     <filename>js/calendar-setup.js</filename> <b= r>             <filename>js/calendar.= js</filename> <br>         </media> <br= >         <params /> <br> </extension> = <br> <br> test2.xml <br> <br> <extension version=3D"3.7" client= =3D"administrator" type=3D"language" method=3D"upgrade&= #34;> <!-- change to client=3D"site" if site pack --> <= br>         <name>French (fr-FR)</name>= <!-- New in 3.7.0: Use only latin ascii characters. --> <br>  = ;       <tag>fr-FR</tag> <br>     =     <version>3.7.0.1</version> <br>    =     <creationDate>15/02/2017</creationDate> <br>=         <author>French translation team : <a h= ref=3D"http://joomla.fr" target=3D"_blank" rel=3D"noopener">joomla.fr</a>&#= 60;/author> <br>         <authorEmail> <a h= ref=3D"mailto:[email protected]" target=3D"_blank" rel=3D"noopener">trad= [email protected]</a></authorEmail> <br>        = <authorUrl> <a href=3D"http://www.joomla.fr" target=3D"_blank" rel= =3D"noopener">www.joomla.fr</a></authorUrl> <br>     = 0;   <copyright>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éservés</copyright> <br>    = ;     <license>GNU General Public License version 2 or la= ter; see LICENSE.txt</license> <br>         = 0;description>fr-FR administrator language</description> <br> &= #160;       <files> <br>        =         <filename>fr-FR.plg_captcha_recaptcha.= sys.ini</filename> <br>             &= #160;   <filename>fr-FR.com_admin.ini</filename> <br> =                 <filename>f= r-FR.com_admin.sys.ini</filename> <br>         =         <filename>fr-FR.com_ajax.ini</filen= ame> <br>                 <= filename>fr-FR.com_ajax.sys.ini</filename> <br>     &= #160;           <filename>fr-FR.com_associ= ations.ini</filename> <br>            = ;     <filename>fr-FR.com_associations.sys.ini</filen= ame> <br>                 <= filename>fr-FR.com_banners.ini</filename> <br>     &#= 160;           <filename>fr-FR.com_banners= .sys.ini</filename> <br>             =     <filename>fr-FR.com_cache.ini</filename> <br>=                 <filename>= fr-FR.com_cache.sys.ini</filename> <br>        =         <filename>fr-FR.com_categories.ini<= ;/filename> <br>                = ; <filename>fr-FR.com_categories.sys.ini</filename> <br> &#= 160;               <filename>fr-= FR.com_checkin.ini</filename> <br>         = 0;       <filename>fr-FR.com_checkin.sys.ini</fi= lename> <br>                 &#= 60;filename>fr-FR.com_config.ini</filename> <br>     =             <filename>fr-FR.com_confi= g.sys.ini</filename> <br>            =     <filename>fr-FR.com_contact.ini</filename> <= br>                 <filename&#= 62;fr-FR.com_contact.sys.ini</filename> <br>       &= #160;         <filename>fr-FR.com_content.ini&#= 60;/filename> <br>               = 60; <filename>fr-FR.com_content.sys.ini</filename> <br> = 60;               <filename>fr-F= R.com_contenthistory.ini</filename> <br>        = ;         <filename>fr-FR.com_contenthistory.sy= s.ini</filename> <br>             = 60;   <filename>fr-FR.com_cpanel.ini</filename> <br> &= #160;               <filename>fr= -FR.com_cpanel.sys.ini</filename> <br>         =         <filename>fr-FR.com_fields.ini</fil= ename> <br>                 = 0;filename>fr-FR.com_fields.sys.ini</filename> <br>   = 0;             <!-- Spacer to get past a = buggy record count! --> <br>             =     <filename>fr-FR.com_finder.ini</filename> <br= >                 <filename>= ;fr-FR.com_finder.sys.ini</filename> <br>       = 0;         <filename>fr-FR.com_installer.ini= 0;/filename> <br>               = 0; <filename>fr-FR.com_installer.sys.ini</filename> <br> &#= 160;               <filename>fr-= FR.com_joomlaupdate.ini</filename> <br>        =         <filename>fr-FR.com_joomlaupdate.sys.i= ni</filename> <br>              =   <filename>fr-FR.com_languages.ini</filename> <br> &= #160;               <filename>fr= -FR.com_languages.sys.ini</filename> <br>       = 0;         <filename>fr-FR.com_login.ini</f= ilename> <br>                 &= #60;filename>fr-FR.com_login.sys.ini</filename> <br>   = 60;             <filename>fr-FR.com_m= ailto.sys.ini</filename> <br>           &#= 160;     <filename>fr-FR.com_media.ini</filename>= <br>                 <filename= >fr-FR.com_media.sys.ini</filename> <br>       &= #160;         <filename>fr-FR.com_menus.ini<= ;/filename> <br>                = ; <filename>fr-FR.com_menus.sys.ini</filename> <br>   =               <filename>fr-FR.co= m_messages.ini</filename> <br>           &= #160;     <filename>fr-FR.com_messages.sys.ini</filen= ame> <br>                 <= filename>fr-FR.com_modules.ini</filename> <br>     &#= 160;           <filename>fr-FR.com_modules= .sys.ini</filename> <br>             =     <filename>fr-FR.com_newsfeeds.ini</filename> = <br>                 <filename&= #62;fr-FR.com_newsfeeds.sys.ini</filename> <br>      = ;           <filename>fr-FR.com_plugins.in= i</filename> <br>               =   <filename>fr-FR.com_plugins.sys.ini</filename> <br> =                 <filename>f= r-FR.com_postinstall.ini</filename> <br>        = ;         <filename>fr-FR.com_postinstall.sys.i= ni</filename> <br>              =   <filename>fr-FR.com_redirect.ini</filename> <br> &#= 160;               <filename>fr-= FR.com_redirect.sys.ini</filename> <br>        =         <filename>fr-FR.com_search.ini</fi= lename> <br>                 &#= 60;filename>fr-FR.com_search.sys.ini</filename> <br>   = 60;             <filename>fr-FR.com_t= ags.ini</filename> <br>             &= #160;   <filename>fr-FR.com_tags.sys.ini</filename> <b= r>                 <filename= 2;fr-FR.com_templates.ini</filename> <br>       = 0;         <filename>fr-FR.com_templates.sys.in= i</filename> <br>               =   <filename>fr-FR.com_users.ini</filename> <br>  =               <filename>fr-FR.c= om_users.sys.ini</filename> <br>          =       <filename>fr-FR.com_weblinks.ini</filenam= e> <br>                 <fi= lename>fr-FR.com_weblinks.sys.ini</filename> <br>    =             <filename>fr-FR.com_wrap= per.ini</filename> <br>             &= #160;   <filename>fr-FR.com_wrapper.sys.ini</filename>= <br>                 <!-- this= file can be added in the ADMINISTRATOR pack if one wants to change the fon= ts used to display the back-end interface.--> <br>      =                   <filena= me>fr-FR.css</filename> <br>          =       <!-- --> <br>         = 60;       <filename>fr-FR.ini</filename> <br= >                 <filename>= ;fr-FR.lib_joomla.ini</filename> <br>         &= #160;       <filename>fr-FR.localise.php</filena= me> <br>                 <f= ilename>fr-FR.mod_custom.ini</filename> <br>     = 0;           <filename>fr-FR.mod_custom.sy= s.ini</filename> <br>             = 60;   <filename>fr-FR.mod_feed.ini</filename> <br> = 60;               <filename>fr-F= R.mod_feed.sys.ini</filename> <br>         = 0;       <filename>fr-FR.mod_latest.ini</filenam= e> <br>                 <fi= lename>fr-FR.mod_latest.sys.ini</filename> <br>     &= #160;           <filename>fr-FR.mod_logged= .ini</filename> <br>             = 0;   <filename>fr-FR.mod_logged.sys.ini</filename> <br= >                 <filename>= ;fr-FR.mod_login.ini</filename> <br>         &#= 160;       <filename>fr-FR.mod_login.sys.ini</fi= lename> <br>                 &#= 60;filename>fr-FR.mod_menu.ini</filename> <br>     &#= 160;           <filename>fr-FR.mod_menu.sy= s.ini</filename> <br>             = 60;   <filename>fr-FR.mod_multilangstatus.ini</filename= 2; <br>                 <filena= me>fr-FR.mod_multilangstatus.sys.ini</filename> <br>   = 60;             <filename>fr-FR.mod_p= opular.ini</filename> <br>            = ;     <filename>fr-FR.mod_popular.sys.ini</filename&#= 62; <br>                 <filen= ame>fr-FR.mod_quickicon.ini</filename> <br>      = ;           <filename>fr-FR.mod_quickicon.= sys.ini</filename> <br>             &= #160;   <filename>fr-FR.mod_stats_admin.ini</filename>= <br>                 <filename= >fr-FR.mod_stats_admin.sys.ini</filename> <br>     &#= 160;           <filename>fr-FR.mod_status.= ini</filename> <br>              = ;   <filename>fr-FR.mod_status.sys.ini</filename> <br>=                 <filename>= fr-FR.mod_submenu.ini</filename> <br>         &= #160;       <filename>fr-FR.mod_submenu.sys.ini<= /filename> <br>                = <filename>fr-FR.mod_title.ini</filename> <br>    = ;             <filename>fr-FR.mod_tit= le.sys.ini</filename> <br>            = ;     <filename>fr-FR.mod_toolbar.ini</filename> = <br>                 <filename&= #62;fr-FR.mod_toolbar.sys.ini</filename> <br>       =           <filename>fr-FR.mod_version.ini&= #60;/filename> <br>               &#= 160; <filename>fr-FR.mod_version.sys.ini</filename> <br> &#= 160;               <filename>fr-= FR.plg_authentication_cookie.ini</filename> <br>     = 0;           <filename>fr-FR.plg_authentic= ation_cookie.sys.ini</filename> <br>         &#= 160;       <filename>fr-FR.plg_authentication_gmail.= ini</filename> <br>              = ;   <filename>fr-FR.plg_authentication_gmail.sys.ini</file= name> <br>                 <= ;filename>fr-FR.plg_authentication_joomla.ini</filename> <br> &= #160;               <filename>fr= -FR.plg_authentication_joomla.sys.ini</filename> <br>    =             <filename>fr-FR.plg_auth= entication_ldap.ini</filename> <br>         = 60;       <filename>fr-FR.plg_authentication_ldap.sy= s.ini</filename> <br>             = 60;   <filename>fr-FR.plg_captcha_recaptcha.ini</filename&= #62; <br>                 <file= name>fr-FR.plg_captcha_recaptcha.sys.ini</filename> <br>  =               <filename>fr-FR.p= lg_content_contact.ini</filename> <br>         =         <filename>fr-FR.plg_content_contact.sys= .ini</filename> <br>             = 0;   <filename>fr-FR.plg_content_emailcloak.ini</filename&= #62; <br>                 <file= name>fr-FR.plg_content_emailcloak.sys.ini</filename> <br>  = ;               <filename>fr-FR.= plg_content_fields.ini</filename> <br>         =         <filename>fr-FR.plg_content_fields.sys.= ini</filename> <br>              = ;   <filename>fr-FR.plg_content_finder.ini</filename> = <br>                 <filename&= #62;fr-FR.plg_content_finder.sys.ini</filename> <br>     =             <filename>fr-FR.plg_conte= nt_joomla.ini</filename> <br>           &#= 160;     <filename>fr-FR.plg_content_joomla.sys.ini</= filename> <br>                 = <filename>fr-FR.plg_content_loadmodule.ini</filename> <br> =                 <filename>f= r-FR.plg_content_loadmodule.sys.ini</filename> <br>     &= #160;           <filename>fr-FR.plg_conten= t_pagebreak.ini</filename> <br>           =       <filename>fr-FR.plg_content_pagebreak.sys.ini&= #60;/filename> <br>               &#= 160; <filename>fr-FR.plg_content_pagenavigation.ini</filename&#= 62; <br>                 <filen= ame>fr-FR.plg_content_pagenavigation.sys.ini</filename> <br> &#= 160;               <filename>fr-= FR.plg_content_vote.ini</filename> <br>        =         <filename>fr-FR.plg_content_vote.sys.i= ni</filename> <br>              =   <filename>fr-FR.plg_editors-xtd_article.ini</filename&#= 62; <br>                 <filen= ame>fr-FR.plg_editors-xtd_article.sys.ini</filename> <br>  = ;               <filename>fr-FR.= plg_editors-xtd_contact.ini</filename> <br>       &#= 160;         <filename>fr-FR.plg_editors-xtd_co= ntact.sys.ini</filename> <br>           &#= 160;     <filename>fr-FR.plg_editors-xtd_fields.ini</= filename> <br>                 = <filename>fr-FR.plg_editors-xtd_fields.sys.ini</filename> <= br>                 <filename&#= 62;fr-FR.plg_editors-xtd_image.ini</filename> <br>     &#= 160;           <filename>fr-FR.plg_editors= -xtd_image.sys.ini</filename> <br>         = 0;       <filename>fr-FR.plg_editors-xtd_menu.ini= 0;/filename> <br>               = 0; <filename>fr-FR.plg_editors-xtd_menu.sys.ini</filename> = <br>                 <filename&= #62;fr-FR.plg_editors-xtd_module.ini</filename> <br>     =             <filename>fr-FR.plg_edito= rs-xtd_module.sys.ini</filename> <br>         &= #160;       <filename>fr-FR.plg_editors-xtd_pagebrea= k.ini</filename> <br>             = 60;   <filename>fr-FR.plg_editors-xtd_pagebreak.sys.ini</f= ilename> <br>                 &= #60;!-- Spacer to get past a buggy record count! --> <br>    =             <filename>fr-FR.plg_edit= ors-xtd_readmore.ini</filename> <br>         &#= 160;       <filename>fr-FR.plg_editors-xtd_readmore.= sys.ini</filename> <br>             &= #160;   <filename>fr-FR.plg_editors_codemirror.ini</filena= me> <br>                 <f= ilename>fr-FR.plg_editors_codemirror.sys.ini</filename> <br> &#= 160;               <filename>fr-= FR.plg_editors_none.ini</filename> <br>        =         <filename>fr-FR.plg_editors_none.sys.i= ni</filename> <br>              =   <filename>fr-FR.plg_editors_tinymce.ini</filename> = <br>                 <filename&= #62;fr-FR.plg_editors_tinymce.sys.ini</filename> <br>    =             <filename>fr-FR.plg_exte= nsion_joomla.ini</filename> <br>          =       <filename>fr-FR.plg_extension_joomla.sys.ini&= #60;/filename> <br>               &#= 160; <filename>fr-FR.plg_fields_calendar.ini</filename> <br= >                 <filename>= ;fr-FR.plg_fields_calendar.sys.ini</filename> <br>     &#= 160;           <filename>fr-FR.plg_fields_= checkboxes.ini</filename> <br>           &= #160;     <filename>fr-FR.plg_fields_checkboxes.sys.ini&#= 60;/filename> <br>               = 60; <filename>fr-FR.plg_fields_color.ini</filename> <br> &#= 160;               <filename>fr-= FR.plg_fields_color.sys.ini</filename> <br>       &#= 160;         <filename>fr-FR.plg_fields_editor.= ini</filename> <br>              = ;   <filename>fr-FR.plg_fields_editor.sys.ini</filename= 2; <br>                 <filena= me>fr-FR.plg_fields_gallery.ini</filename> <br>     &= #160;           <filename>fr-FR.plg_fields= _gallery.sys.ini</filename> <br>          =       <filename>fr-FR.plg_fields_image.ini</fil= ename> <br>                 = 0;filename>fr-FR.plg_fields_image.sys.ini</filename> <br>  = ;               <filename>fr-FR.= plg_fields_imagelist.ini</filename> <br>        = ;         <filename>fr-FR.plg_fields_imagelist.= sys.ini</filename> <br>             &= #160;   <filename>fr-FR.plg_fields_integer.ini</filename&#= 62; <br>                 <filen= ame>fr-FR.plg_fields_integer.sys.ini</filename> <br>   = 60;             <filename>fr-FR.plg_f= ields_list.ini</filename> <br>           &= #160;     <filename>fr-FR.plg_fields_list.sys.ini</fi= lename> <br>                 &#= 60;filename>fr-FR.plg_fields_media.ini</filename> <br>   &= #160;             <filename>fr-FR.plg= _fields_media.sys.ini</filename> <br>         &= #160;       <filename>fr-FR.plg_fields_radio.ini<= ;/filename> <br>                = ; <filename>fr-FR.plg_fields_radio.sys.ini</filename> <br> =                 <filename>f= r-FR.plg_fields_sql.ini</filename> <br>        =         <filename>fr-FR.plg_fields_sql.sys.ini= </filename> <br>               &= #160; <filename>fr-FR.plg_fields_text.ini</filename> <br> &= #160;               <filename>fr= -FR.plg_fields_text.sys.ini</filename> <br>       &#= 160;         <!-- Spacer to get past a buggy record= count! --> <br>                = ; <filename>fr-FR.plg_fields_textarea.ini</filename> <br> &= #160;               <filename>fr= -FR.plg_fields_textarea.sys.ini</filename> <br>      = ;           <filename>fr-FR.plg_fields_url= .ini</filename> <br>             = 0;   <filename>fr-FR.plg_fields_url.sys.ini</filename>= <br>                 <filename= >fr-FR.plg_fields_user.ini</filename> <br>      =           <filename>fr-FR.plg_fields_user= .sys.ini</filename> <br>             =     <filename>fr-FR.plg_fields_usergrouplist.ini</fil= ename> <br>                 = 0;filename>fr-FR.plg_fields_usergrouplist.sys.ini</filename> <b= r>                 <filename= 2;fr-FR.plg_finder_categories.ini</filename> <br>     = 60;           <filename>fr-FR.plg_finder_c= ategories.sys.ini</filename> <br>          = ;       <filename>fr-FR.plg_finder_contacts.ini<= /filename> <br>                = <filename>fr-FR.plg_finder_contacts.sys.ini</filename> <br= >                 <filename>= ;fr-FR.plg_finder_content.ini</filename> <br>       =           <filename>fr-FR.plg_finder_conte= nt.sys.ini</filename> <br>            = ;     <filename>fr-FR.plg_finder_newsfeeds.ini</filen= ame> <br>                 <= filename>fr-FR.plg_finder_newsfeeds.sys.ini</filename> <br> = 60;               <filename>fr-F= R.plg_finder_tags.ini</filename> <br>         &= #160;       <filename>fr-FR.plg_finder_tags.sys.ini&= #60;/filename> <br>               &#= 160; <filename>fr-FR.plg_finder_weblinks.ini</filename> <br= >                 <filename>= ;fr-FR.plg_finder_weblinks.sys.ini</filename> <br>     &#= 160;           <filename>fr-FR.plg_install= er_folderinstaller.ini</filename> <br>         =         <filename>fr-FR.plg_installer_folderins= taller.sys.ini</filename> <br>           &= #160;     <filename>fr-FR.plg_installer_packageinstaller.= ini</filename> <br>              = ;   <filename>fr-FR.plg_installer_packageinstaller.sys.ini<= ;/filename> <br>                = ; <filename>fr-FR.plg_installer_urlinstaller.ini</filename>= <br>                 <filename= >fr-FR.plg_installer_urlinstaller.sys.ini</filename> <br>  = ;               <filename>fr-FR.= plg_installer_webinstaller.ini</filename> <br>      =           <filename>fr-FR.plg_installer_w= ebinstaller.sys.ini</filename> <br>         = 60;       <filename>fr-FR.plg_quickicon_extensionupd= ate.ini</filename> <br>             &= #160;   <filename>fr-FR.plg_quickicon_extensionupdate.sys.ini&= #60;/filename> <br>               &#= 160; <filename>fr-FR.plg_quickicon_joomlaupdate.ini</filename&#= 62; <br>                 <filen= ame>fr-FR.plg_quickicon_joomlaupdate.sys.ini</filename> <br> &#= 160;               <filename>fr-= FR.plg_quickicon_phpversioncheck.ini</filename> <br>     =             <filename>fr-FR.plg_quick= icon_phpversioncheck.sys.ini</filename> <br>       &= #160;         <!-- Spacer to get past a buggy recor= d count! --> <br>               = 0; <filename>fr-FR.plg_search_categories.ini</filename> <br= >                 <filename>= ;fr-FR.plg_search_categories.sys.ini</filename> <br>     =             <filename>fr-FR.plg_searc= h_contacts.ini</filename> <br>           &= #160;     <filename>fr-FR.plg_search_contacts.sys.ini<= ;/filename> <br>                = ; <filename>fr-FR.plg_search_content.ini</filename> <br> &#= 160;               <filename>fr-= FR.plg_search_content.sys.ini</filename> <br>       =           <filename>fr-FR.plg_search_newsf= eeds.ini</filename> <br>             =     <filename>fr-FR.plg_search_newsfeeds.sys.ini</fil= ename> <br>                 = 0;filename>fr-FR.plg_search_tags.ini</filename> <br>   = 60;             <filename>fr-FR.plg_s= earch_tags.sys.ini</filename> <br>         = 0;       <filename>fr-FR.plg_search_weblinks.ini<= ;/filename> <br>                = ; <filename>fr-FR.plg_search_weblinks.sys.ini</filename> <b= r>                 <filename= 2;fr-FR.plg_system_cache.ini</filename> <br>       &= #160;         <filename>fr-FR.plg_system_cache.= sys.ini</filename> <br>             &= #160;   <filename>fr-FR.plg_system_debug.ini</filename>= ; <br>                 <filenam= e>fr-FR.plg_system_debug.sys.ini</filename> <br>     =             <filename>fr-FR.plg_syste= m_fields.ini</filename> <br>           = 60;     <filename>fr-FR.plg_system_fields.sys.ini</fi= lename> <br>                 &#= 60;filename>fr-FR.plg_system_highlight.ini</filename> <br> = 0;               <filename>fr-FR= .plg_system_highlight.sys.ini</filename> <br>       =           <filename>fr-FR.plg_system_langu= agecode.ini</filename> <br>           = 0;     <filename>fr-FR.plg_system_languagecode.sys.ini= 0;/filename> <br>               = 0; <filename>fr-FR.plg_system_languagefilter.ini</filename>= <br>                 <filename= >fr-FR.plg_system_languagefilter.sys.ini</filename> <br>  =               <filename>fr-FR.p= lg_system_log.ini</filename> <br>          = ;       <filename>fr-FR.plg_system_log.sys.ini</= filename> <br>                 = <filename>fr-FR.plg_system_logout.ini</filename> <br>  = ;               <filename>fr-FR.= plg_system_logout.sys.ini</filename> <br>       = 0;         <filename>fr-FR.plg_system_p3p.ini&#= 60;/filename> <br>               = 60; <filename>fr-FR.plg_system_p3p.sys.ini</filename> <br> =                 <filename>f= r-FR.plg_system_redirect.ini</filename> <br>       &= #160;         <filename>fr-FR.plg_system_redire= ct.sys.ini</filename> <br>            = ;     <filename>fr-FR.plg_system_remember.ini</filena= me> <br>                 <f= ilename>fr-FR.plg_system_remember.sys.ini</filename> <br>  = ;               <filename>fr-FR.= plg_system_sef.ini</filename> <br>         = 0;       <filename>fr-FR.plg_system_sef.sys.ini<= /filename> <br>                = <!-- Spacer to get past a buggy record count! --> <br>   = 0;             <filename>fr-FR.plg_sy= stem_stats.ini</filename> <br>           &= #160;     <filename>fr-FR.plg_system_stats.sys.ini</f= ilename> <br>                 &= #60;filename>fr-FR.plg_system_updatenotification.ini</filename>= <br>                 <filename= >fr-FR.plg_system_updatenotification.sys.ini</filename> <br> &#= 160;               <filename>fr-= FR.plg_twofactorauth_totp.ini</filename> <br>       =           <filename>fr-FR.plg_twofactoraut= h_totp.sys.ini</filename> <br>           &= #160;     <filename>fr-FR.plg_twofactorauth_yubikey.ini&#= 60;/filename> <br>               = 60; <filename>fr-FR.plg_twofactorauth_yubikey.sys.ini</filename= > <br>                 <fil= ename>fr-FR.plg_user_contactcreator.ini</filename> <br>   =               <filename>fr-FR.pl= g_user_contactcreator.sys.ini</filename> <br>       =           <filename>fr-FR.plg_user_joomla.= ini</filename> <br>              = ;   <filename>fr-FR.plg_user_joomla.sys.ini</filename>= <br>                 <filename= >fr-FR.plg_user_profile.ini</filename> <br>      = ;           <filename>fr-FR.plg_user_profi= le.sys.ini</filename> <br>            = ;     <filename>fr-FR.tpl_hathor.ini</filename> <= br>                 <filename&#= 62;fr-FR.tpl_hathor.sys.ini</filename> <br>       &#= 160;         <filename>fr-FR.tpl_isis.ini</= filename> <br>                 = <filename>fr-FR.tpl_isis.sys.ini</filename> <br>   = 60;             <!-- This file is mandato= ry as otherwise the pack can't be uninstalled. --> <br>   = 0;             <filename file=3D"meta= ">install.xml</filename> <br>         &= #160;       <filename file=3D"meta">fr-FR.xm= l</filename> <br>         </files> <br>=         <media destination=3D"fr-FR">&= #160; <!-- If one needs to add a specific calendar --> <br>   =           <filename>index.html</filena= me> <br>             <filename>js= /index.html</filename> <br>           = 0; <filename>js/calendar-setup.js</filename> <br>   &#= 160;         <filename>js/calendar.js</file= name> <br>         </media> <br>   = 60;     <params /> <br> </extension> <br> <br> ex= cerpts from test1.out (showing errors reported at lines 40, 158, 195 in tes= t1.xml): <br> <br> ... <br>    startElement(name=3D"filename&= #34;,type=3D"typeLanguageFilesFilename",attributes=3D{}) <br>  = ;  endElement(name=3D"filename") <br>    startElemen= t(name=3D"filename",type=3D"typeLanguageFilesFilename",attr= ibutes=3D{}) <br> [Error] test1.xml:40:44: cvc-assertion: Assertion evaluat= ion ('./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)$')]') for element 'filename'= ; on schema type 'typeLanguageFilesFilename' did not succeed. <br> = [Error] test1.xml:40:44: cvc-assertion: Assertion evaluation ('if (matc= hes(text(),'^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$')) then @file else tru= e()') for element 'filename' on schema type 'typeLanguageFi= lesFilename' did not succeed. XPTY0004 : Value does not match a require= d type. <br> [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 true()') for element 'filename' o= n schema type 'typeLanguageFilesFilename' did not succeed. XPTY0004= : Value does not match a required type. <br>    endElement(name= =3D"filename") <br>    startElement(name=3D"filename&= #34;,type=3D"typeLanguageFilesFilename",attributes=3D{}) <br>  = ;  endElement(name=3D"filename") <br> ... <br>    st= artElement(name=3D"filename",type=3D"typeLanguageFilesFilename&= #34;,attributes=3D{}) <br>    endElement(name=3D"filename"= ;) <br>    startElement(name=3D"filename",type=3D"typ= eLanguageFilesFilename",attributes=3D{}) <br> [Error] test1.xml:158:58:= cvc-assertion: Assertion evaluation ('./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)$')]= 9;) for element 'filename' on schema type 'typeLanguageFilesFil= ename' did not succeed. <br> [Error] test1.xml:158:58: cvc-assertion: A= ssertion evaluation ('if (matches(text(),'^([a-z]{2}[a-z]?-[A-Z]{2}= \.xml)$')) then @file else true()') for element 'filename' = on schema type 'typeLanguageFilesFilename' did not succeed. XPTY000= 4 : Value does not match a required type. <br> [Error] test1.xml:158:58: cv= c-assertion: Assertion evaluation ('if (matches(text(),'^([a-z]{2}[= a-z]?-[A-Z]{2}\.xml)$')) then @file[.=3D'meta'] else true()'= ;) for element 'filename' on schema type 'typeLanguageFilesFile= name' did not succeed. XPTY0004 : Value does not match a required type.= <br>    endElement(name=3D"filename") <br>    = startElement(name=3D"filename",type=3D"typeLanguageFilesFilenam= e",attributes=3D{}) <br>    endElement(name=3D"filename&#= 34;) <br> ... <br>    startElement(name=3D"filename",type= =3D"typeLanguageFilesFilename",attributes=3D{}) <br>    e= ndElement(name=3D"filename") <br>    startElement(name=3D= "filename",type=3D"typeLanguageFilesFilename",attributes=3D= {}) <br> [Error] test1.xml:195:57: cvc-assertion: Assertion evaluation (= 9;./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)$')]') for element 'filename' on sch= ema type 'typeLanguageFilesFilename' did not succeed. <br> [Error] = test1.xml:195:57: cvc-assertion: Assertion evaluation ('if (matches(tex= t(),'^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$')) then @file else true()'= ;) for element 'filename' on schema type 'typeLanguageFilesFile= name' did not succeed. XPTY0004 : Value does not match a required type.= <br> [Error] test1.xml:195:57: cvc-assertion: Assertion evaluation ('i= f (matches(text(),'^([a-z]{2}[a-z]?-[A-Z]{2}\.xml)$')) then @file[.= =3D'meta'] else true()') for element 'filename' on sche= ma type 'typeLanguageFilesFilename' did not succeed. XPTY0004 : Val= ue does not match a required type. <br>    endElement(name=3D"= ;filename") <br>    startElement(name=3D"filename",ty= pe=3D"typeLanguageFilesFilename",attributes=3D{}) <br>    = ;endElement(name=3D"filename") <br> ... <br> <br> xml_diffs.out <br= > <br> Comparing files test1.xml and TEST2.XML <br> ***** test1.xml <br> &#= 160;               <filename>fr-= FR.com_fields.sys.ini</filename> <br>         &= #160;       <filename>fr-FR.com_finder.ini</file= name> <br> ***** TEST2.XML <br>           = 0;     <filename>fr-FR.com_fields.sys.ini</filename&#= 62; <br>                 <!-- S= pacer to get past a buggy record count! --> <br>       &= #160;         <filename>fr-FR.com_finder.ini= 0;/filename> <br> ***** <br> <br> ***** test1.xml <br>     &#= 160;           <filename>fr-FR.plg_fields_= text.sys.ini</filename> <br>           = 60;     <filename>fr-FR.plg_fields_textarea.ini</file= name> <br> ***** TEST2.XML <br>           = 0;     <filename>fr-FR.plg_fields_text.sys.ini</filen= ame> <br>                 <= !-- Spacer to get past a buggy record count! --> <br>     = 60;           <filename>fr-FR.plg_fields_t= extarea.ini</filename> <br> ***** <br> <br> ***** test1.xml <br> &#= 160;               <filename>fr-= FR.plg_quickicon_phpversioncheck.sys.ini</filename> <br>   = 60;             <filename>fr-FR.plg_s= earch_categories.ini</filename> <br> ***** TEST2.XML <br>   &#= 160;             <filename>fr-FR.plg_= quickicon_phpversioncheck.sys.ini</filename> <br>     = 60;           <!-- Spacer to get past a buggy = record count! --> <br>              =   <filename>fr-FR.plg_search_categories.ini</filename>= ; <br> ***** <br> <br> ***** test1.xml <br>         = 60;       <filename>fr-FR.plg_system_sef.sys.ini<= ;/filename> <br>                = ; <filename>fr-FR.plg_system_stats.ini</filename> <br> ****= * TEST2.XML <br>                 &#= 60;filename>fr-FR.plg_system_sef.sys.ini</filename> <br>  =               <!-- Spacer to get pa= st a buggy record count! --> <br>           &#= 160;     <filename>fr-FR.plg_system_stats.ini</filena= me> <br> ***** <br> <br> <br> John MORRIS. <br> <br> <br> > -------= --- Original Message ---------- <br> > From: JOHN Morris < <a href= =3D"mailto:[email protected]" target=3D"_blank" rel=3D"noopener">j.mo= [email protected]</a>.INVALID> <br> > To: <a href=3D"mailto:j-use= [email protected]" target=3D"_blank" rel=3D"noopener">[email protected]= che.org</a> <br> > Date: 18 August 2020 at 22:04 <br> > Subject: Po= ssible Bug: Xerces 2.12.1 for XML Validation with XSD 1.1 Schema under Java= - Plain Text <br> > <br> > Hi, <br> > <br> > I am a relati= ve newcomer to Xerces for XML Validation. <br> > <br> > 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> > <br> > Recently, I have begun to look at the XSD 1.1 a= ssert/assertion features with a longer XML file. <br> > <br> > I ha= ve used two sample XML files: <br> > <br> > 1) The first has more t= han 200 elements, one following hard on the previous one. <br> > <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> > <br> > 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> > <br> > 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> > <b= r> > I am currently assuming that this behaviour (i.e. the errors) is u= nexpected. <br> > <br> > 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> > <br> &#= 62; The a ZIP file comprises a directory, testX, with following contents: <= br> > <br> > java_xercesX.bat - the batch file to run the test case= s <br> > <br> > test.xsd - the XSD 1.1 Schema file <br> > <br> = > test1.xml - the first XML file, without the extra comment lines <br> = > <br> > test2.xml - the second XML file, with the extra comment li= nes <br> > <br> > xml_diffs.out - the result of a comparison (with = the "fc" program) of the content of the two XML files <br> > <b= r> > 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 java_xercesX.bat to suit your system. Then,= to run one test case, you would use: <br> > <br> > java_xercesX= 60; jaxp.TypeInfoWriter test.xsd test1.xml <br> > <br> > = for example, to validate test1.xml. (This batch file currently uses JDK8). = <br> > <br> > Results of my validations of the two test files are p= rovided in test1.out and test2.out, also in the testX directory. <br> >= <br> > I look forward to getting some feedback on this possible bug. <= br> > <br> > Please do not hesitate to ask questions or to point ou= t anything foolish that I have been doing. <br> > <br> > Regards, <= br> > <br> > John MORRIS, <br> > Abingdon, UK. <br></blockquote= ><div><br></div><div> </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--