2013-01-18 26 views
5

Moje źródło Schemat wygląda następująco:MaxLength ograniczenie dla pola MultiLineText w SDL Tridion 2011

<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> 

jestem w stanie używać maxLength i MINLENGTH ograniczeń na "xsd: normalizedString" wpisz pole, ale nie mogę używać tych samych ograniczeń dla typu "tcmi: MultiLineText". Ktoś wie, jak mogę z nich korzystać na tym polu?

W przypadku, gdy nie jest możliwe użycie że ograniczenia w tej dziedzinie, wiem, że istnieją inne sposoby sprawdzania zawartości na zapisać w Tridion (jak Nuno i Robert wyjaśnione http://nunolinhares.blogspot.com.es/2012/07/validating-content-on-save-part-1-of.html i http://www.curlette.com/?p=913, dzięki dla tej pracy!), Ale chciałbym lubię znaleźć rozwiązanie unikające korzystania z wydarzeń. Jakieś inne pomysły?

Odpowiedz

8

Niestety nie można tego zrobić w polach wielowierszowych. Dotyczy to zarówno pól włączonych w formacie RTF, jak i wieloliniowych pól tekstowych.

Jest to zgodne z projektem (i ma sens), ponieważ próba ograniczenia tekstu jest zwykle związana z ilością miejsca używanego przez tekst, a te pola obsługują podział wierszy (i inne formatowanie w przypadku pól aktywowanych RTF), więc długość ciągu ma niewiele wspólnego z przestrzenią używaną przez tekst.

Jeśli twoje pole jest polem RTF, możesz napisać "Truncate" XSLT, aby zastosować do tekstu. W przeciwnym razie będziesz musiał użyć jednego z powyższych rozwiązań.

Można również rozważyć obcinanie tekstu za pomocą szablonów wyjściowych, jeśli jest zbyt długi.

+0

Dzięki za odpowiedź Chris! Spróbuję użyć jednego z rozwiązań do zapisywania zdarzeń, ponieważ nie wszystkie ograniczone pola będą polami RTF. –