docs: def render(self, name, value, attrs=None):
          '''Render the widget as HTML inputs for display on a form.
  
          :param name: form field base name
          :param value: date value
          :param attrs: - unused
          :returns: HTML text with three inputs for year/month/day
          '''
  
          # expects a value in format YYYY-MM-DD or YYYY-MM or YYYY (or empty/None)
          year, month, day = 'YYYY', 'MM', 'DD'
          if value:
              # use the regular expression to pull out year, month, and day values
              # if regular expression does not match, inputs will be empty
              match = W3C_DATE_RE.match(value)
              if match:
                  date_parts = match.groupdict()
                  year = date_parts['year']
                  month = date_parts['month']
                  day = date_parts['day']
  
  
          year_html = self.create_textinput(name, self.year_field, year, size=4, title='4-digit year', onClick='javascript:if(this.value == "YYYY") { this.value = "" };')
          month_html = self.create_textinput(name, self.month_field, month, size=2, title='2-digit month', onClick='javascript:if(this.value == "MM") { this.value = "" };')
          day_html = self.create_textinput(name, self.day_field, day, size=2, title='2-digit day', onClick='javascript:if(this.value == "DD") { this.value = "" };')
  
          # display widget fields in YYYY-MM-DD order to match W3C date format,
          # and putting required field(s) on the left
          output = [year_html, month_html, day_html]
  
          return mark_safe(u' / \n'.join(output))