======================
Dublin Core Properties
======================

A dublin core property allows us to use properties from dublin core
by simply defining a property as DCProperty.

  >>> from zope.dublincore import property

  >>> from zope import interface
  >>> from zope.annotation.interfaces import IAttributeAnnotatable
  >>> class DC(object):
  ...     interface.implements(IAttributeAnnotatable)
  ...     title   = property.DCProperty('title')
  ...     author  = property.DCProperty('creators')
  ...     authors = property.DCListProperty('creators')

  >>> obj = DC()
  >>> obj.title = u'My title'
  >>> obj.title
  u'My title'

Let's see if the title is really stored in dublin core :

  >>> from zope.dublincore.interfaces import IZopeDublinCore
  >>> IZopeDublinCore(obj).title
  u'My title'

Even if a dublin core property is a list property we can set and get the
property as scalar type :

  >>> obj.author = u'me'
  >>> obj.author
  u'me'

DCListProperty acts on the list :

  >>> obj.authors
  (u'me',)
  >>> obj.authors = [u'I', u'others']
  >>> obj.authors
  (u'I', u'others')
  >>> obj.author
  u'I'

