[mapguide-users] Modify mapdefinition in a layout

euskalmap ziburudebian at free.fr
Thu Mar 19 12:02:55 EDT 2009


Hi,
It seems that MapguideServer do not acceded at directory C:/Program
Files/MapGuideOpenSource2.0/Server/Schema/; so, it do not find the file
WebLayouy-1.0.0.xsd schema?

What you think about it?


euskalmap wrote:
> 
> ERROR:
> The instruction
>     String xmlString = doc.DocumentElement.OuterXml;
> DO NOT remove the preamble. But i thought that OuterXml remove the first
> tag.
> Sorry for my error
> 
> 
> euskalmap wrote:
>> 
>> When i load the xml with this instruction : 
>>     XmlDocument doc = new XmlDocument();
>>    String xmlLayoutDef = byteReader.ToString();
>> there is the preamble <?xml version="1.0" encoding="utf-8"?>
>> Later, the instruction
>>     String xmlString = doc.DocumentElement.OuterXml;
>> remove the preamble.
>> Other information : if i load the file 
>> http://patxi.mayol.free.fr/Untitled1.xml
>> http://patxi.mayol.free.fr/Untitled1.xml  in an editor XML like altova,
>> for example, i have this message when i want to save it : This file is
>> not valid: Unable to load schema with target namespace " from
>> 'WebLayout-1.0.0.xsd''.
>> So, is this instruction String xmlString = doc.DocumentElement.OuterXml;
>> bad ? I have find in sample on the forum?
>> 
>> What you think about it?.
>> Thanks
>> 
>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>> 
>>> Ok, that file does not have the preamble (the "<?xml version=\"1.0\" 
>>> encoding=\"utf-8\"?>" string).
>>> Not sure if it fixes your problem if you add it, but its worth a try.
>>> 
>>> The line mentioned seems to only check that the first element 
>>> (WebLayout) matches the xsd file (WebLayout).
>>> 
>>> I wrote about the doublequote, because there was a line with:
>>> char doublequote = (char)34;
>>> which works, but is not very intuitive and suggests that someone did not 
>>> know how to escape doublequotes.
>>> 
>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>> 
>>> 
>>> 
>>> euskalmap skrev:
>>>> I have do 
>>>>   using(System.IO.FileStream fs = System.IO.File.Create("test.xml"))
>>>>   fs.Write(encodedDefinition, 0, encodedDefinition.Length);
>>>>
>>>> The result is here :  http://patxi.mayol.free.fr/test.xml
>>>> http://patxi.mayol.free.fr/test.xml 
>>>>
>>>> How know that my document have the utf-8 xml preamble ?
>>>>
>>>> About the string "xmlns=\"namespace\"", i have not this in my xml file.
>>>> Thanks
>>>>
>>>>
>>>>
>>>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>>>   
>>>>> I'm am a bit puzzled by this:
>>>>>
>>>>> String xmlString = doc.DocumentElement.OuterXml; 
>>>>> ...
>>>>> "After modif = \ n "+"<? xml version ='1 .0 'encoding =' UTF-8'?>"+
>>>>> xmlString
>>>>>
>>>>> It seems that the xmlString is missing the xml preamble?
>>>>> Just to clarify: the document MUST have the utf-8 xml preamble, and
>>>>> MUST 
>>>>> NOT have the utf-8 BOM.
>>>>>
>>>>> The file you sent does not appear to be made from the encoded data.
>>>>> You must do something like:
>>>>> using(System.IO.FileStream fs = System.IO.File.Create("test.xml"))
>>>>>   fs.Write(encodedDefinition, 0, encodedDefinition.Length);
>>>>>
>>>>> Otherwise there are too many places that can introduce small
>>>>> differences.
>>>>>
>>>>> btw, in C#, you can make a string with quotes like this:
>>>>> "xmlns=\"namespace\""
>>>>> or
>>>>> @"xmlns=""namespace""" //VB style
>>>>>
>>>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>>>
>>>>>
>>>>>
>>>>> euskalmap skrev:
>>>>>     
>>>>>> The file is generate in my code after the instruction
>>>>>> 'resourceSrvc.SetResource(webLayoutId, contentByteSource.GetReader(),
>>>>>> null);' So, i do not understand why the file is fine and my
>>>>>> mapdefinition
>>>>>> in
>>>>>> my layout generate the error An exception occurred in the XML parser.
>>>>>>
>>>>>> If you have few minutes you can see the trace of my function
>>>>>> ag_SetLayoutMap
>>>>>> here :  http://patxi.mayol.free.fr/Trace.htm
>>>>>> http://patxi.mayol.free.fr/Trace.htm 
>>>>>> and a sample of my C# code here : 
>>>>>> http://patxi.mayol.free.fr/sample.asp
>>>>>> http://patxi.mayol.free.fr/sample.asp , who is describe the
>>>>>> ag_SetLayoutMap
>>>>>> function.
>>>>>> thanks
>>>>>> regards, Francis
>>>>>>
>>>>>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>>>>>   
>>>>>>       
>>>>>>> Is this a question?
>>>>>>>
>>>>>>> The un-edited file loads fine for me.
>>>>>>>
>>>>>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> euskalmap skrev:
>>>>>>>     
>>>>>>>         
>>>>>>>> Hi,
>>>>>>>> I have not send the good link of my file; in the previous version ,
>>>>>>>> i
>>>>>>>> have
>>>>>>>> trying to delete in the xml the string
>>>>>>>> "xsi:noNamespaceSchemaLocation="WebLayout-1.0.0.xsd".
>>>>>>>> So, my file is :  http://patxi.mayol.free.fr/Untitled1.xml
>>>>>>>> http://patxi.mayol.free.fr/Untitled1.xml 
>>>>>>>>
>>>>>>>> So i test GetResourceContent rather than SetResource : 
>>>>>>>> If i try  http://localhost/mapguide/mapagent/index.html
>>>>>>>> http://localhost/mapguide/mapagent/index.html  with
>>>>>>>> GetResourceContent
>>>>>>>> on
>>>>>>>> "Library://Ag Base/Mpg Urbanisme.WebLayout" and submit, i have this
>>>>>>>> result : 
>>>>>>>>
>>>>>>>> http://n2.nabble.com/file/n2490672/test.jpg 
>>>>>>>>
>>>>>>>> The message in header, in french, is in english : This file XML
>>>>>>>> does
>>>>>>>> not
>>>>>>>> seem to have of information of style associated with him. The tree
>>>>>>>> of
>>>>>>>> the
>>>>>>>> document is shown below.
>>>>>>>>
>>>>>>>> SO
>>>>>>>>
>>>>>>>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>>>>>>>   
>>>>>>>>       
>>>>>>>>           
>>>>>>>>> A bit tricky, something to do with how .Net handles Xml I think.
>>>>>>>>>
>>>>>>>>> The document is missing the attribute:
>>>>>>>>> xsi:noNamespaceSchemaLocation="WebLayout-1.0.0.xsd"
>>>>>>>>>
>>>>>>>>> Which is required, because it is used for versioning and
>>>>>>>>> validation.
>>>>>>>>> If you take your document and open this page:
>>>>>>>>> http://localhost/mapguide/mapagent/index.html
>>>>>>>>>
>>>>>>>>> Then click "Resource" -> "SetResource", point out the file,
>>>>>>>>> and in the "ResourceID" field type: "Library://mytest.WebLayout".
>>>>>>>>>
>>>>>>>>> Then set the "Content" field to point to the file and click
>>>>>>>>> submit.
>>>>>>>>> You will see the error you mention.
>>>>>>>>>
>>>>>>>>> Now add the above attribute, so the second line in the document
>>>>>>>>> becomes:
>>>>>>>>> <WebLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
>>>>>>>>> xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
>>>>>>>>> xsi:noNamespaceSchemaLocation="WebLayout-1.0.0.xsd">
>>>>>>>>>
>>>>>>>>> Save the document, click back in the browser, and then "Submit"
>>>>>>>>> once
>>>>>>>>> more.
>>>>>>>>> This time it works. (Remember to check that the ResourceID and
>>>>>>>>> Content 
>>>>>>>>> field has not been reset).
>>>>>>>>>
>>>>>>>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> euskalmap skrev:
>>>>>>>>>     
>>>>>>>>>         
>>>>>>>>>             
>>>>>>>>>> Hi,
>>>>>>>>>> Yes, i have see the log file, but there is no more information
>>>>>>>>>> that
>>>>>>>>>> 'XML
>>>>>>>>>> Parser error'.
>>>>>>>>>> The logfile is :
>>>>>>>>>> http://n2.nabble.com/file/n2474100/logfile.jpg 
>>>>>>>>>>
>>>>>>>>>> About the XML file, after modification i have this file : 
>>>>>>>>>> http://patxi.mayol.free.fr/mytest.xml
>>>>>>>>>> http://patxi.mayol.free.fr/mytest.xml 
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Thanks
>>>>>>>>>> regards
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>>>>>>>>>   
>>>>>>>>>>       
>>>>>>>>>>           
>>>>>>>>>>               
>>>>>>>>>>> Did you look in the error.log file?
>>>>>>>>>>> Could you try to save the xml document after modification, and
>>>>>>>>>>> send
>>>>>>>>>>> a 
>>>>>>>>>>> link to it?
>>>>>>>>>>>
>>>>>>>>>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> euskalmap skrev:
>>>>>>>>>>>     
>>>>>>>>>>>         
>>>>>>>>>>>             
>>>>>>>>>>>                 
>>>>>>>>>>>> Hi,
>>>>>>>>>>>> In fact, before modification, i have 
>>>>>>>>>>>> MgResourceIdentifier webLayoutId = new
>>>>>>>>>>>> MgResourceIdentifier(pst_weblayout) 
>>>>>>>>>>>> with pst_weblayout = "Library://Ag Base/MyLayout.WebLayout" 
>>>>>>>>>>>> I search the xml node for modify Mapdefinition resource and 
>>>>>>>>>>>> after modification i have in instruction 
>>>>>>>>>>>> webLayoutId = new MgResourceIdentifier(str_NewMapDefinition) 
>>>>>>>>>>>> with
>>>>>>>>>>>> str_NewMapDefinition=Session:xxxxxxxxx//MyMap.MapDefinition
>>>>>>>>>>>> So, i set the resource and i have the message 'An exception
>>>>>>>>>>>> occurred
>>>>>>>>>>>> in
>>>>>>>>>>>> the
>>>>>>>>>>>> XML parser.'
>>>>>>>>>>>> I say it is simply to migrate vb to c#, but before i want to
>>>>>>>>>>>> understand.
>>>>>>>>>>>> I have use same sample who use this method on the forum; but i
>>>>>>>>>>>> do
>>>>>>>>>>>> not
>>>>>>>>>>>> explain where is my bug?
>>>>>>>>>>>> thanks a lot for your help
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>>>>>>>>>>>   
>>>>>>>>>>>>       
>>>>>>>>>>>>           
>>>>>>>>>>>>               
>>>>>>>>>>>>                   
>>>>>>>>>>>>> It is very trivial to convert the sample to C#... in fact I
>>>>>>>>>>>>> just
>>>>>>>>>>>>> did:
>>>>>>>>>>>>> http://trac.osgeo.org/mapguide/wiki/maestro/MaestroAPI/samples/CustomizedZoomWithWebLayout
>>>>>>>>>>>>>
>>>>>>>>>>>>> If you just want to understand what happens, there should be a
>>>>>>>>>>>>> more 
>>>>>>>>>>>>> verbose message in the error.log:
>>>>>>>>>>>>> C:\Program Files\MapGuideOpenSource2.0\Server\logs\error.log
>>>>>>>>>>>>>
>>>>>>>>>>>>> Also, are you certain that the pst_map is a valid map
>>>>>>>>>>>>> identifier,
>>>>>>>>>>>>> and 
>>>>>>>>>>>>> that str_NewMapDefinition is a valid resource identifier?
>>>>>>>>>>>>>
>>>>>>>>>>>>> I'm guessing that pst_map is a string like: 
>>>>>>>>>>>>> "Library://map.MapDefinition", so your str_NewMapDefinition
>>>>>>>>>>>>> becomes:
>>>>>>>>>>>>> Session:<sessionid>//Library://map.MapDefinition.MapDefinition
>>>>>>>>>>>>>
>>>>>>>>>>>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> euskalmap skrev:
>>>>>>>>>>>>>     
>>>>>>>>>>>>>         
>>>>>>>>>>>>>             
>>>>>>>>>>>>>                 
>>>>>>>>>>>>>                     
>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>> It do not run with the parameter false in the instruction
>>>>>>>>>>>>>> UTF8Encoding
>>>>>>>>>>>>>> utf8
>>>>>>>>>>>>>> = new UTF8Encoding(false);
>>>>>>>>>>>>>> In your link sample(
>>>>>>>>>>>>>> http://trac.osgeo.org/mapguide/wiki/maestro/MaestroAPI/samples/CustomizedZoomWithWebLayout
>>>>>>>>>>>>>> http://trac.osgeo.org/mapguide/wiki/maestro/MaestroAPI/samples/CustomizedZoomWithWebLayout
>>>>>>>>>>>>>> ), it is a vb code with the mapguide maetro api; i will not
>>>>>>>>>>>>>> change
>>>>>>>>>>>>>> all
>>>>>>>>>>>>>> my
>>>>>>>>>>>>>> code because i use c# with mapguide api; i want to undestand
>>>>>>>>>>>>>> why
>>>>>>>>>>>>>> it
>>>>>>>>>>>>>> do
>>>>>>>>>>>>>> not
>>>>>>>>>>>>>> run; i use the same method to change the filter in layers and
>>>>>>>>>>>>>> it
>>>>>>>>>>>>>> run
>>>>>>>>>>>>>> very
>>>>>>>>>>>>>> well ! what's append in my code?
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> thanks
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Kenneth Skovhede, GEOGRAF A/S wrote:
>>>>>>>>>>>>>>   
>>>>>>>>>>>>>>       
>>>>>>>>>>>>>>           
>>>>>>>>>>>>>>               
>>>>>>>>>>>>>>                   
>>>>>>>>>>>>>>                       
>>>>>>>>>>>>>>> You need to create the UTF8Encoding object with the
>>>>>>>>>>>>>>> parameter
>>>>>>>>>>>>>>> "false" 
>>>>>>>>>>>>>>> (meaning disable BOM).
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> A slightly easier way to do this:
>>>>>>>>>>>>>>> http://trac.osgeo.org/mapguide/wiki/maestro/MaestroAPI/samples/CustomizedZoomWithWebLayout
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Regards, Kenneth Skovhede, GEOGRAF A/S
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> euskalmap skrev:
>>>>>>>>>>>>>>>     
>>>>>>>>>>>>>>>         
>>>>>>>>>>>>>>>             
>>>>>>>>>>>>>>>                 
>>>>>>>>>>>>>>>                     
>>>>>>>>>>>>>>>                         
>>>>>>>>>>>>>>>> Hi
>>>>>>>>>>>>>>>> I provide the end user with a link to my special page (see
>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>> code1).
>>>>>>>>>>>>>>>> In
>>>>>>>>>>>>>>>> that page i redirect to the MapGuide viewer files
>>>>>>>>>>>>>>>> (Response.Redirect).
>>>>>>>>>>>>>>>> code1:
>>>>>>>>>>>>>>>> http://n2.nabble.com/file/n2462320/sample1.jpg 
>>>>>>>>>>>>>>>> The fonction SetLayout Map modify the mapdefinition in my
>>>>>>>>>>>>>>>> layout.
>>>>>>>>>>>>>>>> See
>>>>>>>>>>>>>>>> image
>>>>>>>>>>>>>>>> here :
>>>>>>>>>>>>>>>> http://n2.nabble.com/file/n2462320/sample2.jpg 
>>>>>>>>>>>>>>>> The problem : the layout is not modify and i have this
>>>>>>>>>>>>>>>> message
>>>>>>>>>>>>>>>> :
>>>>>>>>>>>>>>>> An
>>>>>>>>>>>>>>>> exception occurred in the XML parser.
>>>>>>>>>>>>>>>> Have you an idea ?
>>>>>>>>>>>>>>>> Thanks
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>   
>>>>>>>>>>>>>>>>       
>>>>>>>>>>>>>>>>           
>>>>>>>>>>>>>>>>               
>>>>>>>>>>>>>>>>                   
>>>>>>>>>>>>>>>>                       
>>>>>>>>>>>>>>>>                           
>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>> mapguide-users mailing list
>>>>>>>>>>>>>>> mapguide-users at lists.osgeo.org
>>>>>>>>>>>>>>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>     
>>>>>>>>>>>>>>>         
>>>>>>>>>>>>>>>             
>>>>>>>>>>>>>>>                 
>>>>>>>>>>>>>>>                     
>>>>>>>>>>>>>>>                         
>>>>>>>>>>>>>>   
>>>>>>>>>>>>>>       
>>>>>>>>>>>>>>           
>>>>>>>>>>>>>>               
>>>>>>>>>>>>>>                   
>>>>>>>>>>>>>>                       
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> mapguide-users mailing list
>>>>>>>>>>>>> mapguide-users at lists.osgeo.org
>>>>>>>>>>>>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>     
>>>>>>>>>>>>>         
>>>>>>>>>>>>>             
>>>>>>>>>>>>>                 
>>>>>>>>>>>>>                     
>>>>>>>>>>>>   
>>>>>>>>>>>>       
>>>>>>>>>>>>           
>>>>>>>>>>>>               
>>>>>>>>>>>>                   
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> mapguide-users mailing list
>>>>>>>>>>> mapguide-users at lists.osgeo.org
>>>>>>>>>>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>     
>>>>>>>>>>>         
>>>>>>>>>>>             
>>>>>>>>>>>                 
>>>>>>>>>>   
>>>>>>>>>>       
>>>>>>>>>>           
>>>>>>>>>>               
>>>>>>>>> _______________________________________________
>>>>>>>>> mapguide-users mailing list
>>>>>>>>> mapguide-users at lists.osgeo.org
>>>>>>>>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>     
>>>>>>>>>         
>>>>>>>>>             
>>>>>>>>   
>>>>>>>>       
>>>>>>>>           
>>>>>>> _______________________________________________
>>>>>>> mapguide-users mailing list
>>>>>>> mapguide-users at lists.osgeo.org
>>>>>>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>>>>>>
>>>>>>>
>>>>>>>     
>>>>>>>         
>>>>>>   
>>>>>>       
>>>>> _______________________________________________
>>>>> mapguide-users mailing list
>>>>> mapguide-users at lists.osgeo.org
>>>>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>>>>
>>>>>
>>>>>     
>>>>
>>>>   
>>> 
>>> _______________________________________________
>>> mapguide-users mailing list
>>> mapguide-users at lists.osgeo.org
>>> http://lists.osgeo.org/mailman/listinfo/mapguide-users
>>> 
>>> 
>> 
>> 
> 
> 

-- 
View this message in context: http://n2.nabble.com/Modify-mapdefinition-in-a-layout-tp2462320p2503776.html
Sent from the MapGuide Users mailing list archive at Nabble.com.



More information about the mapguide-users mailing list