My schema source looks like follows:
<xsd:schema xmlns="uuid:b8fd4596-56ec-4718-ad00-bf2a70a148c2" xmlns:tcmi="http://www.tridion.com/ContentManager/5.0/Instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" targetNamespace="uuid:b8fd4596-56ec-4718-ad00-bf2a70a148c2">
<xsd:import namespace="http://www.tridion.com/ContentManager/5.0/Instance"></xsd:import>
<xsd:annotation>
<xsd:appinfo>
<tcm:Labels xmlns:tcm="http://www.tridion.com/ContentManager/5.0">
<tcm:Label ElementName="description" Metadata="false">Description</tcm:Label>
<tcm:Label ElementName="multiline" Metadata="false">Multiline</tcm:Label>
</tcm:Labels>
</xsd:appinfo>
</xsd:annotation>
<xsd:element name="Blog">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="description" minOccurs="0" maxOccurs="1">
<xsd:annotation>
<xsd:appinfo>
<tcm:ExtensionXml xmlns:tcm="http://www.tridion.com/ContentManager/5.0"></tcm:ExtensionXml>
</xsd:appinfo>
</xsd:annotation>
<xsd:simpleType>
<xsd:restriction base="xsd:normalizedString">
<xsd:minLength value="1"></xsd:minLength>
<xsd:maxLength value="20"></xsd:maxLength>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="multiline" minOccurs="0" maxOccurs="1" type="tcmi:MultiLineText">
<xsd:annotation>
<xsd:appinfo>
<tcm:ExtensionXml xmlns:tcm="http://www.tridion.com/ContentManager/5.0">
<configuration xmlns="http://www.sdltridion.com/2011/SiteEdit">
<field>
<editable>true</editable>
</field>
</configuration>
</tcm:ExtensionXml>
<tcm:Size xmlns:tcm="http://www.tridion.com/ContentManager/5.0">5</tcm:Size>
</xsd:appinfo>
</xsd:annotation>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element></xsd:schema>
I'm able to use the maxlength and minLength restrictions on a "xsd:normalizedString" type field, but I'm not able to use the same restrictions for the "tcmi:MultiLineText" type. Anyone knows how can I use them on that type of field?
In case it's not possible to use that restrictions in that field, I know there are other ways of validating content on save in Tridion (as Nuno and Robert explained in http://nunolinhares.blogspot.com.es/2012/07/validating-content-on-save-part-1-of.html and http://www.curlette.com/?p=913, thanks for that job!) but I would like to find a solution avoiding the use of events. Any other ideas?
Unfortunately this can not be done on multi-line fields. This holds true for both RTF enabled fields and multi-line plain text fields.
This is by design (and actually makes a lot of sense), as trying to limit text is normally to do with the amount of space used by the text, and these fields support line breaks (and other formatting in the case of RTF enabled fields) so the string length has little to do with the space used by the text.
If your field is an RTF field, you could write a "Truncate" XSLT to apply to the text. Otherwise you will need to use one of the solutions you have referenced above.
Alternatively you might consider truncating the text with your output templates if it is too long.