Skip navigation
All Places > Alfresco Content Services (ECM) > Blog > 2009 > July
2009
Since their inception, Alfresco WCM Web Forms have supported an inclusion mechanism based on the standard XML Schema include and import constructs.  Originally this mechanism read the included assets from the Web Project where the user was creating the content, but since v2.2SP3 the preferred mechanism has been to reference a Web Script instead (in fact the legacy mechanism may be deprecated in a future release).



One question that this new approach raises is how to support inclusion of static XSDs, as Web Scripts are inherently dynamic and introduce some unnecessary overhead for the simple static case.  The good news is that Alfresco ships with a Web Script that simply reads a file from the repository and returns its contents:

/api/path/content{property}/{store_type}/{store_id}/{path}?a={attach?}





An example usage is:

/api/path/content/workspace/SpacesStore/Company Home/Data Dictionary/Presentation Templates/readme.ftl





Using the Web Script inclusion mechanism for Web Forms, we can use this Web Script to include or import any XSD file stored in the DM repository.  For example, if we have a file called 'my-include.xsd' in the 'Company Home' space that contains the following content:

<?xml version='1.0'?>

<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'

           xmlns:alf='http://www.alfresco.org/'

           targetNamespace='http://www.alfresco.org/'

           elementFormDefault='qualified'>

  <xs:complexType abstract='true' name='IncludedComplexType'>

    <xs:sequence>

      <xs:element name='Title'

                  type='xs:normalizedString'

                  minOccurs='1'

                  maxOccurs='1' />

      <xs:element name='Summary'

                  type='xs:string'

                  minOccurs='0'

                  maxOccurs='1' />

      <xs:element name='Keyword'

                  type='xs:normalizedString'

                  minOccurs='0'

                  maxOccurs='unbounded' />

    </xs:sequence>

  </xs:complexType>

</xs:schema>





We could include it into a Web Form XSD using an include statement such as the following:

<?xml version='1.0'?>

<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'

           xmlns:alf='http://www.alfresco.org/'

           targetNamespace='http://www.alfresco.org/'

           elementFormDefault='qualified'>

  <xs:include schemaLocation='webscript://api/path/content/workspace/SpacesStore/Company Home/my-include.xsd?ticket={ticket}' />

  <xs:complexType name='MyWebFormType'>

    <xs:complexContent>

      <xs:extension base='alf:IncludedComplexType'>

        <xs:sequence>

          <xs:element name='Body'

                      type='xs:string'

                      minOccurs='1'

                      maxOccurs='1' />

        </xs:sequence>

      </xs:extension>

    </xs:complexContent>

  </xs:complexType>

  <xs:element name='MyWebForm' type='alf:MyWebFormType' />

</xs:schema>





This is clearly faster and easier than developing a custom Web Script to either emit the XML Schema shown above, or to return the contents of a specific XSD file from the repository!



This approach also provides a solution to another question: how does one neatly package up a Web Form, along with all of its dependencies, ready for deployment to another Alfresco environment?



By storing included XSD files in Company Home > Data Dictionary > Web Forms, we give ourselves the option to package up the entire Web Forms space as an ACP file and deploy that ACP file to any other Alfresco environment, knowing that we've captured not only all of the Web Forms in the source environment, but all dependent XSD files as well.

I've recently been working with the web team here to improve the partners section of the Alfresco site, the last part of which requires me to write a web form to allow content authors to easily add new partners, and modify existing ones.



Until now our partner listings have been manually edited using our generic page form, which has over time become difficult to edit and inflexible in the user searches it allows on the published site.



This situation has only got worse as we've added new partners. To illustrate this we now have over 150 partners around the globe, rather than the handful the current pages were designed to display.



One of the important capabilities of the new pages is the ability to query by country, therefore I needed a way for page authors to easily select countries from a drop-down list in the web form.



The current list of ISO country codes is pretty well maintained and is available to download in CSV or XML formats, however I couldn't find any mark-up for expressing this list within an XSD form definition using xs:enumeration elements.



If you are using Alfresco WCM or writing an XSD for any other purpose, and you want to include a drop-down allowing the user to select a country from the list, you can use something like the following.



<xs:simpleType name='country'>

<xs:restriction base='xs:normalizedString'>

<xs:enumeration value='AF'><xs:annotation><xs:appinfo><alf:label>AFGHANISTAN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='AX'><xs:annotation><xs:appinfo><alf:label>ÅLAND ISLANDS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='AL'><xs:annotation><xs:appinfo><alf:label>ALBANIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='DZ'><xs:annotation><xs:appinfo><alf:label>ALGERIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='AS'><xs:annotation><xs:appinfo><alf:label>AMERICAN SAMOA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='AD'><xs:annotation><xs:appinfo><alf:label>ANDORRA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='AO'><xs:annotation><xs:appinfo><alf:label>ANGOLA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='AI'><xs:annotation><xs:appinfo><alf:label>ANGUILLA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='AQ'><xs:annotation><xs:appinfo><alf:label>ANTARCTICA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='AG'><xs:annotation><xs:appinfo><alf:label>ANTIGUA AND BARBUDA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='AR'><xs:annotation><xs:appinfo><alf:label>ARGENTINA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='AM'><xs:annotation><xs:appinfo><alf:label>ARMENIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='AW'><xs:annotation><xs:appinfo><alf:label>ARUBA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='AU'><xs:annotation><xs:appinfo><alf:label>AUSTRALIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='AT'><xs:annotation><xs:appinfo><alf:label>AUSTRIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='AZ'><xs:annotation><xs:appinfo><alf:label>AZERBAIJAN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BS'><xs:annotation><xs:appinfo><alf:label>BAHAMAS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BH'><xs:annotation><xs:appinfo><alf:label>BAHRAIN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BD'><xs:annotation><xs:appinfo><alf:label>BANGLADESH</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BB'><xs:annotation><xs:appinfo><alf:label>BARBADOS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BY'><xs:annotation><xs:appinfo><alf:label>BELARUS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BE'><xs:annotation><xs:appinfo><alf:label>BELGIUM</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BZ'><xs:annotation><xs:appinfo><alf:label>BELIZE</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BJ'><xs:annotation><xs:appinfo><alf:label>BENIN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BM'><xs:annotation><xs:appinfo><alf:label>BERMUDA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BT'><xs:annotation><xs:appinfo><alf:label>BHUTAN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BO'><xs:annotation><xs:appinfo><alf:label>BOLIVIA, PLURINATIONAL STATE OF</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BA'><xs:annotation><xs:appinfo><alf:label>BOSNIA AND HERZEGOVINA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BW'><xs:annotation><xs:appinfo><alf:label>BOTSWANA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BV'><xs:annotation><xs:appinfo><alf:label>BOUVET ISLAND</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BR'><xs:annotation><xs:appinfo><alf:label>BRAZIL</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='IO'><xs:annotation><xs:appinfo><alf:label>BRITISH INDIAN OCEAN TERRITORY</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BN'><xs:annotation><xs:appinfo><alf:label>BRUNEI DARUSSALAM</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BG'><xs:annotation><xs:appinfo><alf:label>BULGARIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BF'><xs:annotation><xs:appinfo><alf:label>BURKINA FASO</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BI'><xs:annotation><xs:appinfo><alf:label>BURUNDI</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='KH'><xs:annotation><xs:appinfo><alf:label>CAMBODIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='CM'><xs:annotation><xs:appinfo><alf:label>CAMEROON</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='CA'><xs:annotation><xs:appinfo><alf:label>CANADA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='CV'><xs:annotation><xs:appinfo><alf:label>CAPE VERDE</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='KY'><xs:annotation><xs:appinfo><alf:label>CAYMAN ISLANDS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='CF'><xs:annotation><xs:appinfo><alf:label>CENTRAL AFRICAN REPUBLIC</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='TD'><xs:annotation><xs:appinfo><alf:label>CHAD</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='CL'><xs:annotation><xs:appinfo><alf:label>CHILE</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='CN'><xs:annotation><xs:appinfo><alf:label>CHINA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='CX'><xs:annotation><xs:appinfo><alf:label>CHRISTMAS ISLAND</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='CC'><xs:annotation><xs:appinfo><alf:label>COCOS (KEELING) ISLANDS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='CO'><xs:annotation><xs:appinfo><alf:label>COLOMBIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='KM'><xs:annotation><xs:appinfo><alf:label>COMOROS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='CG'><xs:annotation><xs:appinfo><alf:label>CONGO</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='CD'><xs:annotation><xs:appinfo><alf:label>CONGO, THE DEMOCRATIC REPUBLIC OF THE</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='CK'><xs:annotation><xs:appinfo><alf:label>COOK ISLANDS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='CR'><xs:annotation><xs:appinfo><alf:label>COSTA RICA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='CI'><xs:annotation><xs:appinfo><alf:label>CÔTE D'IVOIRE</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='HR'><xs:annotation><xs:appinfo><alf:label>CROATIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='CU'><xs:annotation><xs:appinfo><alf:label>CUBA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='CY'><xs:annotation><xs:appinfo><alf:label>CYPRUS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='CZ'><xs:annotation><xs:appinfo><alf:label>CZECH REPUBLIC</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='DK'><xs:annotation><xs:appinfo><alf:label>DENMARK</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='DJ'><xs:annotation><xs:appinfo><alf:label>DJIBOUTI</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='DM'><xs:annotation><xs:appinfo><alf:label>DOMINICA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='DO'><xs:annotation><xs:appinfo><alf:label>DOMINICAN REPUBLIC</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='EC'><xs:annotation><xs:appinfo><alf:label>ECUADOR</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='EG'><xs:annotation><xs:appinfo><alf:label>EGYPT</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='SV'><xs:annotation><xs:appinfo><alf:label>EL SALVADOR</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GQ'><xs:annotation><xs:appinfo><alf:label>EQUATORIAL GUINEA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='ER'><xs:annotation><xs:appinfo><alf:label>ERITREA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='EE'><xs:annotation><xs:appinfo><alf:label>ESTONIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='ET'><xs:annotation><xs:appinfo><alf:label>ETHIOPIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='FK'><xs:annotation><xs:appinfo><alf:label>FALKLAND ISLANDS (MALVINAS)</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='FO'><xs:annotation><xs:appinfo><alf:label>FAROE ISLANDS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='FJ'><xs:annotation><xs:appinfo><alf:label>FIJI</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='FI'><xs:annotation><xs:appinfo><alf:label>FINLAND</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='FR'><xs:annotation><xs:appinfo><alf:label>FRANCE</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GF'><xs:annotation><xs:appinfo><alf:label>FRENCH GUIANA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='PF'><xs:annotation><xs:appinfo><alf:label>FRENCH POLYNESIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='TF'><xs:annotation><xs:appinfo><alf:label>FRENCH SOUTHERN TERRITORIES</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GA'><xs:annotation><xs:appinfo><alf:label>GABON</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GM'><xs:annotation><xs:appinfo><alf:label>GAMBIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GE'><xs:annotation><xs:appinfo><alf:label>GEORGIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='DE'><xs:annotation><xs:appinfo><alf:label>GERMANY</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GH'><xs:annotation><xs:appinfo><alf:label>GHANA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GI'><xs:annotation><xs:appinfo><alf:label>GIBRALTAR</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GR'><xs:annotation><xs:appinfo><alf:label>GREECE</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GL'><xs:annotation><xs:appinfo><alf:label>GREENLAND</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GD'><xs:annotation><xs:appinfo><alf:label>GRENADA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GP'><xs:annotation><xs:appinfo><alf:label>GUADELOUPE</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GU'><xs:annotation><xs:appinfo><alf:label>GUAM</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GT'><xs:annotation><xs:appinfo><alf:label>GUATEMALA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GG'><xs:annotation><xs:appinfo><alf:label>GUERNSEY</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GN'><xs:annotation><xs:appinfo><alf:label>GUINEA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GW'><xs:annotation><xs:appinfo><alf:label>GUINEA-BISSAU</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GY'><xs:annotation><xs:appinfo><alf:label>GUYANA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='HT'><xs:annotation><xs:appinfo><alf:label>HAITI</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='HM'><xs:annotation><xs:appinfo><alf:label>HEARD ISLAND AND MCDONALD ISLANDS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='VA'><xs:annotation><xs:appinfo><alf:label>HOLY SEE (VATICAN CITY STATE)</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='HN'><xs:annotation><xs:appinfo><alf:label>HONDURAS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='HK'><xs:annotation><xs:appinfo><alf:label>HONG KONG</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='HU'><xs:annotation><xs:appinfo><alf:label>HUNGARY</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='IS'><xs:annotation><xs:appinfo><alf:label>ICELAND</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='IN'><xs:annotation><xs:appinfo><alf:label>INDIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='ID'><xs:annotation><xs:appinfo><alf:label>INDONESIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='IR'><xs:annotation><xs:appinfo><alf:label>IRAN, ISLAMIC REPUBLIC OF</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='IQ'><xs:annotation><xs:appinfo><alf:label>IRAQ</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='IE'><xs:annotation><xs:appinfo><alf:label>IRELAND</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='IM'><xs:annotation><xs:appinfo><alf:label>ISLE OF MAN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='IL'><xs:annotation><xs:appinfo><alf:label>ISRAEL</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='IT'><xs:annotation><xs:appinfo><alf:label>ITALY</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='JM'><xs:annotation><xs:appinfo><alf:label>JAMAICA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='JP'><xs:annotation><xs:appinfo><alf:label>JAPAN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='JE'><xs:annotation><xs:appinfo><alf:label>JERSEY</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='JO'><xs:annotation><xs:appinfo><alf:label>JORDAN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='KZ'><xs:annotation><xs:appinfo><alf:label>KAZAKHSTAN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='KE'><xs:annotation><xs:appinfo><alf:label>KENYA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='KI'><xs:annotation><xs:appinfo><alf:label>KIRIBATI</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='KP'><xs:annotation><xs:appinfo><alf:label>KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='KR'><xs:annotation><xs:appinfo><alf:label>KOREA, REPUBLIC OF</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='KW'><xs:annotation><xs:appinfo><alf:label>KUWAIT</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='KG'><xs:annotation><xs:appinfo><alf:label>KYRGYZSTAN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='LA'><xs:annotation><xs:appinfo><alf:label>LAO PEOPLE'S DEMOCRATIC REPUBLIC</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='LV'><xs:annotation><xs:appinfo><alf:label>LATVIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='LB'><xs:annotation><xs:appinfo><alf:label>LEBANON</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='LS'><xs:annotation><xs:appinfo><alf:label>LESOTHO</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='LR'><xs:annotation><xs:appinfo><alf:label>LIBERIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='LY'><xs:annotation><xs:appinfo><alf:label>LIBYAN ARAB JAMAHIRIYA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='LI'><xs:annotation><xs:appinfo><alf:label>LIECHTENSTEIN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='LT'><xs:annotation><xs:appinfo><alf:label>LITHUANIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='LU'><xs:annotation><xs:appinfo><alf:label>LUXEMBOURG</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MO'><xs:annotation><xs:appinfo><alf:label>MACAO</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MK'><xs:annotation><xs:appinfo><alf:label>MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MG'><xs:annotation><xs:appinfo><alf:label>MADAGASCAR</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MW'><xs:annotation><xs:appinfo><alf:label>MALAWI</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MY'><xs:annotation><xs:appinfo><alf:label>MALAYSIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MV'><xs:annotation><xs:appinfo><alf:label>MALDIVES</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='ML'><xs:annotation><xs:appinfo><alf:label>MALI</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MT'><xs:annotation><xs:appinfo><alf:label>MALTA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MH'><xs:annotation><xs:appinfo><alf:label>MARSHALL ISLANDS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MQ'><xs:annotation><xs:appinfo><alf:label>MARTINIQUE</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MR'><xs:annotation><xs:appinfo><alf:label>MAURITANIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MU'><xs:annotation><xs:appinfo><alf:label>MAURITIUS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='YT'><xs:annotation><xs:appinfo><alf:label>MAYOTTE</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MX'><xs:annotation><xs:appinfo><alf:label>MEXICO</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='FM'><xs:annotation><xs:appinfo><alf:label>MICRONESIA, FEDERATED STATES OF</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MD'><xs:annotation><xs:appinfo><alf:label>MOLDOVA, REPUBLIC OF</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MC'><xs:annotation><xs:appinfo><alf:label>MONACO</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MN'><xs:annotation><xs:appinfo><alf:label>MONGOLIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='ME'><xs:annotation><xs:appinfo><alf:label>MONTENEGRO</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MS'><xs:annotation><xs:appinfo><alf:label>MONTSERRAT</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MA'><xs:annotation><xs:appinfo><alf:label>MOROCCO</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MZ'><xs:annotation><xs:appinfo><alf:label>MOZAMBIQUE</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MM'><xs:annotation><xs:appinfo><alf:label>MYANMAR</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='NA'><xs:annotation><xs:appinfo><alf:label>NAMIBIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='NR'><xs:annotation><xs:appinfo><alf:label>NAURU</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='NP'><xs:annotation><xs:appinfo><alf:label>NEPAL</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='NL'><xs:annotation><xs:appinfo><alf:label>NETHERLANDS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='AN'><xs:annotation><xs:appinfo><alf:label>NETHERLANDS ANTILLES</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='NC'><xs:annotation><xs:appinfo><alf:label>NEW CALEDONIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='NZ'><xs:annotation><xs:appinfo><alf:label>NEW ZEALAND</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='NI'><xs:annotation><xs:appinfo><alf:label>NICARAGUA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='NE'><xs:annotation><xs:appinfo><alf:label>NIGER</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='NG'><xs:annotation><xs:appinfo><alf:label>NIGERIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='NU'><xs:annotation><xs:appinfo><alf:label>NIUE</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='NF'><xs:annotation><xs:appinfo><alf:label>NORFOLK ISLAND</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MP'><xs:annotation><xs:appinfo><alf:label>NORTHERN MARIANA ISLANDS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='NO'><xs:annotation><xs:appinfo><alf:label>NORWAY</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='OM'><xs:annotation><xs:appinfo><alf:label>OMAN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='PK'><xs:annotation><xs:appinfo><alf:label>PAKISTAN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='PW'><xs:annotation><xs:appinfo><alf:label>PALAU</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='PS'><xs:annotation><xs:appinfo><alf:label>PALESTINIAN TERRITORY, OCCUPIED</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='PA'><xs:annotation><xs:appinfo><alf:label>PANAMA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='PG'><xs:annotation><xs:appinfo><alf:label>PAPUA NEW GUINEA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='PY'><xs:annotation><xs:appinfo><alf:label>PARAGUAY</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='PE'><xs:annotation><xs:appinfo><alf:label>PERU</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='PH'><xs:annotation><xs:appinfo><alf:label>PHILIPPINES</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='PN'><xs:annotation><xs:appinfo><alf:label>PITCAIRN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='PL'><xs:annotation><xs:appinfo><alf:label>POLAND</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='PT'><xs:annotation><xs:appinfo><alf:label>PORTUGAL</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='PR'><xs:annotation><xs:appinfo><alf:label>PUERTO RICO</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='QA'><xs:annotation><xs:appinfo><alf:label>QATAR</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='RE'><xs:annotation><xs:appinfo><alf:label>RÉUNION</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='RO'><xs:annotation><xs:appinfo><alf:label>ROMANIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='RU'><xs:annotation><xs:appinfo><alf:label>RUSSIAN FEDERATION</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='RW'><xs:annotation><xs:appinfo><alf:label>RWANDA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='BL'><xs:annotation><xs:appinfo><alf:label>SAINT BARTHÉLEMY</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='SH'><xs:annotation><xs:appinfo><alf:label>SAINT HELENA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='KN'><xs:annotation><xs:appinfo><alf:label>SAINT KITTS AND NEVIS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='LC'><xs:annotation><xs:appinfo><alf:label>SAINT LUCIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='MF'><xs:annotation><xs:appinfo><alf:label>SAINT MARTIN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='PM'><xs:annotation><xs:appinfo><alf:label>SAINT PIERRE AND MIQUELON</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='VC'><xs:annotation><xs:appinfo><alf:label>SAINT VINCENT AND THE GRENADINES</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='WS'><xs:annotation><xs:appinfo><alf:label>SAMOA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='SM'><xs:annotation><xs:appinfo><alf:label>SAN MARINO</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='ST'><xs:annotation><xs:appinfo><alf:label>SAO TOME AND PRINCIPE</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='SA'><xs:annotation><xs:appinfo><alf:label>SAUDI ARABIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='SN'><xs:annotation><xs:appinfo><alf:label>SENEGAL</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='RS'><xs:annotation><xs:appinfo><alf:label>SERBIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='SC'><xs:annotation><xs:appinfo><alf:label>SEYCHELLES</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='SL'><xs:annotation><xs:appinfo><alf:label>SIERRA LEONE</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='SG'><xs:annotation><xs:appinfo><alf:label>SINGAPORE</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='SK'><xs:annotation><xs:appinfo><alf:label>SLOVAKIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='SI'><xs:annotation><xs:appinfo><alf:label>SLOVENIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='SB'><xs:annotation><xs:appinfo><alf:label>SOLOMON ISLANDS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='SO'><xs:annotation><xs:appinfo><alf:label>SOMALIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='ZA'><xs:annotation><xs:appinfo><alf:label>SOUTH AFRICA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GS'><xs:annotation><xs:appinfo><alf:label>SOUTH GEORGIA AND THE SOUTH SANDWICH ISLANDS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='ES'><xs:annotation><xs:appinfo><alf:label>SPAIN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='LK'><xs:annotation><xs:appinfo><alf:label>SRI LANKA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='SD'><xs:annotation><xs:appinfo><alf:label>SUDAN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='SR'><xs:annotation><xs:appinfo><alf:label>SURINAME</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='SJ'><xs:annotation><xs:appinfo><alf:label>SVALBARD AND JAN MAYEN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='SZ'><xs:annotation><xs:appinfo><alf:label>SWAZILAND</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='SE'><xs:annotation><xs:appinfo><alf:label>SWEDEN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='CH'><xs:annotation><xs:appinfo><alf:label>SWITZERLAND</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='SY'><xs:annotation><xs:appinfo><alf:label>SYRIAN ARAB REPUBLIC</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='TW'><xs:annotation><xs:appinfo><alf:label>TAIWAN, PROVINCE OF CHINA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='TJ'><xs:annotation><xs:appinfo><alf:label>TAJIKISTAN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='TZ'><xs:annotation><xs:appinfo><alf:label>TANZANIA, UNITED REPUBLIC OF</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='TH'><xs:annotation><xs:appinfo><alf:label>THAILAND</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='TL'><xs:annotation><xs:appinfo><alf:label>TIMOR-LESTE</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='TG'><xs:annotation><xs:appinfo><alf:label>TOGO</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='TK'><xs:annotation><xs:appinfo><alf:label>TOKELAU</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='TO'><xs:annotation><xs:appinfo><alf:label>TONGA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='TT'><xs:annotation><xs:appinfo><alf:label>TRINIDAD AND TOBAGO</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='TN'><xs:annotation><xs:appinfo><alf:label>TUNISIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='TR'><xs:annotation><xs:appinfo><alf:label>TURKEY</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='TM'><xs:annotation><xs:appinfo><alf:label>TURKMENISTAN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='TC'><xs:annotation><xs:appinfo><alf:label>TURKS AND CAICOS ISLANDS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='TV'><xs:annotation><xs:appinfo><alf:label>TUVALU</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='UG'><xs:annotation><xs:appinfo><alf:label>UGANDA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='UA'><xs:annotation><xs:appinfo><alf:label>UKRAINE</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='AE'><xs:annotation><xs:appinfo><alf:label>UNITED ARAB EMIRATES</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='GB'><xs:annotation><xs:appinfo><alf:label>UNITED KINGDOM</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='US'><xs:annotation><xs:appinfo><alf:label>UNITED STATES</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='UM'><xs:annotation><xs:appinfo><alf:label>UNITED STATES MINOR OUTLYING ISLANDS</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='UY'><xs:annotation><xs:appinfo><alf:label>URUGUAY</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='UZ'><xs:annotation><xs:appinfo><alf:label>UZBEKISTAN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='VU'><xs:annotation><xs:appinfo><alf:label>VANUATU</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='VE'><xs:annotation><xs:appinfo><alf:label>VENEZUELA, BOLIVARIAN REPUBLIC OF</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='VN'><xs:annotation><xs:appinfo><alf:label>VIET NAM</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='VG'><xs:annotation><xs:appinfo><alf:label>VIRGIN ISLANDS, BRITISH</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='VI'><xs:annotation><xs:appinfo><alf:label>VIRGIN ISLANDS, U.S.</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='WF'><xs:annotation><xs:appinfo><alf:label>WALLIS AND FUTUNA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='EH'><xs:annotation><xs:appinfo><alf:label>WESTERN SAHARA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='YE'><xs:annotation><xs:appinfo><alf:label>YEMEN</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='ZM'><xs:annotation><xs:appinfo><alf:label>ZAMBIA</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

<xs:enumeration value='ZW'><xs:annotation><xs:appinfo><alf:label>ZIMBABWE</alf:label></xs:appinfo></xs:annotation></xs:enumeration>

</xs:restriction>

</xs:simpleType>
Seth Gottlieb has written a great post entitled 'Code moves forward. Content moves backward.' that, by strange coincidence, echoes an Alfresco KB item authored by Alfresco's very own Ben Hagan last year.



What's interesting to me is that there is an alternative world view that asserts that code and content are two sides of the same coin and hence should be managed the same way in the same management system.  This meme seems particularly strong amongst those who are adherent's of the Boiko school of thought and also those who've had significant exposure to certain Web CMS products (that shall remain nameless) that are clearly designed for the blended model, and so indoctrinate users /developers to use a blended model in all cases (whether appropriate or not).



My experience has been that blending code and content management together doesn't work well in the majority of cases, for two primary reasons:



  1. Typically very different groups are producing the code and the content - often they're in completely different divisions within the organisation (ie. IT vs business unit) and sometimes are even separate companies (ie. web agency vs client).


  2. The releases cycles for code and content are vastly different - code is typically released infrequently (weekly, at best), while the content on any large site is typically changing virtually non-stop.



The net result is that shoehorning both activities together creates unnecessary procedural couplings, between groups who are typically poorly structured (from a communication and coordination perspective) to efficiently manage those redundant couplings.



Anyway, it's a great post on a very interesting topic, and I'd definitely encourage anyone involved in implementing a Web CMS (whether Alfresco WCM or not) to give it a solid read.

Filter Blog

By date: By tag: