[opencms-dev] Two elements on schema to mapping

Paul-Inge Flakstad flakstad at npolar.no
Thu Jun 16 12:32:40 CEST 2011


Hi Juan, Michael,

I successfully did this recently. Did it by implementing a handler and overriding the resolveMappings(...) method.

Works like a charm. :)

Cheers, 
Paul

> -----Original Message-----
> From: opencms-dev-bounces at opencms.org 
> [mailto:opencms-dev-bounces at opencms.org] On Behalf Of Juan 
> Antonio Ruiz
> Sent: 16. juni 2011 12:20
> To: 'The OpenCms mailing list'
> Subject: Re: [opencms-dev] Two elements on schema to mapping
> 
>  Hi Michael,
> 
>  Ok, thank you for everything. I will try it.
> 
> 
> 
> -----Mensaje original-----
> De: opencms-dev-bounces at opencms.org 
> [mailto:opencms-dev-bounces at opencms.org]
> En nombre de Michael Emmerich
> Enviado el: jueves, 16 de junio de 2011 12:10
> Para: The OpenCms mailing list
> Asunto: Re: [opencms-dev] Two elements on schema to mapping
> 
> Juan,
> 
> 
> > Can I map two element of schema on a property?
> >
> > I have this schema:
> >
> > <xsd:sequence>
> >
> > <xsd:elementname=/"Name"/ type=/"OpenCmsString"/ />
> >
> > <xsd:elementname=/"Surname"/ type=/"OpenCmsString"/ />
> >
> >
> > I would like to do something like this,
> >
> > <mappings>
> >
> > <mappingelement=/"*Name,Surname*"/ mapto=/"property:fullname"/ />
> >
> > How I can it?
> >
> > Thanks.
> 
> Its not possible to do that in the XSD.
> 
> You could implement your own CmsXmlContentHandler by implementing the 
> I_CmsXmlContentHandler. There, you can perform an operation on XML 
> content creation or save operation:
> 
> You can do that by writing your own XML content handler that performs 
> actions in the prepareForWrite() method.
> This method is triggered every time an xml content is saved, 
> so you have 
> to avoid the database update when the temporary file is written 
> automatically by the OpenCms xml content editor.
> 
> Here is a short example how to implement such a content handler:
> 
> public class CmsActionXmlContentHandler extends 
> CmsDefaultXmlContentHandler {
>      public CmsFile prepareForWrite(CmsObject cms, CmsXmlContent 
> content, CmsFile file)
>          throws CmsException {
> 
>          // first call super implementation
>          super.prepareForWrite(cms, content, file);
> 
>          if 
> (file.getName().indexOf(CmsWorkplace.TEMP_FILE_PREFIX) != 0) {
>              String folderPath = 
> cms.getRequestContext().removeSiteRoot(
>                &#160CmsResource.getFolderPath(file.getRootPath()));
> 
>              if (cms.existsResource(folderPath + 
> CmsWorkplace.TEMP_FILE_PREFIX +
>                          file.getName(), CmsResourceFilter.ALL)) {
> 
>                  // do your stuff here
>                  ...
>              }
>          }
>      return file;
>      }
> }
> 
> 
> In the XSD of your XML content, you have to add the following node to 
> the appinfo section:
> 
> <xsd:annotation>
>      <xsd:appinfo>
>          <handler class="my.package.CmsActionXmlContentHandler"/>
>                  ...
>      </xsd:appinfo>
> </xsd:annotation>
> 
> 
> As you can see, you have access to the CmsObject, the 
> XmlContent and the 
> Resource in the OpenCms VFS.
> 
> 
> Kind regards,
> Michael
> 
> -- 
> 
> Alkacon Software GmbH - The OpenCms Experts
> Michael Emmerich
> An der Wachsfabrik 13
> 50996 Koeln, DE
> 
> Tel: +49 (0)2236 3826-14
> Fax: +49 (0)2236 3826-20
> Email: m.emmerich at alkacon.com
> 
> http://www.alkacon.com
> http://www.opencms.org
> 
> 
> Geschäftsführer: Alexander Kandzior, Amtsgericht Köln, HRB 54613
> 
> _______________________________________________
> This mail is sent to you from the opencms-dev mailing list
> To change your list options, or to unsubscribe from the list, 
> please visit
> http://lists.opencms.org/mailman/listinfo/opencms-dev
> 
> 
> _______________________________________________
> This mail is sent to you from the opencms-dev mailing list
> To change your list options, or to unsubscribe from the list, 
> please visit
> http://lists.opencms.org/mailman/listinfo/opencms-dev
> 


More information about the opencms-dev mailing list