Index: main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/etc/collectionConfig.xml
===================================================================
--- main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/etc/collectionConfig.xml	(revision 30446)
+++ main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/etc/collectionConfig.xml	(revision 30446)
@@ -0,0 +1,489 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CollectionConfig xmlns:gsf="http://www.greenstone.org/greenstone3/schema/ConfigFormat" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+	<metadataList>
+		<metadata lang="en" name="creator"/>
+		<metadata lang="en" name="maintainer"/>
+		<metadata lang="en" name="public">true</metadata>
+	</metadataList>
+	<displayItemList>
+		<displayItem assigned="true" lang="en" name="description">Digital Library collection demonstrating an interactive digital music stand. Music scores from the Mutopia Project</displayItem>
+		<displayItem assigned="true" lang="en" name="name">Digital Music Stand</displayItem>
+		<displayItem assigned="true" lang="en" name="text">text</displayItem>
+		<displayItem assigned="true" lang="en" name="mp.title">titles</displayItem>
+		<displayItem assigned="true" lang="en" name="mp.titleInitialLetter">initial letter</displayItem>
+		<displayItem assigned="true" lang="en" name="document:text">text</displayItem>
+		<displayItem assigned="true" lang="en" name="document:ex.Title">Title</displayItem>
+		<displayItem assigned="true" lang="en" name="document:ex.Source">Source</displayItem>
+		<displayItem assigned="true" lang="en" name="document">document</displayItem>
+		<displayItem assigned="true" lang="en" name="section">page</displayItem>
+	</displayItemList>
+	<format/>
+	<search type="lucene">
+		<level name="document">
+			<displayItem lang="en" name="name">document</displayItem>
+		</level>
+		<level name="section">
+			<displayItem lang="en" name="name">page</displayItem>
+		</level>
+		<defaultLevel name="document"/>
+		<index name="text">
+			<displayItem lang="en" name="name">text</displayItem>
+		</index>
+		<index name="mp.title">
+			<displayItem lang="en" name="name">titles</displayItem>
+		</index>
+		<index name="mp.titleInitialLetter">
+			<displayItem lang="en" name="name">initial letter</displayItem>
+		</index>
+		<defaultIndex name="mp.title"/>
+		<searchType name="plain"/>
+		<searchType name="simpleform"/>
+		<searchType name="advancedform"/>
+		<format>
+			<gsf:template match="documentNode">
+				<tr class="document">
+					<xsl:variable name="DocOID">
+						<xsl:value-of select="@nodeID"/>
+					</xsl:variable>
+					<xsl:variable name="httpCollection">
+						<xsl:value-of select="/page/pageResponse/collection/metadataList/metadata[@name='httpPath']"/>
+					</xsl:variable>
+					<xsl:variable name="httpCollectionExternal">http://www.nzdl.org/greenstone3-nema/sites/localsite/collect/<xsl:value-of select="/page/pageResponse/collection/@name"/></xsl:variable>
+					<xsl:variable name="assocFilePath">
+						<gsf:metadata name="assocfilepath"/>
+					</xsl:variable>
+					<xsl:variable name="FilenameRoot">
+						<gsf:metadata name="FilenameRoot"/>
+					</xsl:variable>
+					<xsl:variable name="NumPages">
+						<gsf:metadata name="NumPages" select="current"/>
+					</xsl:variable>
+					<xsl:variable name="MaxImageWidth">
+						<gsf:metadata name="MaxImageWidth"/>
+					</xsl:variable>
+					<xsl:variable name="MaxImageHeight">
+						<gsf:metadata name="MaxImageHeight"/>
+					</xsl:variable>
+					<td valign="top">
+						<a href="" onclick="return openMusicStand('{$DocOID}','{$FilenameRoot}','.png','{$NumPages}',{$MaxImageWidth},{$MaxImageHeight});">
+							<img src="{$httpCollection}/images/music-stand.png"/>
+						</a>
+					</td>
+					<td valign="top">
+						<a href="{$httpCollection}/index/assoc/{$assocFilePath}/doc.pdf">
+							<gsf:choose-metadata>
+								<gsf:metadata name="thumbicon"/>
+								<gsf:metadata name="srcicon"/>
+							</gsf:choose-metadata>
+						</a>
+					</td>
+					<td valign="top"><gsf:choose-metadata><gsf:metadata name="mp.title"/><gsf:metadata name="dc.Title"/><gsf:metadata name="exp.Title"/><gsf:metadata name="Title"/><gsf:default>Untitled</gsf:default></gsf:choose-metadata>typeset by<gsf:metadata name="mp.composer"/><gsf:switch><gsf:metadata name="Source"/><gsf:when test="exists"><br/><i>(<gsf:metadata name="Source"/>)</i></gsf:when></gsf:switch></td>
+				</tr>
+			</gsf:template>
+		</format>
+	</search>
+	<infodb type="jdbm"/>
+	<import>
+		<pluginList>
+			<plugin name="ZIPPlugin"/>
+			<plugin name="GreenstoneXMLPlugin">
+				<option name="-block_exp" value="(?i)(index\\.html?\\??.*)|(\\.log)|(\\-let\\.pdf)|(\\.ps\\.gz)|(\\.ps)|(\\.zip)|(\\-preview\\.png)|(\\.i?ly)|(\\.mid)|(\\.pbm)$"/>
+			</plugin>
+			<plugin name="TextPlugin"/>
+			<plugin name="HTMLPlugin"/>
+			<plugin name="EmailPlugin"/>
+			<plugin name="PDFPlugin">
+				<option name="-convert_to" value="pagedimg_png"/>
+				<option name="-associate_ext" value="ly,mid"/>
+			</plugin>
+			<plugin name="RTFPlugin"/>
+			<plugin name="WordPlugin"/>
+			<plugin name="PostScriptPlugin"/>
+			<plugin name="PowerPointPlugin"/>
+			<plugin name="ExcelPlugin"/>
+			<plugin name="ImagePlugin"/>
+			<plugin name="ISISPlugin"/>
+			<plugin name="NulPlugin"/>
+			<plugin name="OAIPlugin"/>
+			<plugin name="SimpleRDFMetadataPlugin"/>
+			<plugin name="MetadataXMLPlugin"/>
+			<plugin name="ArchivesInfPlugin"/>
+			<plugin name="DirectoryPlugin"/>
+		</pluginList>
+	</import>
+	<browse>
+		<classifier name="AZCompactList">
+			<option name="-metadata" value="mp.title"/>
+			<option name="-buttonname" value="titles a-z"/>
+			<option name="-mingroup" value="1"/>
+			<option name="-removeprefix" value="(The|Die|Das|Der|Le|La|Les)\\s+"/>
+			<option name="-removesuffix" value="\\s+(,|\\(.*?\\)|\\-\\s+.*?)"/>
+		</classifier>
+		<format>
+			<gsf:template match="documentNode">
+				<td valign="top">
+					<xsl:variable name="DocOID">
+						<xsl:value-of select="@nodeID"/>
+					</xsl:variable>
+					<xsl:variable name="httpCollection">
+						<xsl:value-of select="/page/pageResponse/collection/metadataList/metadata[@name='httpPath']"/>
+					</xsl:variable>
+					<xsl:variable name="httpCollectionExternal">http://www.nzdl.org/greenstone3-nema/sites/localsite/collect/<xsl:value-of select="/page/pageResponse/collection/@name"/></xsl:variable>
+					<xsl:variable name="assocFilePath">
+						<gsf:metadata name="assocfilepath"/>
+					</xsl:variable>
+					<xsl:variable name="FilenameRoot">
+						<gsf:metadata name="FilenameRoot"/>
+					</xsl:variable>
+					<xsl:variable name="NumPages">
+						<gsf:metadata name="NumPages" pos="first"/>
+					</xsl:variable>
+					<xsl:variable name="MaxImageWidth">
+						<gsf:metadata name="MaxImageWidth"/>
+					</xsl:variable>
+					<xsl:variable name="MaxImageHeight">
+						<gsf:metadata name="MaxImageHeight"/>
+					</xsl:variable>
+					<a href="" onclick="return openMusicStand('{$DocOID}','{$FilenameRoot}','.png','{$NumPages}',{$MaxImageWidth},{$MaxImageHeight});">
+						<img src="{$httpCollection}/images/music-stand.png"/>
+					</a>
+				</td>
+				<td valign="top">
+					<gsf:link type="source">
+						<gsf:choose-metadata>
+							<gsf:metadata name="thumbicon"/>
+							<gsf:metadata name="srcicon"/>
+						</gsf:choose-metadata>
+					</gsf:link>
+				</td>
+				<td valign="top"><gsf:choose-metadata><gsf:metadata name="mp.title"/><gsf:metadata name="dc.Title"/><gsf:metadata name="exp.Title"/><gsf:metadata name="Title"/><gsf:default>Untitled</gsf:default></gsf:choose-metadata>by<gsf:metadata name="mp.composer"/><gsf:switch><gsf:metadata name="Source"/><gsf:when test="exists"><br/><i>(<gsf:metadata name="Source"/>)</i></gsf:when></gsf:switch></td>
+			</gsf:template>
+			<gsf:template match="classifierNode">
+				<td valign="top">
+					<gsf:link type="classifier">
+						<gsf:icon type="classifier"/>
+					</gsf:link>
+				</td>
+				<td valign="top">
+					<gsf:link type="source">
+						<gsf:choose-metadata>
+							<gsf:metadata name="thumbicon"/>
+							<gsf:metadata name="srcicon"/>
+						</gsf:choose-metadata>
+					</gsf:link>
+				</td>
+				<td valign="top">
+					<gsf:choose-metadata>
+						<gsf:metadata name="dc.Title"/>
+						<gsf:metadata name="exp.Title"/>
+						<gsf:metadata name="Title"/>
+						<gsf:default>Untitled</gsf:default>
+					</gsf:choose-metadata>
+					<gsf:switch>
+						<gsf:metadata name="Source"/>
+						<gsf:when test="exists">
+							<br/>
+							<i>(<gsf:metadata name="Source"/>)</i>
+						</gsf:when>
+					</gsf:switch>
+				</td>
+			</gsf:template>
+			<gsf:template match="classifierNode" mode="horizontal">
+				<gsf:link type="horizontal">
+					<gsf:metadata name="Title"/>
+				</gsf:link>
+			</gsf:template>
+<!--			
+			<xsl:template name="create-html-headerXXXX">
+				<title><xsl:call-template name="pageTitle"/> ::<xsl:call-template name="siteName"/></title>
+				<link href="interfaces/{$interface_name}/style/core.css" rel="stylesheet" type="text/css"/>
+				<link href="favicon.ico" rel="shortcut icon"/>
+				<xsl:call-template name="setup-gs-variable"/>
+				<script src="sites/{$site_name}/collect/digital-music-stand/script/musicstand-util.js" type="text/javascript">
+					<xsl:text>					</xsl:text>				</script>
+				<script src="sites/{$site_name}/collect/digital-music-stand/script/musicstand-open.js" type="text/javascript">
+					<xsl:text>					</xsl:text>				</script>
+			</xsl:template>
+-->
+			
+			<xsl:template name="additionalHeaderContent-collection">
+			  <gsf:script src="sites/{$site_name}/collect/{$collNameChecked}/script/musicstand-util.js" type="text/javascript"/>
+			  <gsf:script src="sites/{$site_name}/collect/{$collNameChecked}/script/musicstand-open.js" type="text/javascript"/>
+			</xsl:template>
+
+			
+
+			
+		</format>
+	</browse>
+	<display>
+	  <format>
+	    <gsf:metadata name="mp.title"/>
+	    <gsf:metadata name="mp.composer"/>
+		  <gsf:option name="TOC" value="false"/>
+		  <xsl:template name="additionalHeaderContent-collection">
+		    <!--
+			<xsl:template name="create-html-header">
+				<title><xsl:call-template name="pageTitle"/> ::<xsl:call-template name="siteName"/></title>
+				<link href="interfaces/{$interface_name}/style/core.css" rel="stylesheet" type="text/css"/>
+				<link href="favicon.ico" rel="shortcut icon"/>
+				<xsl:call-template name="setup-gs-variable"/>
+				-->
+				<xsl:variable name="httpCollection">
+					<xsl:value-of select="/page/pageResponse/collection/metadataList/metadata[@name='httpPath']"/>
+				</xsl:variable>
+				<xsl:variable name="httpCollectionExternal">http://www.nzdl.org/greenstone3-nema/sites/localsite/collect/<xsl:value-of select="/page/pageResponse/collection/@name"/></xsl:variable>
+				<gsf:variable name="cgiParamPageWidth">
+					<xsl:value-of select="/page/pageRequest/paramList/param[@name = 'pageWidth']/@value"/>
+				</gsf:variable>
+				<gsf:variable name="cgiParamPageHeight">
+					<xsl:value-of select="/page/pageRequest/paramList/param[@name = 'pageHeight']/@value"/>
+				</gsf:variable>
+				<style>#nextpagediv {
+  position: absolute; 
+  top:0px; left:0px; 
+  width:<xsl:value-of select="$cgiParamPageWidth"/>px; height:<xsl:value-of select="$cgiParamPageHeight"/>px; 
+  z-index:3; 
+  background-color:white;
+  clip:rect(0px<xsl:value-of select="$cgiParamPageWidth"/>px<xsl:value-of select="$cgiParamPageHeight"/>px 0px)
+}
+
+#prevpagediv {
+  position: absolute; 
+  top:0px; left:0px; 
+  width:<xsl:value-of select="$cgiParamPageWidth"/>px; height:<xsl:value-of select="$cgiParamPageHeight"/>px; 
+  z-index:3; 
+  background-color:white;
+  clip:rect(0px<xsl:value-of select="$cgiParamPageWidth"/>px<xsl:value-of select="$cgiParamPageHeight"/>px 0px)
+}
+
+#animedgebleed {
+  position: absolute; 
+  top:0px; left:0px; 
+  width:<xsl:value-of select="$cgiParamPageWidth"/>px; height:<xsl:value-of select="$cgiParamPageHeight"/>px; 
+  z-index:2; 
+  background-color:#800000;
+  clip:rect(0px<xsl:value-of select="$cgiParamPageWidth"/>px<xsl:value-of select="$cgiParamPageHeight"/>px 0px)
+}
+
+#loading {
+  position: absolute; 
+  top:0px; left:0px; 
+  width:<xsl:value-of select="$cgiParamPageWidth"/>px; height:<xsl:value-of select="$cgiParamPageHeight"/>px; 
+  z-index:4; 
+  display: block;
+}
+
+#sliderbg {
+  position: absolute; 
+  top:0px; left:0px; 
+  width:20px; height:<xsl:value-of select="$cgiParamPageHeight"/>px; 
+  z-index:3; 
+  background-color:#e0e0c0;
+}
+
+#slidertrackOLD {
+  width: 1px; height:<xsl:value-of select="$cgiParamPageHeight"/>px; 
+}
+
+#sliderpos {
+  position: absolute; 
+  top:0px; left:-8px; 
+  z-index:5; 
+}</style>
+				<script src="sites/{$site_name}/collect/digital-music-stand/script/musicstand-util.js" type="text/javascript">
+					<xsl:text>					</xsl:text>				</script>
+				<script src="sites/{$site_name}/collect/digital-music-stand/script/musicstand.js" type="text/javascript">
+					<xsl:text>					</xsl:text>				</script>
+				<script src="sites/{$site_name}/collect/digital-music-stand/script/musicstand-main.js" type="text/javascript">
+					<xsl:text>					</xsl:text>				</script>
+			</xsl:template>
+<!--
+This template is used to display the document content
+-->
+<!--
+    <xsl:template name="documentNodeText" >
+-->
+
+  <!--
+      <xsl:template match="documentNode" mode="document">
+  -->
+  <!--
+      <xsl:template name="documentNodeTextXXX" >
+  -->
+
+                         <xsl:template name="wrappedDocument">
+				<div id="gs-document">
+					<xsl:call-template name="documentPre"/>
+					<div id="gs-document-text" class="documenttext" collection="{/page/pageResponse/collection/@name}"><!-- *** -->
+<!--					  
+    <div><gsf:metadata name="mp.title"/> by <gsf:metadata name="mp.composer"/></div>
+    -->
+					  <xsl:call-template name="create-html-header"/>
+
+
+
+
+
+				<xsl:variable name="httpCollection">
+					<xsl:value-of select="/page/pageResponse/collection/metadataList/metadata[@name='httpPath']"/>
+				</xsl:variable>
+				<xsl:variable name="httpCollectionExternal">http://www.nzdl.org/greenstone3-nema/sites/localsite/collect/<xsl:value-of select="/page/pageResponse/collection/@name"/></xsl:variable>
+				<gsf:variable name="cgiParamPageWidth">
+					<xsl:value-of select="/page/pageRequest/paramList/param[@name = 'pageWidth']/@value"/>
+				</gsf:variable>
+				<gsf:variable name="cgiParamPageHeight">
+					<xsl:value-of select="/page/pageRequest/paramList/param[@name = 'pageHeight']/@value"/>
+				</gsf:variable>
+				<table align="center" width="{$cgiParamPageWidth}">
+					<tr>
+						<td align="left" width="20%">
+							<a href="javascript:prevPageAnim(gs.cgiParams['d'],'.png')">
+								<span id="prevpagespan" style="display: inline;">_iconprev_<span id="prevpageval"><script language="javascript" type="text/javascript">musicStand.docwritePrevPageNum()</script></span></span>
+							</a>
+							<script language="javascript" type="text/javascript">musicStand.activatePrevPageNum();</script>
+						</td>
+						<td align="center" width="60%">_document:gotoform_</td>
+						<td align="right" width="20%">
+							<a href="javascript:musicStand.nextPageAnim(gs.cgiParams['d'],'.png')">
+								<span id="nextpagespan" style="display: inline"><span id="nextpageval"><script language="javascript" type="text/javascript">musicStand.docwriteNextPageNum()</script></span>_iconnext_</span>
+							</a>
+						</td>
+						<script language="javascript" type="text/javascript">musicStand.activateNextPageNum();</script>
+					</tr>
+				</table>
+				<table width="100%">
+					<tr>
+						<td/>
+						<td>
+							<div id="thispage" style="cursor: e-resize; background: white;        position: relative; left: 0px; top: 0px;        width: {$cgiParamPageWidth}px; height: {gs.cgiparam.PageHeight}px;">
+								<a onClick="return false;" onContextMenu="return false;" onMouseDown="return musicStand.nextOrPrevPageEvent(event,gs.cgiParams['d'],'.png')" onMouseUp="return false;">
+									<img border="0" height="{$cgiParamPageHeight}" id="thispageimg" src="{$httpCollection}/images/blank.gif" width="{$cgiParamPageWidth}"/>
+								</a>
+								<div id="nextpagediv" style="clip : rect(0px, {$cgiParamPageWidth}px, {$cgiParamPageHeight}px, {$cgiParamPageWidth}px);">
+									<img border="0" id="nextpageimg" src=""/>
+								</div>
+								<div id="prevpagediv" style="clip : rect(0px, {$cgiParamPageWidth}px, {$cgiParamPageHeight}px, {$cgiParamPageWidth}px);">
+									<img border="0" id="prevpageimg" src=""/>
+								</div>
+								<div id="animedgebleed" style="clip : rect(0px, {$cgiParamPageWidth}px, {$cgiParamPageHeight}px, {$cgiParamPageWidth}px);">								</div>								<div id="loading">
+									<table height="100%" width="100%">
+										<tr>
+											<td width="45%">											</td>											<td align="left">
+												<span id="loadingdots">loading</span>
+											</td>
+										</tr>
+									</table>
+								</div>
+							</div>
+							<style>div.postit    {background-color: rgba(250,250,200,0.7);  color: black; }
+			a.postit:link   {background-color: rgba(250,250,200,0.7); color: black; text-decoration: none; }
+			a.postit:visited {background-color: rgba(250,250,200,0.7); color: black; text-decoration: none; }
+
+			a.postit:hover   {color: rgba(150,110 ,0,0.7); }
+
+			div.pagemenu    { background-color: rgba(250,250,200,0.7); color: black; }</style>
+							<div class="editable-menu" id="pagemenu" onmouseout="javascript:return musicStand.hidePageMenu(this,event);" style="position: absolute; right: 4px; bottom: 2px;        z-index: 10; visibility: hidden;">
+								<font size="-1">
+									<div class="pagemenu" id="pagemenu1">Cancel turn</div>
+									<div class="pagemenu" id="pagemenu2">Next page</div>
+									<div class="pagemenu" id="pagemenu3">Previous page</div>
+								</font>
+							</div>
+							<div id="annotateCanvas" style="position: absolute;             left: 0px; top: 0px;             visibility: visible;             z-index: 2;"/>
+						</td>
+						<td>
+							<div id="slidercontainer" style="background: white; position: relative; left: 0px; top: 0px; width: 40px; height: {$cgiParamPageHeight}px;">
+								<div id="sliderbg">
+									<div id="slidertrackabove" style="position: absolute; left: 8px; top: 0px; width: 4px; height: 500px; z-index:4; background-color:#606060;">									</div>									<div id="slidertrackbelow" style="position: absolute;                         left: 10px; top: 500px;                        width: 1px; height: 100px;          z-index:4;           background-color:#606060;">									</div>								</div>
+								<div id="sliderpos" style="width:30px; height:11px;">
+									<img height="11" src="{$httpCollection}/images/brown2-slider.png" width="30"/>
+								</div>
+								<script language="javascript" type="text/javascript">
+									<xsl:text disable-output-escaping="yes">var username = musicStand.getUsername();
+	  var metaval;
+
+	  if (username != null) {
+	      var metaname = username + "-sliderposTop";
+	      metaval = 700; // ***** major hack ****
+	      //metaval  = gsapi.getLiveMetadata(gs.cgiParams["d"],metaname);
+	      //if (metaval == "") {
+	      //    // fallback to looking up non-user specific one
+	      //    metaval  = gsapi.getLiveMetadata(gs.cgiParams["d"],"sliderposTop");
+	      //}
+	  }
+	  else {
+	      //metaval  = gsapi.getLiveMetadata(gs.cgiParams["d"],"sliderposTop");
+	      metaval = 700; // ***** major hack ****
+	  }
+	  var sliderposTop = parseInt(metaval);
+
+	  var speedBreak = musicStand.getSpeedBreak();
+
+	  if (sliderposTop &gt; 0) {
+	      sliderposTop *= musicStand.getScaleFactor();
+	      speedBreak = sliderposTop;
+	      musicStand.setSpeedBreak(speedBreak);
+	  }
+
+	  var sliderpos = document.getElementById('sliderpos');
+	  sliderpos.style.top = speedBreak + "px";
+          sliderpos.style.left = "-8px";
+	  sliderpos.onmousedown = dragSlider;
+	  var sliderbg = document.getElementById('sliderbg');
+	  sliderbg.onmousedown = dragSlider;
+
+
+	  var trackabove = document.getElementById('slidertrackabove');
+	  trackabove.style.height = speedBreak + "px";
+
+	  var trackbelow = document.getElementById('slidertrackbelow');
+	  trackbelow.style.top = speedBreak + "px";
+	  trackbelow.style.height = (gs.cgiParams["pageHeight"] - speedBreak) + "px";</xsl:text>
+								</script>
+							</div>
+						</td>
+					</tr>
+				</table>
+				<script type="text/javascript">bodyLoaded();</script>
+
+					  
+					  
+					</div>
+				</div>
+
+			
+			</xsl:template>
+		</format>
+	      </display>
+	      
+	<replaceListRef id="gs2-standard"/>
+	<replaceListRef id="gs2-image"/>
+	<serviceRackList><!-- comment out the following serviceRack if you want to disable OAI for this collection -->
+		<serviceRack name="OAIPMH">
+			<ListMetadataFormats><!--What metadata sets to support is collection specific. To support other metadata schema, simply add a metadataFormat element here.
+	The support of unqualified Dublin Core metadata set is mandatory in the oai specification.
+	-->
+				<metadataFormat metadataPrefix="oai_dc">
+					<metadataPrefix>oai_dc</metadataPrefix>
+					<schema>http://www.openarchives.org/OAI/2.0/oai_dc.xsd</schema>
+					<metadataNamespace>http://www.openarchives.org/OAI/2.0/oai_dc/</metadataNamespace><!--<metadataElements>dc.Title,dc.Creator,dc.Subject,dc.Description,dc.Publisher,dc.Contributor,dc.Date,dc.Type,dc.Format,dc.Identifier,dc.Source,dc.Language,dc.Relation,dc.Coverage,dc.Rights</metadataElements>              
+	  -->
+					<mappingList><!-- 
+	    The mapping is in the form: <publicly supported metadata name>,<mapped metadata name>, short as <A>,<B> 
+	    The first metadata name is medatory; if there is no mapped name followed, then the first name must be used by the records and
+	    searchable in the database, otherwise it is the mapped name stored in the database. The number of mapping elements matches the
+	    number of external metadata of the records. If only one name is present, the returned metadata will use this name plus the retrieved value;
+	    if both <A>,<B> are present, the returned metadata will use <A>'s name plus <B>'s value retrieved from database.
+	    
+	    **Bear in mind: if this mapping list is not present, the standard dc. metadata names (15 in total) will be used to retrieve metadata in the database.
+	    
+	    **The only case when this mapping is not present is that: 1. this metadata format is oai_dc; 2. the metadata is also stored in the database by Dublin Core's names.
+	    -->
+						<mapping>dc.Title,Title</mapping><!-- This mapping example means that the dc.Title is requested and the value of the metadata Title, which is used in this repository, is returned as response. -->
+					</mappingList>
+				</metadataFormat>
+			</ListMetadataFormats>
+		</serviceRack>
+	</serviceRackList>
+</CollectionConfig>
Index: main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/gli.col
===================================================================
--- main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/gli.col	(revision 30446)
+++ main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/gli.col	(revision 30446)
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE GathererCollection [<!ELEMENT GathererCollection (Argument*,GathererConfig,BuildConfig)>
+<!ELEMENT GathererConfig (Arguments*)>
+<!ELEMENT BuildConfig (Build,Import)>
+<!ELEMENT Build (Arguments*)>
+<!ELEMENT Import (Arguments*)>
+<!ELEMENT Schedule (Arguments*)>
+<!ELEMENT Argument (#PCDATA)>
+<!ATTLIST Argument name CDATA #REQUIRED>
+<!ATTLIST Argument enabled CDATA 'true'>
+]>
+<GathererCollection>
+	<Argument name="built">false</Argument>
+	<Argument name="imported">true</Argument>
+	<Argument name="skimfile">true</Argument>
+	<GathererConfig/>
+	<BuildConfig>
+		<Build/>
+		<Import>
+			<Argument enabled="false" name="saveas">GreenstoneXML</Argument>
+			<Argument enabled="false" name="sortmeta"/>
+			<Argument enabled="false" name="removeprefix"/>
+			<Argument enabled="false" name="removesuffix"/>
+			<Argument enabled="false" name="groupsize">1</Argument>
+			<Argument enabled="false" name="OIDtype">hash_on_full_filename</Argument>
+			<Argument enabled="false" name="OIDmetadata">dc.Identifier</Argument>
+			<Argument enabled="true" name="maxdocs">7</Argument>
+			<Argument enabled="false" name="faillog"/>
+			<Argument enabled="false" name="verbosity">2</Argument>
+		</Import>
+		<Schedule/>
+	</BuildConfig>
+</GathererCollection>
Index: main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/metadata/dublin.mds
===================================================================
--- main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/metadata/dublin.mds	(revision 30446)
+++ main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/metadata/dublin.mds	(revision 30446)
@@ -0,0 +1,1856 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE MetadataSet SYSTEM "http://www.greenstone.org/dtd/MetadataSet/1.0/MetadataSet.dtd">
+<MetadataSet contact="dcmi-feedback@dublincore.org" creator="Dublin Core Metadata Initiative" family="Dublin Core" language_dependent="label, definition, comment" lastchanged="Tue Sep 05 14:40:36 NZST 2006 - kjdon on kanuka" namespace="dc">
+    <!-- English Version sourced from http://www.dublincore.org/documents/dces/ -->
+    <SetLanguage code="en">
+        <Name language="en">Dublin Core Metadata Element Set, Version 1.1: Reference Description</Name>
+        <Description language="en">This document is the reference description, version 1.1 of the Dublin Core Metadata Element Set. This document supersedes the Dublin Core Metadata Element Set, version 1.0. See the Dublin Core Home Page (http://dublincore.org) for further information about the workshops, reports, working group papers, projects, and new developments concerning the Dublin Core Metadata Element set</Description>
+    </SetLanguage>
+    <!-- Maori Version sourced from http://www.tki.org.nz/r/maori/pedagogy/dc_elements_m.php -->
+    <SetLanguage code="mi">
+        <Name>Dublin Core Huanga - Maori (He Tauira)</Name>
+    </SetLanguage>
+    <!-- French Version sourced from http://www-rocq.inria.fr/%7Evercoust/METADATA/DC-fr.1.1.html -->
+    <!--  by Anne-Marie Vercoustre, Inria -->
+    <SetLanguage code="fr">
+        <Name language="fr">ElÃ©ments de mÃ©tadonnÃ©es du Dublin Core, Version 1.1: Description de RÃ©ference</Name>
+        <Description language="fr">Ce document rÃ©sume les derniÃšres dÃ©finitions des Ã©lÃ©ments demÃ©tadonnÃ©es du Dublin Core originellement dÃ©finis dans le document[RFC2413]. Ces nouvelles dÃ©finitions seront officiellement connues comme la Version 1.1. Elles utilisent un standard dÃ©fini formellement pour la description d&apos;Ã©lÃ©ments de mÃ©tadonnÃ©es. Cette formalisation contribue Ã  amÃ©liorer la cohÃ©rence avec d&apos;autres communautÃ©s dÃ©crivant des mÃ©tadonnÃ©es et Ã  augmenter la prÃ©cision, la portÃ©e et la cohÃ©rence interne de la dÃ©finition des Ã©lÃ©ments du Dublin Core.</Description>
+    </SetLanguage>
+    <!-- Russian Version sourced from -->
+    <!-- by Olga Barysheva, National Library of Russia -->
+    <SetLanguage code="ru">
+        <Name language="ru">ÐÐ°Ð±ÐŸÑ ÑÐ»ÐµÐŒÐµÐœÑÐŸÐ² ÐŒÐµÑÐ°ÐŽÐ°ÐœÐœÑÑ
+ Dublin Core (ÐÑÐ±Ð»ÐžÐœÑÐºÐŸÐ³ÐŸ ÑÐŽÑÐ°) ÐÐµÑÑÐžÑ 1.1: Ð¡Ð¿ÑÐ°Ð²ÐŸÑÐœÐŸÐµ ÐŸÐ¿ÐžÑÐ°ÐœÐžÐµ</Name>
+        <Description language="ru">ÐÐ°ÑÑÐŸÑÑÐžÐ¹ ÐŽÐŸÐºÑÐŒÐµÐœÑ ÐŸÐ±ÐŸÐ±ÑÐ°ÐµÑ ÐŸÐ±ÐœÐŸÐ²Ð»ÐµÐœÐœÑÐµ ÐŸÐ¿ÑÐµÐŽÐµÐ»ÐµÐœÐžÑ ÑÐ»ÐµÐŒÐµÐœÑÐŸÐ² ÐŒÐµÑÐ°ÐŽÐ°ÐœÐœÑÑ
+ Dublin Core (ÐÑÐ±Ð»ÐžÐœÑÐºÐŸÐ³ÐŸ ÑÐŽÑÐ°), Ð¿ÐµÑÐ²ÐŸÐœÐ°ÑÐ°Ð»ÑÐœÐŸ ÐŸÐ¿ÑÐµÐŽÐµÐ»ÐµÐœÐœÑÑ
+ Ð² RFC2413 (ÐÐµÑÐ°ÐŽÐ°ÐœÐœÑÐµ Dublin Core ÐŽÐ»Ñ ÐœÐ°Ñ
+ÐŸÐ¶ÐŽÐµÐœÐžÑ ÑÐµÑÑÑÑÐŸÐ²). Ð­ÑÐž ÐœÐŸÐ²ÑÐµ ÐŸÐ¿ÑÐµÐŽÐµÐ»ÐµÐœÐžÑ ÐŸÑÐžÑÐžÐ°Ð»ÑÐœÐŸ ÐžÐ·Ð²ÐµÑÑÐœÑ ÐºÐ°Ðº ÐÐµÑÑÐžÑ 1.1.</Description>
+    </SetLanguage>
+    <!-- Spanish Version sourced from http://www.rediris.es/metadata/. Please note that this is a translation for Dublin Core v1.0 -->
+    <!-- by Javi Masa, RedIRIS -->
+    <SetLanguage code="es">
+        <Name language="es">Elementos del conjunto de metadatas de Dublin Core: DescripciÃ³n de Referencia</Name>
+        <Description language="es">Este documento corresponde a una traducciÃ³n del original en lengua inglesa, con fecha 02/11/1997 que se encuentra en http://purl.org/metadata/dublin_core_elements. Este documento es una descripciÃ³n de referencia de los elementos del conjunto de &quot;Dublin Core&quot;. Para mÃ¡s informaciÃ³n sobre reuniones de trabajo, documentos de trabajo, proyectos y nuevos desarrollos relacionados con el conjunto de elementos que aquÃ­ se describen consultar la &quot;Home Page&quot; de &quot;Dublin Core&quot; (http://purl.org/metadata/dublin_core). Los elementos poseen nombres descriptivos que pretenden transmitir un significado semÃ¡ntico a los mismos. Para promover una interoperabilidad global, una descripciÃ³n del valor de algunos elementos prodrÃ¡ ser asociada a vocabularios controlados. Se asume que otros vocabularios controlados serÃ¡n desarrollados para asegurar esta interoperabilidad en dominios especÃ­ficos. Cada elemento es opcional y puede repetirse. AdemÃ¡s, los elementos pueden aparecer en cualquier orden. Aunque algunos entornos, como HTML, no diferencian entre mayÃºsculas y minÃºsculas, es recomendable escribir correctamente cada metadata segÃºn su definiciÃ³n para evitar conflictos con otros entornos, como XML (Extensible Markup Language) http://www.w3.org/TR/PR-xml</Description>
+    </SetLanguage>
+    <!-- Arabic Version sourced from http://haddouti.de/DC_arabic.html -->
+    <!-- maintained by Hachim Haddouti. -->
+    <SetLanguage code="ar">
+        <Name>Ø¯ØšÙÙÙ ÙÙØ±</Name>
+        <Description>ÙØ±Ø­Øš ØšÙÙ
+ ÙÙ ØµÙØ­Ø©  Ø¯ ØšÙÙÙ ÙÙ  Ø± ØšØ§ÙØ¹Ø±ØšÙ    ÙÙ  ÙØ°Ù Ø§ÙØµÙØ­Ø©  Ù ØšØ§ÙØªØ¹Ø§ÙÙ Ù
+Ø¹ Ø§ÙØ§Ø®ÙØ§Ù Ø§ÙØ¹Ø±Øš Ù
+Ù Ø§ÙÙ
+ÙØªØšØ§ØªØ Ø¯Ø§Ø± Ø§ÙÙØŽØ±Ø Ø§ÙØšØ­ÙØ« Ø§ÙØ¹ÙÙ
+ÙØ© Ù    ÙØ±ØŽØ© Ø¹Ù
+ÙWorking Group On Multilingual Dublin Core (DC-International) Ø</Description>
+    </SetLanguage>
+    <!-- Chinese - Simplified Version from http://dc.library.sh.cn/DC/1-1.htm -->
+    <!-- by Liu Wei, Shanghai Library -->
+    <SetLanguage code="cn">
+        <Name>éœæææ žå¿å
+æ°æ®å
+çŽ é1.1çïŒåèæè¿°</Name>
+        <Description>æ¬ææ¡£å
+³äºéœæææ žå¿å
+æ°æ®å
+çŽ é1.1çæ¬çåèæè¿°ãæ­€æè¿°äžå·²ç»æäº€ç»ISOçšäºåœé
+æç¥šçNISOå®æ¹æ åä¿æäžèŽã    éœæææ žå¿å
+æ°æ®éæ¯äžç§è·šé¢åçä¿¡æ¯èµæºæè¿°æ åãè¿éçä¿¡æ¯èµæºè¢«å®ä¹äžºâä»»äœå
+·ææ è¯çäžè¥¿âãæ­€å®ä¹æ¥èªäºTim Berners-Leeç­äººæèçInternet RFC2396 &quot;Uniform Resource Identifiers (URI): Generic Syntax&quot;æä»¶ãéœæææ žå¿å
+æ°æ®çåºçšé¢åæ²¡ææ ¹æ¬çéå¶ã</Description>
+    </SetLanguage>
+    <!-- Czech Version from http://www.ics.muni.cz/dublin_core/DC-czech-1.1.html -->
+    <!-- Ustav vypocetni techniky Masarykovy univerzity v Brne -->
+    <SetLanguage code="cs">
+        <Name>Soubor metadatovÃœch prvkÅ¯ Dublin Core, verze 1.1: referenÄnÃ­ popis</Name>
+        <Description>Tento dokument je ÄeskÃœm pÅekladem anglickÃ© verze referenÄnÃ­ho popisu souboru metadatovÃœch prvkÅ¯  Dublin Core, verze 1.1 [DCEN1.1]. Tento dokument nahrazuje ÄeskÃœ pÅeklad souboru metadatovÃœch prvkÅ¯ Dublin Core, verze 1.0 [DCCS1.0]. DalÅ¡Ã­ informace o pracovnÃ­ch seminÃ¡ÅÃ­ch (workshopech), zprÃ¡vÃ¡ch, studiÃ­ch pracovnÃ­ch skupin, projektech a dalÅ¡Ã­m vÃœvoji souboru metadatovÃœch prvkÅ¯ Dublin Core najdete na domovskÃ© strÃ¡nce Dublin Core (http://purl.org/dc)</Description>
+    </SetLanguage>
+    <!-- Dutch Version from http://www.kb.nl/coop/donor/project-nl-index.html?/coop/donor/rapporten/DCsimpleformat.html -->
+    <!-- by ... -->
+    <SetLanguage code="nl">
+        <Name>Rapporten Dublin Core Simple Format</Name>
+        <Description>Dit document beschrijft welke Dublin Core metadata elementen er zijn en geeft een korte definitie van elk element. Voor uitgebreide uitleg en gebruik van de Dublin Core elementen wordt u verwezen naar de gebruikershandleiding. Deze vertaling geeft ook de keuzes aan voor standaarden (taalcodes, datum codes) die wij in DONOR verband gaan hanteren. In zoverre kan deze vertaling afwijken van het oorspronkelijke document &quot;Description of Dublin Core Elements&quot; http://purl.org/metadata/dublin_core_elements&quot;</Description>
+    </SetLanguage>
+    <!-- Finnish Version from http://www.lib.helsinki.fi/dublin_core/dcref-fin.html -->
+    <!-- by Jani Stenvall and Juha Hakala, Helsinki University Library -->
+    <SetLanguage code="fi">
+        <Name/>
+        <Description/>
+    </SetLanguage>
+    <!-- Interlingua Version sourced from http://www.nautilus.com.br/%7Eensjo/ia/purl.org/dc/documents/rec-dces-19990702.htm -->
+    <!-- by Emerson Jose` Silveira da Costa -->
+    <SetLanguage code="ia">
+        <Name>Collection de elementos de metadatos de Dublin Core, version 1.1: Description de referentia</Name>
+        <Description>Isto es un traduction de un Recommendation del Dublin Core Metadata Initiative. Le publication como un recommendation significa que le specificationes es stabile e su adoption es supportate per le communitate Dublin Core (http://purl.org/dc/).</Description>
+    </SetLanguage>
+    <!-- Marathi Version sourced from http://bioinfo.ernet.in/library/dc/ele.txt -->
+    <!-- by by Shubhada Nagarkar, Bioinformatics Centre, University of Pune -->
+    <SetLanguage code="mr">
+        <Name>à€¡à€¬à¥à€²à€¿à€š à€à¥à€° à€®à¥à€à€Ÿà€¡à¥à€à€Ÿ à€žà¥à€ à€à€µà¥à€€à¥à€€à¥ à¥§.à¥§ à€žà€à€Šà€°à¥à€­ à€žà¥à€ªà€·à¥à€à¥à€à€°à€£ à¥§.à¥§ à€¡à€¬à¥à€²à€¿à€š à€à¥à€° à€®à¥à€à€Ÿà€¡à¥à€à€Ÿà€à€µà¥à€€à¥à€€à¥ à¥§.à¥§.</Name>
+        <Description>à¥§.à¥§ à€¡à€¬à¥à€²à€¿à€š à€à¥à€° à€®à¥à€à€Ÿà€¡à¥à€à€Ÿ à€¹à¥ à€µà¥à€à€µà¥à€à€³à¥à€¯à€Ÿ à€µà€¿à€·à€¯à€Ÿà€€à¥à€² à€®à€Ÿà€¹à¥à€€à¥ à€žà€Ÿà€ à¥à€¯à€Ÿà€à€µà€Šà¥à€Šà€²à€à¥ à€®à€Ÿà€¹à¥à€€à¥ à€Šà¥à€£à¥à€¯à€Ÿà€à¥ à€®à€Ÿà€šà€ à€à€¹à¥.  à€¯à€Ÿà€€ à€®à€Ÿà€¹à¥à€€à¥à€žà€Ÿà€ à€Ÿ à€®à¥à€¹à€£à€à¥ à€à¥à€¯à€Ÿà€²à€Ÿ à€à€³à€ à€à€¹à¥ à€
+à€žà€Ÿ à€à€žà€€à¥.  à€
+à€¶à€Ÿ à€ªà¥à€°à€à€Ÿà€°à€à¥ à€µà¥à€¯à€Ÿà€à¥à€¯à€Ÿ à€®à€Ÿà€¹à¥à€€à¥ à€à€Ÿà€³à¥à€¯à€µà€°à¥à€² à€. à€à€«.à€žà¥. à¥šà¥©à¥¯à¥¬URI: Generic Syntax -- Tim Berners Lee et al. à€¡à€¬à¥à€²à€¿à€š à€à¥à€° à€®à€Ÿà€šà€ à€à¥à€£à€€à¥à€¯à€Ÿà€¹à¥ à€ªà¥à€°à€à€Ÿà€°à€à¥à€¯à€Ÿ à€®à€Ÿà€¹à¥à€€à¥ à€žà€Ÿà€ à¥à€¯à€Ÿà€à€žà€Ÿà€ à¥ à€µà€Ÿà€ªà€°à€€à€Ÿ à€¯à¥à€€à¥.  à€€à¥à€¯à€Ÿà€žà€Ÿà€ à¥ à€à¥à€£à€€à€Ÿà€¹à¥ à€®à€à¥à€à€Ÿà€µ à€šà€Ÿà€¹à¥.</Description>
+    </SetLanguage>
+    <!-- Tamil Version from Greenstone Tamil Language maintainer -->
+    <!-- by A. Neelameghan and S.K. Lalitha from Sarada Ranganathan Endowment for Library Science, Bangalore -->
+    <SetLanguage code="ta">
+        <Name>à®à®ªà¯à®³à®¿à®©à¯ à®à¯à®°à¯ à®®à¯à®€à®°à®µà¯ à®à®±à¯à®ªà¯à®ªà¯ à®à®£à®®à¯ à®ªà®€à®¿à®ªà¯à®ªà¯ 1.1: à®à¯à®±à®¿à®ªà¯à®ªà¯ à®µà®¿à®µà®°à®®à¯</Name>
+        <Description>à®à®šà¯à®€ à®à®µà®£à¯à®®à¯ à®à®ªà¯à®³à®¿à®©à¯ à®à¯à®°à¯ à®®à¯à®€à®°à®µà¯ à®à®±à¯à®ªà¯à®ªà¯ à®à®£à®®à¯ à®ªà®€à®¿à®ªà¯à®ªà¯ 1.1 à®à¯à®±à®¿à®ªà¯à®ªà¯ à®µà®¿à®µà®°à®®à®Ÿà®à¯à®®à¯. à®à®šà¯à®€ à®à®µà®£à¯à®®à¯ à®à®ªà¯à®³à®¿à®©à¯ à®à¯à®°à¯ à®®à¯à®€à®°à®µà¯ à®à®±à¯à®ªà¯à®ªà¯ à®à®£à®®à¯ à®ªà®€à®¿à®ªà¯à®ªà¯ 1.0 à®µà¯ à®à®°à®¿à®µà¯à®ªà¯à®ªà¯à®à®¿à®°à®€à¯. à®µà®°à¯à®à¯à®·à®Ÿà®ªà®ªà¯à®à¯à®à®³à¯, à®
+à®±à®¿à®à¯à®à¯à®à®³à¯, à®à¯à®¯à®²à¯ à®à¯à®Žà¯ à®€à®Ÿà®³à¯à®à®³à¯,  à®€à®¿à®à¯à®à®ªà¯à®ªà®£à®¿à®à®³à¯, à®®à¯à®²à¯à®®à¯   à®à®ªà¯à®³à®¿à®©à¯ à®à¯à®°à¯ à®®à¯à®€à®°à®µà¯ à®à®±à¯à®ªà¯à®ªà¯ à®à®£à®®à¯ à®ªà®€à®¿à®ªà¯à®ªà¯ à®ªà¯à®€à®¿à®¯ à®µà®¿à®°à¯à®€à¯à®€à®¿ à®ªà®±à¯à®±à®¿ à®à¯à®à¯à®€à®²à¯ à®€à®à®µà®²à¯à®à¯à®à¯  à®à®ªà¯à®³à®¿à®©à¯ à®à¯à®°à¯ à®à®²à¯à®² à®ªà®à¯à®à®€à¯à®€à®¿à®²à¯ à®ªà®Ÿà®°à¯à®à¯à®à®µà¯à®®à¯ (http://dublincore.org)</Description>
+    </SetLanguage>
+    <!-- Vietnamese Version from Greenstone Vietnamese Language maintainer -->
+    <!-- by Cao Minh Kiem, National Centre for Science and Technology, Hanoi, Vietnam-->
+    <SetLanguage code="vi">
+        <Name>Yáº¿u tá» SiÃªu dá»¯ liá»u Dublin Core, phiÃªn báº£n 1.1: Tham chiáº¿u</Name>
+        <Description/>
+    </SetLanguage>
+    <Element name="Title">
+        <!-- English -->
+        <Language code="en">
+            <Attribute name="label">Title</Attribute>
+            <Attribute name="definition">A name given to the resource.</Attribute>
+            <Attribute name="comment">Typically, a Title will be a name by which the resource is formally known.</Attribute>
+        </Language>
+        <!-- Maori -->
+        <Language code="mi">
+            <Attribute name="label">Taitara</Attribute>
+            <Attribute name="definition">Te ingoa ka tapaina tetahi rauemi.</Attribute>
+            <Attribute name="comment">Ko te tikanga, ko te Taitara te ingoa ka mohio whanuitia te ingoa.</Attribute>
+        </Language>
+        <!-- French -->
+        <Language code="fr">
+            <Attribute name="label">Titre</Attribute>
+            <Attribute name="definition">Le nom donnÃ© Ã  la ressource.</Attribute>
+            <Attribute name="comment">Typiquement, un titre sera le nom par lequel la ressource est officiellement connue.</Attribute>
+        </Language>
+        <!-- Russian -->
+        <Language code="ru">
+            <Attribute name="label">ÐÐ°Ð·Ð²Ð°ÐœÐžÐµ</Attribute>
+            <Attribute name="definition">ÐÐŒÑ, ÐŽÐ°ÐœÐœÐŸÐµ ÑÐµÑÑÑÑÑ.</Attribute>
+            <Attribute name="comment">ÐÐ±ÑÑÐœÐŸ ÐœÐ°Ð·Ð²Ð°ÐœÐžÐµÐŒ ÑÐ²Ð»ÑÐµÑÑÑ ÐžÐŒÑ, Ð¿ÐŸÐŽ ÐºÐŸÑÐŸÑÑÐŒ ÑÐµÑÑÑÑ ÐŸÑÐžÑÐžÐ°Ð»ÑÐœÐŸ ÐžÐ·Ð²ÐµÑÑÐµÐœ.</Attribute>
+        </Language>
+        <!-- Spanish -->
+        <Language code="es">
+            <Attribute name="label">TÃ­tulo</Attribute>
+            <Attribute name="definition">El nombre dado a un recurso, usualmente por el autor.</Attribute>
+        </Language>
+        <!-- Arabic -->
+        <Language code="ar">
+            <Attribute name="label">Ø§ÙØ¹ÙÙØ§Ù</Attribute>
+            <Attribute name="definition">ÙØ°Ø§ Ø§ÙØ§Ø³Ù
+ ÙØ¹Ø·Ù ÙÙÙ
+ØµØ¯Ø±, Ù
+Ù ÙØšÙ Ø§ÙÙ
+ØšØ¯Ø¹ Ø§Ù Ø§ÙÙØ§ØŽØ±</Attribute>
+        </Language>
+        <!-- Chinese - Simplified -->
+        <Language code="cn">
+            <Attribute name="label">èµæºå</Attribute>
+            <Attribute name="definition">èµäºèµæºçåç§°ã</Attribute>
+            <Attribute name="comment">èµæºåäžè¬æèµæºå¯¹è±¡æ­£åŒå
+¬åŒçåç§°ã</Attribute>
+        </Language>
+        <!-- Czech -->
+        <Language code="cs">
+            <Attribute name="label">NÃ¡zev</Attribute>
+            <Attribute name="definition">JmÃ©no danÃ© zdroji.</Attribute>
+            <Attribute name="comment">NÃ¡zev bude typicky jmÃ©no, pod nÃ­mÅŸ je zdroj oficiÃ¡lnÄ znÃ¡m.</Attribute>
+        </Language>
+        <!-- Dutch -->
+        <Language code="nl">
+            <Attribute name="label">Titel</Attribute>
+            <Attribute name="definition">De naam van de Internetbron. Meestal gegeven door de auteur, maker of uitgever</Attribute>
+        </Language>
+        <!-- Finnish -->
+        <Language code="fi">
+            <Attribute name="label"/>
+            <Attribute name="definition"/>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Interlingua -->
+        <Language code="ia">
+            <Attribute name="label">Titulo</Attribute>
+            <Attribute name="definition">Un nomine date al ressource.</Attribute>
+            <Attribute name="comment">Typicamente se utiliza un nomine per le qual le ressource es formalmente cognite.</Attribute>
+        </Language>
+        <!-- Marathi -->
+        <Language code="mr">
+            <Attribute name="label">à€¶à¥à€°à¥à€·à€</Attribute>
+            <Attribute name="definition">à€ªà€°à¥à€¯à€Ÿà€¯à¥ à€¶à¥à€°à¥à€·à€</Attribute>
+            <Attribute name="comment">à€žà€à€à¥à€·à€¿à€ªà¥à€€ ,  à€­à€Ÿà€·à€Ÿà€à€€à€°à¥à€€  à€¶à¥à€°à¥à€·à€</Attribute>
+        </Language>
+        <!-- Tamil -->
+        <Language code="ta">
+            <Attribute name="label">à®€à®²à¯à®ªà¯à®ªà¯</Attribute>
+            <Attribute name="definition">à®µà®³à®€à¯à®€à®¿à®°à¯à®à¯à®à¯ à®à¯à®à¯à®€à¯à®€ à®ªà¯à®¯à®°à¯.</Attribute>
+            <Attribute name="comment">à®€à®²à¯à®ªà¯à®ªà¯</Attribute>
+        </Language>
+        <!-- Vietnamese -->
+        <Language code="vi">
+            <Attribute name="label">Nhan Äá»</Attribute>
+            <Attribute name="definition">TÃªn ÄÆ°á»£c gÃ¡n cho nguá»n tin</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Non-language specific -->
+        <Attribute name="version">1.1</Attribute>
+        <Attribute language="en" name="registration_authority">Dublin Core Metadata Initiative</Attribute>
+        <Attribute name="obligation">Optional</Attribute>
+        <Attribute name="datatype">Character String</Attribute>
+        <Attribute name="maximum_occurrence">Unlimited</Attribute>
+    </Element>
+    <Element name="Creator">
+        <!-- English -->
+        <Language code="en">
+            <Attribute name="label">Creator</Attribute>
+            <Attribute name="definition">An entity primarily responsible for making the content of the resource.</Attribute>
+            <Attribute name="comment">Examples of a Creator include a person, an organisation, or a service. Typically, the name of a Creator should be used to indicate the entity.</Attribute>
+        </Language>
+        <!-- Maori -->
+        <Language code="mi">
+            <Attribute name="label">Kaihanga</Attribute>
+            <Attribute name="definition">Te putahi, nana, na ratou ranei i matua oti ai te hanganga o te rauemi.</Attribute>
+            <Attribute name="comment">Ko te tangata, he putahitanga, he ratonga ranei etahi tauira Kaihanga. Ko te tikanga, ko te Kaihanga te ingoa ka whakamahia hei tohu i te putahi na ratou te hanganga.</Attribute>
+        </Language>
+        <!-- French -->
+        <Language code="fr">
+            <Attribute name="label">CrÃ©ateur</Attribute>
+            <Attribute name="definition">L&apos;entitÃ© principalement responsable de la crÃ©ation du contenu de la ressource.</Attribute>
+            <Attribute name="comment">Exemples de CrÃ©ateur incluent une personne, une organisation, ou un service. Typiquement, un nom du CrÃ©ateur devrait Ãªtre utilisÃ© pour dÃ©signer cette entitÃ©.</Attribute>
+        </Language>
+        <!-- Russian -->
+        <Language code="ru">
+            <Attribute name="label">Ð¡ÐŸÐ·ÐŽÐ°ÑÐµÐ»Ñ</Attribute>
+            <Attribute name="definition">ÐÐžÑÐŸ, ÐœÐµÑÑÑÐµÐµ Ð¿ÐµÑÐ²ÐžÑÐœÑÑ ÐŸÑÐ²ÐµÑÑÑÐ²ÐµÐœÐœÐŸÑÑÑ Ð·Ð° ÑÐŸÐ·ÐŽÐ°ÐœÐžÐµ ÑÐŸÐŽÐµÑÐ¶Ð°ÐœÐžÑ ÑÐµÑÑÑÑÐ°.</Attribute>
+            <Attribute name="comment">ÐÑÐžÐŒÐµÑÑ Ð¡ÐŸÐ·ÐŽÐ°ÑÐµÐ»Ñ Ð²ÐºÐ»ÑÑÐ°ÑÑ Ð¿ÐµÑÑÐŸÐœÑ, ÐŸÑÐ³Ð°ÐœÐžÐ·Ð°ÑÐžÑ ÐžÐ»Ðž ÑÐ»ÑÐ¶Ð±Ñ. ÐÐ±ÑÑÐœÐŸ ÐžÐŒÑ Ð¡ÐŸÐ·ÐŽÐ°ÑÐµÐ»Ñ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÑÑÑ ÐŽÐ»Ñ ÐžÐœÐŽÐžÐºÐ°ÑÐžÐž ÐŸÐ±ÑÐµÐºÑÐ°.</Attribute>
+        </Language>
+        <!-- Spanish -->
+        <Language code="es">
+            <Attribute name="label">Autor o Creador</Attribute>
+            <Attribute name="definition">La persona u organizaciÃ³n responsable de la creaciÃ³n del contenido intelectual del recurso. Por ejemplo, los autores en el caso de documentos escritos, artistas, fotografos e ilustradores en el caso de recursos visuales.</Attribute>
+        </Language>
+        <!-- Arabic -->
+        <Language code="ar">
+            <Attribute name="label">Ø§ÙÙØ§ØªØš Ø§Ù Ø§ÙÙ
+ØšØ¯Ø¹</Attribute>
+            <Attribute name="definition">ÙÙ Ø§ÙØŽØ®Øµ Ø§Ù Ø§ÙÙ
+Ø€Ø³Ø³Ø© Ø£ÙÙØ§  Ø¹Ù ÙØŽØŠ Ø§ÙÙ
+Ø­ØªÙÙ Ø§ÙÙÙØ± Ù ÙÙÙ
+ØµØ¯Ø± , Ø¹ÙÙ Ø³ØšÙÙ Ø§ÙÙ
+Ø«Ø§Ù , Ø§ÙÙ
+Ø€ÙÙÙÙ ÙÙ Ø­Ø§ÙØ© Ø§ÙØ«Ø§ØŠÙ Ø§ÙÙ
+ÙØªÙØšØ© , Ù Ø§ÙÙÙØ§ÙÙÙ , Ø§ÙÙ
+ØµÙØ±ÙÙ ÙÙ Ø­Ø§ÙØ© Ø§ÙÙ
+ØµØ§Ø¯Ø± Ø§ÙÙ
+Ø±ØŠÙØ©</Attribute>
+        </Language>
+        <!-- Chinese - Simplified -->
+        <Language code="cn">
+            <Attribute name="label">åå»ºè
+</Attribute>
+            <Attribute name="definition">åå»ºèµæºå
+å®¹çäž»èŠèŽ£ä»»è
+ã</Attribute>
+            <Attribute name="comment">åå»ºè
+çå®äŸå
+æ¬äžªäººïŒç»ç»ææé¡¹æå¡ãäžè¬èèšïŒçšåå»ºè
+çåç§°æ¥æ è¯è¿äžæ¡ç®ã</Attribute>
+        </Language>
+        <!-- Czech -->
+        <Language code="cs">
+            <Attribute name="label">TvÅ¯rce</Attribute>
+            <Attribute name="definition">Entita primÃ¡rnÄ odpovÄdnÃ¡ za vytvoÅenÃ­ obsahu zdroje.</Attribute>
+            <Attribute name="comment">PÅÃ­klady TvÅ¯rce zahrnujÃ­ osobu, organizaci nebo sluÅŸbu. K oznaÄenÃ­ entity se typicky pouÅŸÃ­vÃ¡ jmÃ©no tvÅ¯rce.</Attribute>
+        </Language>
+        <!-- Dutch -->
+        <Language code="nl">
+            <Attribute name="label">Auteur of maker</Attribute>
+            <Attribute name="definition">De auteur, maker of organisatie die primair verantwoordelijk is voor de intellectuele inhoud van het werk. Bijvoorbeeld auteurs in geval van geschreven documenten, artiesten, fotografen of illustrators in geval van visuele bronnen.</Attribute>
+        </Language>
+        <!-- Finnish -->
+        <Language code="fi">
+            <Attribute name="label"/>
+            <Attribute name="definition"/>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Interlingua -->
+        <Language code="ia">
+            <Attribute name="label">Creator</Attribute>
+            <Attribute name="definition">Le entitate primarimente responsabile pro producer le contento del ressource.</Attribute>
+            <Attribute name="comment">Exemplos de creator include un persona, un organization, o un servicio. Typicamente se utiliza un nomine de creator pro indicar iste entitate.</Attribute>
+        </Language>
+        <!-- Marathi -->
+        <Language code="mr">
+            <Attribute name="label">à€šà€¿à€°à¥à€®à€Ÿà€€à€Ÿ, à€à€šà€</Attribute>
+            <Attribute name="definition">à€®à€Ÿà€¹à€¿à€€à¥à€žà€Ÿà€ à€Ÿ à€šà€¿à€°à¥à€®à€Ÿà€£  à€à€°à€£à€Ÿà€°à€Ÿ</Attribute>
+            <Attribute name="comment">à€à€Šà€Ÿ.  à€²à¥à€à€, à€²à¥à€à€¿à€à€Ÿ,  à€µà¥à€¯à€à¥à€€à¥, à€žà€à€žà¥à€¥à€Ÿ,  à€žà€à€ªà€Ÿà€Šà€, à€žà€à€ªà€Ÿà€Šà€¿à€à€Ÿ</Attribute>
+        </Language>
+        <!-- Tamil -->
+        <Language code="ta">
+            <Attribute name="label">à®à®£à¯à®à®Ÿà®à¯à®à®¿à®¯à®µà®°à¯</Attribute>
+            <Attribute name="definition">à®à®°à¯ à®µà®³à®€à¯à®€à®¿à®©à¯ à®à®³à¯à®³à®à®à¯à®à®€à¯à®€à¯ à®à¯à®¯à¯à®€à®€à®°à¯à®à¯à®à¯ à®®à¯à®à¯à®à®¿à®¯à®®à®Ÿà® à®ªà¯à®±à¯à®ªà¯à®ªà¯à®³à¯à®³ à®ªà¯à®°à¯à®³à¯.</Attribute>
+            <Attribute name="comment">à®à®°à¯ à®à®£à¯à®à®Ÿà®à¯à®à®¿à®¯à®µà®°à®¿à®©à¯ à®à®€à®Ÿà®à®°à®£à®®à¯: à®à®°à¯ à®šà®ªà®°à¯, à®à®°à¯ à®à¯à®Žà¯, à®
+à®²à¯à®²à®€à¯ à®à®°à¯ à®à¯à®µà¯. à®à®°à¯ à®ªà¯à®°à¯à®³à¯ à®à¯à®±à®¿à®ªà¯à®ªà®€à®°à¯à®à¯à®à¯ à®à®£à¯à®à®Ÿà®à¯à®à®¿à®¯à®µà®°à®¿à®©à¯ à®ªà¯à®¯à®°à¯ à®à®ªà®¯à¯à®à®¿à®à¯à®à®µà¯à®£à¯à®à¯à®®à¯.</Attribute>
+        </Language>
+        <!-- Vietnamese -->
+        <Language code="vi">
+            <Attribute name="label">TÃ¡c giáº£</Attribute>
+            <Attribute name="definition">PhÃ¡p nhÃ¢n chá»u trÃ¡ch nhiá»m chÃ­nh trong viá»c táº¡o ra ná»i dung cá»§a nguá»n tin</Attribute>
+            <Attribute name="comment">PhÃ¡p nhÃ¢n trong tÃ¡c giáº£ cÃ³ thá» lÃ  tÃªn ngÆ°á»i, tÃªn cÆ¡ quan, tá» chá»©c chá»u trÃ¡ch nhiá»m vá» nÃŽi dung tÃ i liá»u</Attribute>
+        </Language>
+        <!-- Non-language specific -->
+        <Attribute name="version">1.1</Attribute>
+        <Attribute language="en" name="registration_authority">Dublin Core Metadata Initiative</Attribute>
+        <Attribute name="obligation">Optional</Attribute>
+        <Attribute name="datatype">Character String</Attribute>
+        <Attribute name="maximum_occurrence">Unlimited</Attribute>
+    </Element>
+    <Element name="Subject">
+        <!-- English -->
+        <Language code="en">
+            <Attribute name="label">Subject and Keywords</Attribute>
+            <Attribute name="definition">The topic of the content of the resource.</Attribute>
+            <Attribute name="comment">Typically, a Subject will be expressed as keywords, key phrases or classification codes that describe a topic of the resource. Recommended best practice is to select a value from a controlled vocabulary or formal classification scheme.</Attribute>
+        </Language>
+        <!-- Maori -->
+        <Language code="mi">
+            <Attribute name="label">Kaupapa</Attribute>
+            <Attribute name="definition">Te take/ nga take o te kaupapa, o te rauemi.</Attribute>
+            <Attribute name="comment">Ko te tikanga, ka whakaaturia te kaupapa o te rauemi e nga kupu matua, nga kimahi matua, nga tohu wehewehenga whakaahua ranei.</Attribute>
+        </Language>
+        <!-- French -->
+        <Language code="fr">
+            <Attribute name="label">Sujet</Attribute>
+            <Attribute name="definition">Le sujet du contenu de la ressource.</Attribute>
+            <Attribute name="comment">Typiquement, le sujet sera dÃ©crit par un ensemble de mots-clefs ou de phrases ou un code de classification qui prÃ©cisent le sujet de la ressource. L&apos;utilisation de vocabulaires contrÃŽlÃ©s et de schÃ©mas formels de classification est encouragÃ©e.</Attribute>
+        </Language>
+        <!-- Russian -->
+        <Language code="ru">
+            <Attribute name="label">ÐÑÐµÐŽÐŒÐµÑ Ðž ÐºÐ»ÑÑÐµÐ²ÑÐµ ÑÐ»ÐŸÐ²Ð°</Attribute>
+            <Attribute name="definition">Ð¢ÐµÐŒÐ° ÑÐŸÐŽÐµÑÐ¶Ð°ÐœÐžÑ ÑÐµÑÑÑÑÐ°.</Attribute>
+            <Attribute name="comment">ÐÐ±ÑÑÐœÐŸ ÐÑÐµÐŽÐŒÐµÑ Ð²ÑÑÐ°Ð¶Ð°ÐµÑÑÑ Ñ Ð¿ÐŸÐŒÐŸÑÑÑ ÐºÐ»ÑÑÐµÐ²ÑÑ
+ ÑÐ»ÐŸÐ², ÐºÐ»ÑÑÐµÐ²ÑÑ
+ ÑÑÐ°Ð· ÐžÐ»Ðž  ÐºÐ»Ð°ÑÑÐžÑÐžÐºÐ°ÑÐžÐŸÐœÐœÑÑ
+ ÐºÐŸÐŽÐŸÐ², ÐºÐŸÑÐŸÑÑÐµ ÐŸÐ¿ÐžÑÑÐ²Ð°ÑÑ ÑÐµÐŒÑ ÑÐµÑÑÑÑÐ°. ÐÐ»Ñ Ð¿ÑÐ°ÐºÑÐžÑÐµÑÐºÐŸÐ³ÐŸ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÑ ÑÐµÐºÐŸÐŒÐµÐœÐŽÑÐµÑÑÑ Ð²ÑÐ±ÐžÑÐ°ÑÑ Ð·ÐœÐ°ÑÐµÐœÐžÐµ ÐžÐ· ÐºÐŸÐœÑÑÐŸÐ»ÐžÑÑÐµÐŒÐŸÐ³ÐŸ ÑÐ»ÐŸÐ²Ð°ÑÑ ÐžÐ»Ðž ÑÐŸÑÐŒÐ°Ð»ÑÐœÐŸÐ¹ ÐºÐ»Ð°ÑÑÐžÑÐžÐºÐ°ÑÐžÐŸÐœÐœÐŸÐ¹ ÑÑ
+ÐµÐŒÑ.</Attribute>
+        </Language>
+        <!-- Spanish -->
+        <Language code="es">
+            <Attribute name="label">Claves</Attribute>
+            <Attribute name="definition">Los tÃ³picos del recurso. TÃ­picamente, Subject expresarÃ¡ las claves o frases que describen el tÃ­tulo o el contenido del recurso. Se fomentarÃ¡ el uso de vocabularios controlados y de sistemas de clasificaciÃ³n formales. Se pueden ver ejemplos de vocabularios controlados en: Controlled vocabularies, thesauri and classification systems available in the WWW. DC Subject</Attribute>
+        </Language>
+        <!-- Arabic -->
+        <Language code="ar">
+            <Attribute name="label">Ø§ÙÙ
+ÙØ¶ÙØ¹ Ù Ø§ÙÙÙÙ
+Ø§Øª Ø§ÙØ±ØŠÙØ³ÙØ©</Attribute>
+            <Attribute name="definition">ÙÙ Ù
+ÙØ¶ÙØ¹ Ø§ÙÙ
+ØµØ¯Ø±. ÙÙ
+ÙØ°Ø¬ÙØ§  ÙØ¹ØšØ± Ø¹Ù Ø§ÙÙ
+ÙØ¶ÙØ¹ ØšØ§Ø³ØªØ®Ø¯Ø§Ù
+Ù
+ÙØªØ§Ø­  Ø§ÙÙÙÙ
+Ø§Øª  Ø§Ù Ø¬Ù
+Ù Ø§ÙØªÙ  ØªØµÙ Ù
+ÙØ¶ÙØ¹ Ø§Ù Ù
+Ø­ØªÙÙ Ø§ÙÙ
+ØµØ¯Ø± , Ù ÙØ³ØªØ­Ø³Ù Ø§Ø³ØªØ®Ø¯Ø§Ù
+ Ù
+ÙØ±Ø¯Ø§Øª Ù
+Ø®Ø·Ø·Ø©Ù Ù
+Ø­ÙÙ
+Ø©  ÙØ§Ø¯ÙØ© ØªØµÙÙÙ ØŽÙÙÙØ©</Attribute>
+        </Language>
+        <!-- Chinese - Simplified -->
+        <Language code="cn">
+            <Attribute name="label">äž»é¢åå
+³é®è¯</Attribute>
+            <Attribute name="definition">èµæºå
+å®¹çäž»é¢æè¿°ã</Attribute>
+            <Attribute name="comment">åŠæèŠæè¿°ç¹å®èµæºçæäžäž»é¢ïŒäžè¬éçšå
+³é®è¯ãå
+³é®å­ç­è¯­æåç±»å·ïŒæå¥œäž»é¢åå
+³é®è¯ä»åæ§    è¯è¡šæè§èçåç±»äœç³»äž­ååŒã</Attribute>
+        </Language>
+        <!-- Czech -->
+        <Language code="cs">
+            <Attribute name="label">PÅedmÄt a klÃ­ÄovÃ¡ slova</Attribute>
+            <Attribute name="definition">TÃ©ma obsahu zdroje.</Attribute>
+            <Attribute name="comment">PÅedmÄt bude typicky vyjÃ¡dÅen pomocÃ­ klÃ­ÄovÃœch slov, klÃ­ÄovÃœch frÃ¡zÃ­ nebo klasifikaÄnÃ­ch znakÅ¯ popisujÃ­cÃ­ch tÃ©ma zdroje. DoporuÄuje se vybÃ­rat hodnotu prvku z ÅÃ­zenÃ©ho slovnÃ­ku nebo formÃ¡lnÃ­ho klasifikaÄnÃ­ho schÃ©matu.</Attribute>
+        </Language>
+        <!-- Dutch -->
+        <Language code="nl">
+            <Attribute name="label">Onderwerp en trefwoorden</Attribute>
+            <Attribute name="definition">Het onderwerp van de Internetbron. Het onderwerp wordt beschreven in korte zinnen of door het gebruik van trefwoorden. Het gebruik van gecontroleerde trefwoorden of classificatie schema&apos;s wordt aanbevolen.</Attribute>
+        </Language>
+        <!-- Finnish -->
+        <Language code="fi">
+            <Attribute name="label"/>
+            <Attribute name="definition"/>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Interlingua -->
+        <Language code="ia">
+            <Attribute name="label">Subjecto e parolas-clave</Attribute>
+            <Attribute name="definition">Le topico del contento del ressource.</Attribute>
+            <Attribute name="comment">Typicamente le subjecto es expresse per medio de parolas-clave, phrases-clave, o codices de classification que describe le topico del ressource. Le melior practica recommendate es selectionar un valor a partir de un vocabulario controlate o un schema formal de classification.</Attribute>
+        </Language>
+        <!-- Marathi -->
+        <Language code="mr">
+            <Attribute name="label">à€µà€¿à€·à€¯</Attribute>
+            <Attribute name="definition">à€µà€¿à€·à€¯</Attribute>
+            <Attribute name="comment">à€®à€Ÿà€¹à€¿à€€à¥à€žà€Ÿà€ à€Ÿ, à€à¥à€à€Ÿà€šà€žà€Ÿà€§à€šà¥ à€¯à€Ÿà€€à¥à€² à€à€¶à€¯ à€žà¥à€ªà€·à¥à€ à€à€°à€£à€Ÿà€°à¥ à€¶à€¬à¥à€Š, à€µà€¿à€·à€¯à€Ÿà€à¥ à€µà€°à¥à€à¥à€à€°à€£ à€à€°à€€à€Ÿà€šà€Ÿ à€¶à€¬à¥à€Šà€žà€à€à¥à€°à€¹ à€
+à€¥à€µà€Ÿ à€¶à€¬à¥à€Š à€à¥à€·à€Ÿà€à€Ÿ à€µà€Ÿà€ªà€° à€à€°à€Ÿà€µà€Ÿ</Attribute>
+        </Language>
+        <!-- Tamil -->
+        <Language code="ta">
+            <Attribute name="label">à®µà®¿à®·à®¯à®®à¯à®®à¯ à®®à¯à®€à®©à¯à®®à¯à®à¯ à®à¯à®²à¯à®à®³à¯à®®à¯</Attribute>
+            <Attribute name="definition">à®µà®³à®€à¯à®€à®¿à®©à¯ à®à®³à¯à®³à®à®à¯à®à®€à¯à®€à®¿à®©à¯ à®µà®¿à®·à®¯à®®à¯.</Attribute>
+            <Attribute name="comment">à®à®€à®Ÿà®à®°à®£à®®à®Ÿà®, à®à®°à¯ à®µà®¿à®·à®¯à®€à¯à®€à¯ à®®à¯à®€à®©à¯à®®à¯à®à¯ à®à¯à®²à¯à®à®³à®Ÿà®à®µà¯, à®®à¯à®€à®©à¯à®®à¯à®à¯ à®à¯à®±à¯à®±à¯à®à®°à®Ÿà®à®µà¯ à®
+à®²à¯à®²à®€à¯ à®µà®à¯à®ªà¯à®ªà®à¯à®€à¯à®€à¯à®®à¯ à®à¯à®±à®¿à®®à¯à®±à¯à®à®³à®Ÿà®à®µà¯ à®µà®³à®€à¯à®€à®¿à®©à¯ à®µà®¿à®·à®¯à®€à¯à®€à¯ à®µà®¿à®µà®°à®¿à®à¯à®à¯à®®à¯.   à®à®°à¯ à®à®à¯à®à¯à®ªà¯à®ªà®à¯à® à®à¯à®²à¯ à®µà®³à®€à¯à®€à®¿à®²à®¿à®°à¯à®šà¯à®€à¯ à®
+à®²à¯à®²à®€à¯ à®®à¯à®±à¯à®¯à®Ÿà®© à®µà®à¯à®ªà®à¯à®€à¯à®€à¯à®®à¯ à®€à®¿à®à¯à®à®€à¯à®€à®¿à®²à®¿à®°à¯à®šà¯à®€à¯ à®à®°à¯ à®®à®€à®¿à®ªà¯à®ªà¯ à®€à¯à®°à¯à®šà¯à®€à¯à®à¯à®à¯à®à¯à®µà®€à¯  à®šà®Ÿà®à¯à®à®³à¯ à®à®¿à®ªà®Ÿà®°à®à¯ à®à¯à®¯à¯à®µà®€à¯ à®®à¯à®²à¯à®€à®°à®®à¯ à®à¯à®¯à®²à¯.</Attribute>
+        </Language>
+        <!-- Vietnamese -->
+        <Language code="vi">
+            <Attribute name="label">Chá»§ Äá»</Attribute>
+            <Attribute name="definition">Chá»§ Äá» vÃ /hoáº·c Äá» má»¥c chÃ­nh cá»§a ná»i dung cá»§a nguá»n tin</Attribute>
+            <Attribute name="comment">Chá»§ Äá» ÄÆ°á»£c thá» hiá»n báº±ng tá»« khoÃ¡, cá»¥m tá»«, kÃœ hiá»u phÃ¢n loáº¡i, chá» sá» Äá» má»¥c,...VÃªn sá»­ dá»¥ng tá»« vá»±ng cÃ³ kiá»m soÃ¡t</Attribute>
+        </Language>
+        <!-- Non-language specific -->
+        <Attribute name="version">1.1</Attribute>
+        <Attribute language="en" name="registration_authority">Dublin Core Metadata Initiative</Attribute>
+        <Attribute name="obligation">Optional</Attribute>
+        <Attribute name="datatype">Character String</Attribute>
+        <Attribute name="maximum_occurrence">Unlimited</Attribute>
+    </Element>
+    <Element name="Description">
+        <!-- English -->
+        <Language code="en">
+            <Attribute name="label">Description</Attribute>
+            <Attribute name="definition">An account of the content of the resource.</Attribute>
+            <Attribute name="comment">Description may include but is not limited to: an abstract, table of contents, reference to a graphical representation of content or a free-text account of the content.</Attribute>
+        </Language>
+        <!-- Maori -->
+        <Language code="mi">
+            <Attribute name="label">Whakaaturanga</Attribute>
+            <Attribute name="definition">He whakaaturanga o nga kaupapa o te rauemi.</Attribute>
+            <Attribute name="comment">Ka uru atu, engari ehara noa ko: te whakarapopototanga korero, te ihirangi, te tohutanga o te kaupapa ma te whakaahua, te whakaaturanga kore kupu ranei, o te kauapapa.</Attribute>
+        </Language>
+        <!-- French -->
+        <Language code="fr">
+            <Attribute name="label">Description</Attribute>
+            <Attribute name="definition">Une description du contenu de la ressource.</Attribute>
+            <Attribute name="comment">Une Description peut contenir, mais ce n&apos;est pas limitatif: un rÃ©sumÃ©, une table des matiÃšres, une rÃ©fÃ©rence Ã  une reprÃ©sentation graphique du contenu, ou un texte libre sur le contenu.</Attribute>
+        </Language>
+        <!-- Russian -->
+        <Language code="ru">
+            <Attribute name="label">ÐÐ¿ÐžÑÐ°ÐœÐžÐµ</Attribute>
+            <Attribute name="definition">Ð¡ÐŸÐŸÐ±ÑÐµÐœÐžÐµ ÐŸ ÑÐŸÐŽÐµÑÐ¶Ð°ÐœÐžÐž ÑÐµÑÑÑÑÐ°.</Attribute>
+            <Attribute name="comment">ÐÐ¿ÐžÑÐ°ÐœÐžÐµ ÐŒÐŸÐ¶ÐµÑ Ð±ÑÑÑ Ð¿ÑÐµÐŽÑÑÐ°Ð²Ð»ÐµÐœÐŸ (Ð¿ÐŸ ÐœÐµÐŸÐ±Ñ
+ÐŸÐŽÐžÐŒÐŸÑÑÐž) Ð² Ð²ÐžÐŽÐµ: ÑÐµÑÐµÑÐ°ÑÐ°, ÐŸÐ³Ð»Ð°Ð²Ð»ÐµÐœÐžÑ, ÑÑÑÐ»ÐºÐž ÐœÐ° Ð³ÑÐ°ÑÐžÑÐµÑÐºÐŸÐµ Ð¿ÑÐµÐŽÑÑÐ°Ð²Ð»ÐµÐœÐžÐµ ÑÐŸÐŽÐµÑÐ¶Ð°ÐœÐžÑ ÐžÐ»Ðž Ð¿ÑÐŸÑÑÐŸÐ³ÐŸ ÑÐµÐºÑÑÐŸÐ²ÐŸÐ³ÐŸ ÐžÐ·Ð»ÐŸÐ¶ÐµÐœÐžÐµ ÑÐŸÐŽÐµÑÐ¶Ð°ÐœÐžÑ.</Attribute>
+        </Language>
+        <!-- Spanish -->
+        <Language code="es">
+            <Attribute name="label">DescripciÃ³n</Attribute>
+            <Attribute name="definition">Una descripciÃ³n textual del recurso, tal como un resumen en el caso de un documento o una descripciÃ³n del contenido en el caso de un documento visual.</Attribute>
+        </Language>
+        <!-- Arabic -->
+        <Language code="ar">
+            <Attribute name="label">Ø§ÙÙØµÙ</Attribute>
+            <Attribute name="definition">ÙÙ ÙØµÙ ÙØµÙ  ÙÙ
+Ø­ØªÙÙ Ø§ÙÙ
+ØµØ¯Ø±, ÙÙØ¶Ù
+ Ø§ÙÙ
+ÙØ®ØµØ§Øª ÙÙ Ø­Ø§ÙØ© Ø§ÙÙØ«Ø§ØŠÙ Ù
+Ø«Ù Ø§ÙØ§ØŽÙØ§Ø¡ Ø§ÙÙ
+ÙØªÙØšØ© Ø§Ù ØªÙØµÙÙ Ø§ÙÙ
+Ø­ØªÙÙ ÙÙ Ø­Ø§ÙØ© Ø§ÙÙ
+ØµØ§Ø¯Ø± Ø§ÙÙ
+Ø±ØŠÙØ©</Attribute>
+        </Language>
+        <!-- Chinese - Simplified -->
+        <Language code="cn">
+            <Attribute name="label">è¯Žæ</Attribute>
+            <Attribute name="definition">èµæºå
+å®¹çè§£é</Attribute>
+            <Attribute name="comment">è¯Žæå¯ä»¥å
+æ¬äœäžéäºä»¥äžå
+å®¹ïŒææãç®åœãå¯¹ä»¥åŸåœ¢æ¥æ­ç€ºå
+å®¹çèµæºèèšçæå­è¯Žæãæè
+äž    äžªæå
+³èµæºå
+å®¹çèªç±ææ¬æè¿°ã</Attribute>
+        </Language>
+        <!-- Czech -->
+        <Language code="cs">
+            <Attribute name="label">Popis</Attribute>
+            <Attribute name="definition">VysvÄtlenÃ­ obsahu zdroje.</Attribute>
+            <Attribute name="comment">Popis mÅ¯ÅŸe obsahovat (mimo jinÃ©): abstrakt, obsah, odkaz na grafickÃ© nebo volnÃ© textovÃ© vyjÃ¡dÅenÃ­ obsahu.</Attribute>
+        </Language>
+        <!-- Dutch -->
+        <Language code="nl">
+            <Attribute name="label">Omschrijving</Attribute>
+            <Attribute name="definition">Een omschrijving van de inhoud van de Internetbron. Abstracts of inhoudsomschrijvingen.</Attribute>
+        </Language>
+        <!-- Finnish -->
+        <Language code="fi">
+            <Attribute name="label"/>
+            <Attribute name="definition"/>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Interlingua -->
+        <Language code="ia">
+            <Attribute name="label">Description</Attribute>
+            <Attribute name="definition">Un description del contento del ressource.</Attribute>
+            <Attribute name="comment">Le description pote includer, ma non se limita a: summario, indice, referentia a un representation graphic del contento o un texto libere a proposito del contento.</Attribute>
+        </Language>
+        <!-- Marathi -->
+        <Language code="mr">
+            <Attribute name="label">à€µà€°à¥à€£à€š</Attribute>
+            <Attribute name="definition">à€®à€Ÿà€¹à€¿à€€à¥à€žà€Ÿà€ à¥à€¯à€Ÿà€à¥, à€à¥à€à€Ÿà€šà€žà€Ÿà€§à€šà€Ÿà€à¥à€µà€°à¥à€£à€š</Attribute>
+            <Attribute name="comment">à€®à€Ÿà€¹à€¿à€€à¥à€žà€Ÿà€ à¥à€¯à€Ÿà€à¥ à€šà€¿à€µà¥à€Šà€š, à€à€²à¥à€, à€à€¿à€€à¥à€°à€°à¥à€ª</Attribute>
+        </Language>
+        <!-- Tamil -->
+        <Language code="ta">
+            <Attribute name="label">à®µà®¿à®µà®°à®¿à®€à¯à®€à®²à¯</Attribute>
+            <Attribute name="definition">à®µà®³à®€à¯à®€à®¿à®©à¯ à®à®³à¯à®³à®à®à¯à®à®€à¯à®€à¯ à®ªà®±à¯à®±à®¿ à®µà®¿à®µà®°à®¿à®€à¯à®€à®²à¯</Attribute>
+            <Attribute name="comment">à®à®°à¯ à®à¯à®°à¯à®°à¯à®à¯à®à®®à¯, à®à®³à¯à®³à®à®à¯à®à®®à¯ à®ªà®à¯à®à®¿à®¯à®²à¯,  à®à®³à¯à®³à®à®à¯à®à®€à¯à®€à¯ à®µà®°à®µà®¿à®¯à®²à®Ÿà® à®à¯à®±à®¿à®ªà¯à®ªà¯à®à¯ à®à®à¯à®à®¿à®²à¯à®²à®Ÿà®€ à®à®°à¯à®¯à®¿à®©à¯ à®à®³à¯à®³à®à®à¯à®à®®à¯ à®µà®¿à®³à®à¯à®à®®à¯, à®à®µà¯à®à®³à¯à®®à¯ à®à®©à¯à®©à¯à®®à¯ à®®à¯à®²à¯à®®à¯ à®µà®¿à®µà®°à®¿à®€à¯à®€à®²à¯à®²à®¿à®²à¯ à®à¯à®°à¯à®€à¯à®€à¯à®à¯à®à¯à®³à¯à®³à®²à®Ÿà®®à¯.</Attribute>
+        </Language>
+        <!-- Vietnamese -->
+        <Language code="vi">
+            <Attribute name="label">MÃŽ táº£</Attribute>
+            <Attribute name="definition">Má»t thÃŽng bÃ¡o lÃ m rÃµ ná»i dung cá»§a nguá»n tin</Attribute>
+            <Attribute name="comment">MÃŽ táº£ cÃ³ thá» bao gá»m: tÃ³m táº¯t ngáº¯n gá»n. má»¥c lá»¥c, ThÃŽng tin tham chiáº¿u vá» báº£ng biá»i. vá» nguá»n tin</Attribute>
+        </Language>
+        <!-- Non-language specific -->
+        <Attribute name="version">1.1</Attribute>
+        <Attribute language="en" name="registration_authority">Dublin Core Metadata Initiative</Attribute>
+        <Attribute name="obligation">Optional</Attribute>
+        <Attribute name="datatype">Character String</Attribute>
+        <Attribute name="maximum_occurrence">Unlimited</Attribute>
+    </Element>
+    <Element name="Publisher">
+        <!-- English -->
+        <Language code="en">
+            <Attribute name="label">Publisher</Attribute>
+            <Attribute name="definition">An entity responsible for making the resource available.</Attribute>
+            <Attribute name="comment">Examples of a Publisher include a person, an organisation, or a service. Typically, the name of a Publisher should be used to indicate the entity.</Attribute>
+        </Language>
+        <!-- Maori -->
+        <Language code="mi">
+            <Attribute name="label">Kaiwhakaputa</Attribute>
+            <Attribute name="definition">Te putahi nana i whakaputa te rauemi.</Attribute>
+            <Attribute name="comment">Ko te tangata, he putahitanga, he ratonga ranei etahi tauira Kaiwhakaputa. Ko te tikanga, ka whakamahia te ingoa o te Kaiwhakaputa hei tohu i te putahi.</Attribute>
+        </Language>
+        <!-- French -->
+        <Language code="fr">
+            <Attribute name="label">Editeur</Attribute>
+            <Attribute name="definition">L&apos;entitÃ© responsable de la diffusion de la ressource, dans sa forme actuelle, tels, un dÃ©partement universitaire, une entreprise.</Attribute>
+            <Attribute name="comment">Exemples d&apos;Editeurs incluent une personne, une organisation, ou un service. Typiquement, le nom d&apos;une maison d&apos;Ã©dition devrait Ãªtre utilisÃ© ici.</Attribute>
+        </Language>
+        <!-- Russian -->
+        <Language code="ru">
+            <Attribute name="label">ÐÐ·ÐŽÐ°ÑÐµÐ»Ñ</Attribute>
+            <Attribute name="definition">ÐÐžÑÐŸ, ÐŸÑÐ²ÐµÑÑÑÐ²ÐµÐœÐœÐŸÐµ Ð·Ð° Ð²Ð²ÐŸÐŽ ÑÐµÑÑÑÑÐ° Ð² ÐŸÐ±ÑÐ°ÑÐµÐœÐžÐµ.</Attribute>
+            <Attribute name="comment">ÐÑÐžÐŒÐµÑÑ ÐÐ·ÐŽÐ°ÑÐµÐ»Ñ Ð²ÐºÐ»ÑÑÐ°ÑÑ Ð¿ÐµÑÑÐŸÐœÑ, ÐŸÑÐ³Ð°ÐœÐžÐ·Ð°ÑÐžÑ ÐžÐ»Ðž ÑÐ»ÑÐ¶Ð±Ñ. ÐÐ±ÑÑÐœÐŸ ÐžÐŒÑ ÐÐ·ÐŽÐ°ÑÐµÐ»Ñ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÑÑÑ ÐŽÐ»Ñ ÐžÐœÐŽÐžÐºÐ°ÑÐžÐž ÐŸÐ±ÑÐµÐºÑÐ°.</Attribute>
+        </Language>
+        <!-- Spanish -->
+        <Language code="es">
+            <Attribute name="label">Editor</Attribute>
+            <Attribute name="definition">&gt;La entidad responsable de hacer que el recurso se encuentre disponible en la red en su formato actual, por ejemplo la empresa editora, un departamento universitario u otro tipo de organizaciÃ³n.</Attribute>
+        </Language>
+        <!-- Arabic -->
+        <Language code="ar">
+            <Attribute name="label">Ø§ÙÙØ§ØŽØ±</Attribute>
+            <Attribute name="definition">ÙÙ Ø§ÙÙÙØŠØ© Ø§ÙÙ
+Ø³Ø€ÙÙØ© Ø¹Ù ØµÙØ§Ø¹Ø© Ø§ÙÙ
+ØµØ¯Ø± Ø§ÙÙ
+ØªÙÙØ± ÙÙ Ø­Ø§ÙØªÙ Ø§ÙØ­Ø§Ø¶Ø±Ø©, Ù
+Ø«Ù Ø¯Ø§Ø± Ø§ÙÙØŽØ±, ÙØ³Ù
+ Ø¬Ø§Ù
+Ø¹Ù Ø§Ù Ù
+Ø€Ø³Ø³Ø© Ø§Ø¹Ù
+Ø§Ù</Attribute>
+        </Language>
+        <!-- Chinese - Simplified -->
+        <Language code="cn">
+            <Attribute name="label">åºçè
+</Attribute>
+            <Attribute name="definition">äœ¿èµæºæäžºå¯ä»¥è·åŸå¹¶å¯çšçèŽ£ä»»è
+ã</Attribute>
+            <Attribute name="comment">åºçè
+çå®äŸå
+æ¬äžªäœïŒç»ç»ïŒææå¡ãäžè¬èèšïŒåºè¯¥çšåºçè
+çåç§°æ¥æ è¯è¿äžæ¡ç®ã</Attribute>
+        </Language>
+        <!-- Czech -->
+        <Language code="cs">
+            <Attribute name="label">Vydavatel</Attribute>
+            <Attribute name="definition">Entita odpovÄdnÃ¡ za zpÅÃ­stupnÄnÃ­ zdroje.</Attribute>
+            <Attribute name="comment">PÅÃ­klady Vydavatele zahrnujÃ­ osobu, organizaci nebo sluÅŸbu. K oznaÄenÃ­ entity se typicky pouÅŸÃ­vÃ¡ jmÃ©no vydavatele.</Attribute>
+        </Language>
+        <!-- Dutch -->
+        <Language code="nl">
+            <Attribute name="label">Uitgever</Attribute>
+            <Attribute name="definition">De entiteit die verantwoordelijk is voor het beschikbaarstellen van de Internetbron in de huidig vorm. Bijvoorbeeld een uitgeversbedrijf, een universiteitsafdeling.</Attribute>
+        </Language>
+        <!-- Finnish -->
+        <Language code="fi">
+            <Attribute name="label"/>
+            <Attribute name="definition"/>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Interlingua -->
+        <Language code="ia">
+            <Attribute name="label">Editor</Attribute>
+            <Attribute name="definition">Un entitate responsabile pro disponibilizar le ressource.</Attribute>
+            <Attribute name="comment">Exemplos de editor include un persona, un organization, o un servicio. Typicamente se utiliza un nomine de editor pro indicar le entitate.</Attribute>
+        </Language>
+        <!-- Marathi -->
+        <Language code="mr">
+            <Attribute name="label">à€ªà¥à€°à€à€Ÿà€¶à€</Attribute>
+            <Attribute name="definition">à€®à€Ÿà€¹à€¿à€€à¥à€žà€Ÿà€ à€Ÿ  à€à€ªà€²à€¬à¥à€§ à€à€°à¥à€š à€Šà¥à€£à€Ÿà€°à€Ÿ</Attribute>
+            <Attribute name="comment">à€à€Šà€Ÿ.à€ à€ªà¥à€°à€à€Ÿà€¶à€ , à€ªà¥à€°à€à€Ÿà€¶à€š  à€žà€à€žà¥à€¥à€Ÿ, à€žà¥à€µà€Ÿ    à€®à€Ÿà€¹à€¿à€€à¥ à€à€Ÿà€ªà¥à€² à€°à¥à€ªà€Ÿà€€  à€
+à€¥à€µà€Ÿ à€à€à€à€°à€šà¥à€ à€µà€° à€à€ªà€²à€¬à¥à€§ à€à€°à¥à€š à€Šà¥à€£à€Ÿà€°à€Ÿ</Attribute>
+        </Language>
+        <!-- Tamil -->
+        <Language code="ta">
+            <Attribute name="label">à®ªà®¿à®°à®à¯à®°à®à®°à¯à®€à¯à®€à®Ÿ</Attribute>
+            <Attribute name="definition">à®µà®³à®€à¯à®€à¯ à®à®¿à®à¯à®à¯à® à®à¯à®¯à¯à®€à®€à®°à¯à®à¯à®à¯ à®ªà¯à®±à¯à®ªà¯à®ªà¯à®³à¯à®³ à®à®°à¯ à®ªà¯à®°à¯à®³à¯.</Attribute>
+            <Attribute name="comment">à®à®€à®Ÿà®à®°à®£à®®à¯: à®à®°à¯ à®ªà®¿à®°à®à¯à®°à®à®°à¯à®€à¯à®€à®Ÿ à®à®©à¯à®±à®Ÿà®²à¯ à®à®°à¯ à®šà®ªà®°à¯, à®à®°à¯ à®à¯à®Žà¯, à®
+à®²à¯à®²à¯à®€à¯ à®à®°à¯ à®à¯à®µà¯. à®
+à®šà¯à®€ à®ªà¯à®°à¯à®³à¯ à®à¯à®±à®¿à®ªà¯à®ªà®¿à® à®ªà®¿à®°à®à¯à®°à®à®°à¯à®€à¯à®€à®Ÿà®µà®¿à®©à¯ à®ªà¯à®¯à®°à¯ à®à®ªà®¯à¯à®à®ªà®à¯à®€à¯à®€à®µà¯à®®à¯.</Attribute>
+        </Language>
+        <!-- Vietnamese -->
+        <Language code="vi">
+            <Attribute name="label">CÆ¡ quan xuáº¥t báº£n</Attribute>
+            <Attribute name="definition">Tá» chá»©c chá»u trÃ¡ch nhiá»m lÃ m cho nguá»n tin nÃ y cÃ³ thá» truy xuáº¥t ÄÆ°á»£c</Attribute>
+            <Attribute name="comment">Ghi tÃªn cÃ¡ nhÃ¢n, tá» chá»©c cÆ¡ quan chá»u trÃ¡ch nhiá»m vá» xuáº¥t báº£n nguá»n tin</Attribute>
+        </Language>
+        <!-- Non-language specific -->
+        <Attribute name="version">1.1</Attribute>
+        <Attribute language="en" name="registration_authority">Dublin Core Metadata Initiative</Attribute>
+        <Attribute name="obligation">Optional</Attribute>
+        <Attribute name="datatype">Character String</Attribute>
+        <Attribute name="maximum_occurrence">Unlimited</Attribute>
+    </Element>
+    <Element name="Contributor">
+        <!-- English -->
+        <Language code="en">
+            <Attribute name="label">Contributor</Attribute>
+            <Attribute name="definition">An entity responsible for making contributions to the content of the resource.</Attribute>
+            <Attribute name="comment">Examples of a Contributor include a person, an organisation, or a service. Typically, the name of a Contributor should be used to indicate the entity.</Attribute>
+        </Language>
+        <!-- Maori -->
+        <Language code="mi">
+            <Attribute name="label">Kaiwhakaaro</Attribute>
+            <Attribute name="definition">Te putahi nana, na ratou ranei nga whakakaupapatanga whakaaro o te rauemi.</Attribute>
+            <Attribute name="comment">Ko te tangata, he putahitanga, he ratonga ranei etahi tauira Kaiwhakaaro. Ko te tikanga ka whakamahia te ingoa o te Kaiwhakaaro hei tohu i te putahi.</Attribute>
+        </Language>
+        <!-- French -->
+        <Language code="fr">
+            <Attribute name="label">Contributeur</Attribute>
+            <Attribute name="definition">Une entitÃ© qui a contribuÃ© Ã  la crÃ©ation du contenu de la ressource.</Attribute>
+            <Attribute name="comment">Exemples de Contributeur incluent une personne, une organisation, ou un service. Typiquement, le nom d&apos;un contributeur devrait Ãªtre utilisÃ© ici pour dÃ©signer l&apos;entitÃ©.</Attribute>
+        </Language>
+        <!-- Russian -->
+        <Language code="ru">
+            <Attribute name="label">Ð¡ÐŸÐžÑÐ¿ÐŸÐ»ÐœÐžÑÐµÐ»Ñ</Attribute>
+            <Attribute name="definition">ÐÐžÑÐŸ, Ð²ÐœÐµÑÑÐµÐµ Ð²ÐºÐ»Ð°ÐŽ Ð² ÑÐŸÐ·ÐŽÐ°ÐœÐžÐµ ÑÐŸÐŽÐµÑÐ¶Ð°ÐœÐžÑ ÑÐµÑÑÑÑÐ°.</Attribute>
+            <Attribute name="comment">ÐÑÐžÐŒÐµÑÑ Ð¡ÐŸÐžÑÐ¿ÐŸÐ»ÐœÐžÑÐµÐ»Ñ Ð²ÐºÐ»ÑÑÐ°ÑÑ Ð¿ÐµÑÑÐŸÐœÑ, ÐŸÑÐ³Ð°ÐœÐžÐ·Ð°ÑÐžÑ ÐžÐ»Ðž ÑÐ»ÑÐ¶Ð±Ñ. ÐÐ±ÑÑÐœÐŸ ÐžÐŒÑ Ð¡ÐŸÐžÑÐ¿ÐŸÐ»ÐœÐžÑÐµÐ»Ñ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÑÑÑ ÐŽÐ»Ñ ÐžÐœÐŽÐžÐºÐ°ÑÐžÐž ÐŸÐ±ÑÐµÐºÑÐ°.</Attribute>
+        </Language>
+        <!-- Spanish -->
+        <Language code="es">
+            <Attribute name="label">Otros Colaboradores</Attribute>
+            <Attribute name="definition">Una persona u organizacion que haya tenido una contribuciÃ³n intelectual significativa en la creaciÃ³n del recurso pero cuyas contribuciones son secundarias en comparaciÃ³n a las de las personas u organizaciones especificadas en el elementeo Creator (por ejemplo, editor, ilustrador y traductor).</Attribute>
+        </Language>
+        <!-- Arabic -->
+        <Language code="ar">
+            <Attribute name="label">Ø§ÙÙ
+Ø³Ø§ÙÙ
+ Ø§ÙØ§Ø®Ø±</Attribute>
+            <Attribute name="definition">ÙÙ Ø§ÙØŽØ®Øµ Ø§Ù Ø§ÙÙ
+Ø€Ø³Ø³Ø© Ø§ÙØºÙØ± Ù
+Ø°ÙÙØ± ØµØ±Ø§Ø­Ø© ÙÙ Ø¹Ø§Ù
+Ù &quot; Ø§ÙÙ
+ØšØ¯Ø¹ &quot; Ù Ø§ÙØ°Ù ÙØ¯Ù
+ Ù
+Ø³Ø§ÙÙ
+Ø§Øª ÙÙØ±ÙØ© ÙØ§Ù
+Ø© ÙÙÙ
+ØµØ¯Ø±, ÙÙÙ Ù
+Ø³Ø§ÙÙ
+ØªÙØªØšÙÙ    Ø«Ø§ÙÙÙØ© Ù
+ÙØ§Ø±ÙØ© Ù
+Ø¹ Ø§ÙØŽØ®Øµ Ø£Ù Ø§ÙÙ
+Ø€Ø³Ø³Ø© Ø§ÙÙ
+Ø°ÙÙØ±Ø© ÙØµØ§ ÙÙ Ø¹Ø§Ù
+Ù &quot; Ø§ÙÙ
+ÙØŽØŠ &quot; Ù
+Ø«ÙØ§Ù Ù
+ØµØ­Ø­, Ø§ÙÙ
+ØªØ±Ø¬Ù
+, Ø§Ù Ø§ÙÙ
+ÙØ³Ø±</Attribute>
+        </Language>
+        <!-- Chinese - Simplified -->
+        <Language code="cn">
+            <Attribute name="label">å
+¶ä»èŽ£ä»»è
+</Attribute>
+            <Attribute name="definition">å¯¹èµæºçå
+å®¹äœåºèŽ¡ç®çå
+¶ä»å®äœã</Attribute>
+            <Attribute name="comment">å
+¶ä»èŽ£ä»»è
+çå®äŸå¯å
+æ¬äžªäººãç»ç»ææé¡¹æå¡ãäžè¬èèšïŒçšå
+¶ä»èŽ£ä»»è
+çåå­æ¥æ è¯è¿äžæ¡ç®ã</Attribute>
+        </Language>
+        <!-- Czech -->
+        <Language code="cs">
+            <Attribute name="label">PÅispÄvatel</Attribute>
+            <Attribute name="definition">Entita, kterÃ¡ pÅispÄla k vytvoÅenÃ­ obsahu zdroje.</Attribute>
+            <Attribute name="comment">PÅÃ­klady PÅispÄvatele zahrnujÃ­ osobu, organizaci nebo sluÅŸbu. K oznaÄenÃ­ entity se typicky pouÅŸÃ­vÃ¡ jmÃ©no pÅispÄvatele.</Attribute>
+        </Language>
+        <!-- Dutch -->
+        <Language code="nl">
+            <Attribute name="label">Andere medewerkers</Attribute>
+            <Attribute name="definition">Een persoon of organisatie die een belangrijke bijdrage heeft geleverd, maar die secondair is aan de persoon of organisatie die bij &quot;Creator&quot; genoemd wordt. Gedacht kan worden aan editors, vertalers en illustrators.</Attribute>
+        </Language>
+        <!-- Finnish -->
+        <Language code="fi">
+            <Attribute name="label"/>
+            <Attribute name="definition"/>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Interlingua -->
+        <Language code="ia">
+            <Attribute name="label">Contribuente</Attribute>
+            <Attribute name="definition">Un entitate responsabile pro facer contributiones al contento del ressource.</Attribute>
+            <Attribute name="comment">Exemplos de contribuente include un persona, un organization, o un servicio. Typicamente se utiliza un nomine de contribuente pro indicar le entitate.</Attribute>
+        </Language>
+        <!-- Marathi -->
+        <Language code="mr">
+            <Attribute name="label"> à€žà€¹à€¯à¥à€à€, à€žà€¹à€¯à¥à€à¥, à€žà€¹à€Ÿà€¯à¥à€¯à€</Attribute>
+            <Attribute name="definition">à€®à€Ÿà€¹à€¿à€€à¥à€žà€Ÿà€ à€Ÿ à€žà€à€à€²à¥à€€ à€à€°à€£à¥à¥à€Ÿà€ž  à€®à€Šà€€ à€à€°à€£à€Ÿà€°à¥ à€µà¥à€¯à€à¥à€€à¥</Attribute>
+            <Attribute name="comment">à€à€Šà€Ÿ.à€ à€µà¥à€¯à€à¥à€€à¥, à€žà¥à€µà€Ÿ, à€žà€à€žà¥à€¥à€Ÿ</Attribute>
+        </Language>
+        <!-- Tamil -->
+        <Language code="ta">
+            <Attribute name="label">à®ªà®à®à¯ à®à¯à®à¯à®€à¯à®€à®µà®°à¯</Attribute>
+            <Attribute name="definition">à®µà®³à®€à¯à®€à®¿à®©à¯ à®à®³à¯à®³à®à®à¯à®à®€à¯à®€à®¿à®²à¯ à®ªà®à®à¯ à®à¯à®à¯à®€à¯à®€à®°à¯à®à¯à®à¯ à®ªà¯à®±à¯à®ªà¯à®ªà¯à®³à¯à®³ à®à®°à¯ à®ªà¯à®°à¯à®³à¯.</Attribute>
+            <Attribute name="comment">à®à®€à®Ÿà®à®°à®£à®®à¯: à®à®°à¯ à®ªà®à®à¯ à®à¯à®à¯à®€à¯à®€à®µà®°à¯ à®à®©à¯à®±à®Ÿà®²à¯ à®à®°à¯ à®šà®ªà®°à¯, à®à®°à¯ à®à¯à®Žà¯, à®
+à®²à¯à®²à¯à®€à¯ à®à®°à¯ à®à¯à®µà¯. à®
+à®šà¯à®€ à®ªà¯à®°à¯à®³à¯ à®à¯à®±à®¿à®ªà¯à®ªà®¿à® à®ªà®à®à¯ à®à¯à®à¯à®€à¯à®€à®µà®°à¯ à®ªà¯à®¯à®°à¯ à®à®ªà®¯à¯à®à®ªà®à¯à®€à¯à®€à®µà¯à®®à¯.</Attribute>
+        </Language>
+        <!-- Vietnamese -->
+        <Language code="vi">
+            <Attribute name="label">Äá»ng tÃ¡c giáº£</Attribute>
+            <Attribute name="definition">PhÃ¡p nhÃ¢n tham gia ÄÃ³ng gÃ³p vÃ o viá»c táº¡o ra ná»i dung cá»§a nguá»n tin</Attribute>
+            <Attribute name="comment">PhÃ¡p nhÃ¢n trong Contributor cÃ³ thá» lÃ  tÃ¡c giáº£ cÃ¡ nhÃ¢n hoáº·c cÆ¡ quan, tá» chá»©c, dá»ch vá»¥ (lÃ  tÃ¡c giáº£ táº­p thá») cÃ³ vai trÃ² quan trá»ng, song lÃ  vai trÃ² thá»© yáº¿u trong viá»c táº¡o ra ná»i dung. Nhá»¯ng phÃ¡p nhÃ¢n nÃ y khÃŽng ÄÆ°á»£c lá»±a chá»n ÄÆ°a vÃ o yáº¿u tá»  Creator (tÃ¡c giáº£)</Attribute>
+        </Language>
+        <!-- Non-language specific -->
+        <Attribute name="version">1.1</Attribute>
+        <Attribute language="en" name="registration_authority">Dublin Core Metadata Initiative</Attribute>
+        <Attribute name="obligation">Optional</Attribute>
+        <Attribute name="datatype">Character String</Attribute>
+        <Attribute name="maximum_occurrence">Unlimited</Attribute>
+    </Element>
+    <Element name="Date">
+        <!-- English -->
+        <Language code="en">
+            <Attribute name="label">Date</Attribute>
+            <Attribute name="definition">A date associated with an event in the life cycle of the resource.</Attribute>
+            <Attribute name="comment">Typically, Date will be associated with the creation or availability of the resource.  Recommended best practice for encoding the date value is defined in a profile of ISO 8601 and follows the YYYY-MM-DD format.</Attribute>
+        </Language>
+        <!-- Maori -->
+        <Language code="mi">
+            <Attribute name="label">Ra</Attribute>
+            <Attribute name="definition">He ra e whai panga ana ki te huringa ora o te rauemi.</Attribute>
+            <Attribute name="comment">Ko te tikanga, ka whai panga te ra ki te hanganga, te wateatanga ranei, o te rauemi. Ko te huarahi tino pai hei tohu i te uara o te ra (date value) kua whakaritea i roto i te whakaritenga IS0 8601 [W3CDTF], a, e whai atu ana ki te whakatakotoranga YYYY-MM-DD.</Attribute>
+        </Language>
+        <!-- French -->
+        <Language code="fr">
+            <Attribute name="label">Date</Attribute>
+            <Attribute name="definition">Une date associÃ©e avec un Ã©vÃ©nement dans le cycle de vie de la ressource.</Attribute>
+            <Attribute name="comment">Typiquement, une date sera associÃ©e Ã  la crÃ©ation ou Ã  la publication d&apos;une ressource. Il est fortement recommandÃ© d&apos;encoder la valeur de la date en utilisant le format dÃ©fini par l&apos;ISO 8601 [W3CDTF] sous la forme AAAA-MM-JJ.</Attribute>
+        </Language>
+        <!-- Russian -->
+        <Language code="ru">
+            <Attribute name="label">ÐÐ°ÑÐ°</Attribute>
+            <Attribute name="definition">ÐÐ°ÑÐ°, ÑÐ²ÑÐ·Ð°ÐœÐœÐ°Ñ Ñ ÑÐŸÐ±ÑÑÐžÐµÐŒ Ð² Ð¶ÐžÐ·ÐœÐµÐœÐœÐŸÐŒ ÑÐžÐºÐ»Ðµ ÑÐµÑÑÑÑÐ°.</Attribute>
+            <Attribute name="comment">ÐÐ±ÑÑÐœÐŸ ÐÐ°ÑÐ° Ð°ÑÑÐŸÑÐžÐžÑÑÐµÑÑÑ Ñ ÑÐŸÐ·ÐŽÐ°ÐœÐžÐµÐŒ ÐžÐ»Ðž ÐŽÐŸÑÑÑÐ¿ÐœÐŸÑÑÑÑ ÑÐµÑÑÑÑÐ°. ÐÐ° Ð¿ÑÐ°ÐºÑÐžÐºÐµ ÑÐµÐºÐŸÐŒÐµÐœÐŽÑÐµÑÑÑ ÐŽÐ»Ñ ÐºÐŸÐŽÐžÑÐŸÐ²ÐºÐž Ð·ÐœÐ°ÑÐµÐœÐžÑ ÐŽÐ°ÑÑ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑ ÐŸÐ¿ÑÐµÐŽÐµÐ»ÐµÐœÐžÐµ Ð¿ÑÐŸÑÐžÐ»Ñ ISO 8601 (Ð€ÐŸÑÐŒÐ°ÑÑ ÐŽÐ°ÑÑ Ðž Ð²ÑÐµÐŒÐµÐœÐž W3C), ÐºÐŸÑÐŸÑÐŸÐµ Ð¿ÐŸÐŽÐŽÐµÑÐ¶ÐžÐ²Ð°ÐµÑ ÑÐŸÑÐŒÐ°Ñ ÐÐÐÐ-ÐÐ-ÐÐ.</Attribute>
+        </Language>
+        <!-- Spanish -->
+        <Language code="es">
+            <Attribute name="label">Fecha</Attribute>
+            <Attribute name="definition">Una fecha en la que el recurso se puso a disposiciÃ³n del usuario en su forma actual. Esta fecha no ha de confundirse con la que pertenece al elemento Coverage, que serÃ­a asociada con el recurso sÃ³lo en la medida en que el contenido intelectual estÃ¡ de algÃºn modo relacionado con esa fecha. Recomendamos la utiliazaciÃ³n de uno de los formatos definidos en el documento &quot;Date and Time Formats&quot;, http://www.w3.org/TR/NOTE-datetime basado en la norma ISO 8601 que incluye, entre otras, fechas en el formato AAAA y AAAA-MM-DD. De esta forma la fecha 1994-11-05 corresponderÃ­a al 5 de Noviembre de 1994.</Attribute>
+        </Language>
+        <!-- Arabic -->
+        <Language code="ar">
+            <Attribute name="label">Ø§ÙØªØ§Ø±Ø®</Attribute>
+            <Attribute name="definition">ÙÙ Ø§ÙØªØ§Ø±ÙØ® Ø§ÙÙ
+ØªØ¹ÙÙ ØšÙÙØª ÙØŽØŠ Ø£Ù ØªÙÙØ± Ø§ÙÙ
+ØµØ¯Ø± . Ù ÙØ¬Øš Ø£Ù ÙØ§ ÙØ®ÙØ· ÙØ°Ø§ Ø§ÙØªØ§Ø±ÙØ® Ø§ÙØ¹Ø§ØŠØ¯ ÙØ¹Ø§Ù
+Ù Ø§ÙØªØºØ·ÙØ© , Ù Ø§ÙØ° Ù ÙØ¬Øš Ø£Ù    ÙÙØ­Ù ØšØ§ÙÙ
+ØµØ¯Ø± ÙÙØ· Ù
+Ù ÙØ§Ø­ÙØ© Ø§ÙÙ
+Ø­ØªÙÙØ§ÙÙÙØ±Ù ÙÙÙÙÙ ÙÙØ¹Ø§ Ù
+Ø§ ÙÙ ÙØ°Ø§ Ø§ÙØªØ§Ø±ÙØ®. Ø§ÙØµÙØºØ© Ø§ÙÙ
+Ø³Ø«Ø­Ø³ÙØ© ÙÙØ§Ø­Ø³Ù Ø§ÙÙ
+ØªØ¹Ø§Ø±Ù Ø¹ÙÙÙ    Ø¹ÙØ¯ Ø§ÙØªØ·ØšÙÙ ÙÙ Ø§ÙØµÙØºØ© Ø§ÙÙ
+Ø¹ØªÙ
+Ø¯Ø© ÙÙ ØªØŽÙÙÙ (ISO 8601) ØµÙØºØ© ØªØ§Ø±ÙØ® Ø§ÙÙÙÙ
+ Ù Ø§ÙÙÙØª ) Ø§Ø¹ØªÙ
+Ø§Ø¯Ø§ Ø¹ÙÙ (ISO 8601) Ø§ÙÙ
+ÙØ§Ø­ØžØ© Ø§ÙÙÙÙØ© http://www.w3.org/TR/NOTE-datetime, W3C. ÙÙÙ    ÙØ°Ø§ Ø§ÙÙØ³Ù , Ù
+Ø«ÙØ§, ØªØ§Ø±ÙØ® Ø§ÙÙÙÙ
+ 1994-11-04 ÙÙØ§ØžØ± ÙÙÙ
+ 5 ÙÙÙÙ
+ØšØ± 1994</Attribute>
+        </Language>
+        <!-- Chinese - Simplified -->
+        <Language code="cn">
+            <Attribute name="label">æ¥æ</Attribute>
+            <Attribute name="definition">äžèµæºçåœåšæäž­çäžäžªäºä»¶çžå
+³çæ¶éŽã</Attribute>
+            <Attribute name="comment">äžè¬èèšïŒæ¥æåºäžèµæºçåå»ºæåºçæ¥æçžå
+³ãå»ºè®®éçšçæ¥ææ ŒåŒåºç¬ŠåISO 8601 [W3CDTF]è§    èïŒå¹¶äœ¿çšYYYY-MM-DDçæ ŒåŒã</Attribute>
+        </Language>
+        <!-- Czech -->
+        <Language code="cs">
+            <Attribute name="label">Datum</Attribute>
+            <Attribute name="definition">Datum spojenÃ© s urÄitou udÃ¡lostÃ­ bÄhem existence zdroje.</Attribute>
+            <Attribute name="comment">Datum bude typicky spojeno s vytvoÅenÃ­m nebo zpÅÃ­stupnÄnÃ­m zdroje. DoporuÄenÃœ postup pro kÃ³dovÃ¡nÃ­ hodnoty data je definovÃ¡n v ISO 8601 [W3CDTF]: formÃ¡t RRRR-MM-DD.</Attribute>
+        </Language>
+        <!-- Dutch -->
+        <Language code="nl">
+            <Attribute name="label">Datum</Attribute>
+            <Attribute name="definition">De datum van de totstandkoming of beschikbaarstelling van een Internetbron. Deze datum moet niet verward worden met de datum in &quot;Coverage&quot;. De datum in &quot;Coverage&quot; geeft de tijdsperiode van de inhoud van de Internetbron aan. Voorgeschreven wordt de ISO 8601 standaard voor datum, zoals beschreven in W3C Technical Note http://www.w3.org/TR/NOTE-datetime. Hierin wordt het formaat YYYY-MM-DD beschreven. Het formaat YYYY-MM-DD wordt de voorgeschreven standaard. 3 September 1998 wordt in dit geval 1998-09-03.</Attribute>
+        </Language>
+        <!-- Finnish -->
+        <Language code="fi">
+            <Attribute name="label"/>
+            <Attribute name="definition"/>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Interlingua -->
+        <Language code="ia">
+            <Attribute name="label">Data</Attribute>
+            <Attribute name="definition">Un data associate a un evento in le cyclo vital del ressource.</Attribute>
+            <Attribute name="comment">Typicamente le data es associate al creation o disponibilization del ressource. Le practica recommendate pro codificar le valor del datas es definite in un profilo de ISO 8601 [W3CDTF] e seque le formato AAAA-MM-DD.</Attribute>
+        </Language>
+        <!-- Marathi -->
+        <Language code="mr">
+            <Attribute name="label">à€€à€Ÿà€°à¥à€,  à€Šà€¿à€šà€Ÿà€à€</Attribute>
+            <Attribute name="definition">à€®à€Ÿà€¹à€¿à€€à¥à€žà€Ÿà€ à€Ÿ à€€à€¯à€Ÿà€° à€à¥à€²à¥à€¯à€Ÿà€à¥ à€€à€Ÿà€°à¥à€</Attribute>
+            <Attribute name="comment">à€€à€Ÿà€°à¥à€  à€²à€¿à€¹à¥à€£à¥à€¯à€Ÿà€à¥ à€žà¥à€µà€°à¥à€ª à€ à€µà€°à¥à€·. à€®à€¹à€¿à€šà€Ÿ. à€Šà€¿à€µà€ž à¥§à¥¯à¥«à¥Š. à¥Šà¥ª. à¥Šà¥ª</Attribute>
+        </Language>
+        <!-- Tamil -->
+        <Language code="ta">
+            <Attribute name="label">à®€à¯à®€à®¿</Attribute>
+            <Attribute name="definition">à®µà®³à®€à¯à®€à®¿à®©à¯ à®à®¯à¯à®³à¯ à®à¯à®Žà®±à¯à®à®¿à®¯à®¿à®²à¯ à®à¯à®°à¯à®šà¯à®€ à®à®°à¯ à®šà®¿à®à®Žà¯à®µà®¿à®©à¯ à®€à¯à®€à®¿.</Attribute>
+            <Attribute name="comment">à®à®€à®Ÿà®à®°à®£à®®à¯: à®à®°à¯ à®µà®³à®€à¯à®€à¯ à®à®£à¯à®à®Ÿà®à¯à®à®ªà¯à®ªà®à¯à® à®
+à®²à¯à®²à®€à¯ à®à®¿à®à¯à®à¯à®à®à¯à®à¯à®à®¿à®¯ à®€à¯à®€à®¿.  à®€à¯à®€à®¿à®¯à®¿à®©à¯ à®®à®€à®¿à®ªà¯à®ªà¯ à®à¯à®±à®¿à®¯à¯à®à¯ à®à®à¯à®à¯à®µà®€à®°à¯à®à¯à®à¯ ISO 8601 à®²à¯ à®µà®¿à®µà®°à®¿à®à¯à®à®ªà¯à®ªà®à¯à®à¯ YYYY-MM-DD à®µà®à®¿à®µà®®à¯ à®à¯à®£à¯à®à®€à¯ à®šà®Ÿà®à¯à®à®³à¯ à®®à¯à®²à¯à®€à®°à®®à¯ à®à¯à®¯à®²à®Ÿà® à®à®¿à®ªà®Ÿà®°à®à¯ à®à¯à®¯à¯à®à®¿à®°à¯à®®à¯.</Attribute>
+        </Language>
+        <!-- Vietnamese -->
+        <Language code="vi">
+            <Attribute name="label">Thá»i gian</Attribute>
+            <Attribute name="definition">Thá»i gian liÃªn quan Äáº¿n vÃ²ng Äá»i cá»§a nguá»n tin (táº¡o láº­p, sá»­a Äá»i, v.v..)</Attribute>
+            <Attribute name="comment">NgÃ y thÃ¡ng cÃ³ thá» lÃ  thá»i gian liÃªn quan Äáº¿n viá»c táº¡o ra, hiá»u ÄÃ­nh hoáº·c lÃ m cho nguá»n tin tiáº¿p cáº­n ÄÆ°á»£c. Khuyáº¿n nghá» sá»­ dá»¥ng cÃ¡ch trÃ¬nh bÃ y thá»i gian theo tiÃªu chuáº©n ISO 8601 vÃ  theo khá» máº«u Bá»n sá» nÄm-hai sá» thÃ¡ng-hai sá» ngÃ y (YYYY-MM-DD)</Attribute>
+        </Language>
+        <!-- Non-language specific -->
+        <Attribute name="version">1.1</Attribute>
+        <Attribute language="en" name="registration_authority">Dublin Core Metadata Initiative</Attribute>
+        <Attribute name="obligation">Optional</Attribute>
+        <Attribute name="datatype">Character String</Attribute>
+        <Attribute name="maximum_occurrence">Unlimited</Attribute>
+    </Element>
+    <Element name="Type">
+        <!-- English -->
+        <Language code="en">
+            <Attribute name="label">Resource Type</Attribute>
+            <Attribute name="definition">The nature or genre of the content of the resource.</Attribute>
+            <Attribute name="comment">Type includes terms describing general categories, functions, genres, or aggregation levels for content. Recommended best practice is to select a value from a controlled vocabulary (for example, the working draft list of Dublin Core Types). To describe the physical or digital manifestation of the resource, use the FORMAT element.</Attribute>
+        </Language>
+        <!-- Maori -->
+        <Language code="mi">
+            <Attribute name="label">Tumomo</Attribute>
+            <Attribute name="definition">Te ahua, te tu-ahuatanga ranei o nga kaupapa o te rauemi.</Attribute>
+            <Attribute name="comment">Kei roto i te Tumomo nga kupu whakaatu i nga wehewehenga whanui, nga aheinga, nga tu-ahuatanga, te whakaritenga ranei o nga taumata o te/ nga kaupapa. Ko te huarahi tino pai kua tohua, ko te tipako i tetahi uara mai i nga kupu kua whakaritea (hei tauira, ko te tauira rarangi e whakamahia ana o nga Dublin Core Types [DCT1]. Hei whakaatu i te whakatinanatanga o te rauemi, whakamahia ko te huanga WHAKATAKOTORANGA (FORMAT).</Attribute>
+        </Language>
+        <!-- French -->
+        <Language code="fr">
+            <Attribute name="label">Type</Attribute>
+            <Attribute name="definition">La nature ou le genre du contenu de la ressource.</Attribute>
+            <Attribute name="comment">Type inclut des termes dÃ©crivant des catÃ©gories, fonctions ou genres gÃ©nÃ©raux pour le contenu, ou des niveaux d&apos;agrÃ©gation. Il est recommandÃ© de choisir la valeur du type dans une liste de vocabulaire contrÃŽlÃ© (par exemple, la liste provisoire de Types du Dublin Core[DCT1]). Pour dÃ©crire la matÃ©rialisation physique ou digitale de la ressource, il faut utiliser l&apos;Ã©lÃ©ment Format.</Attribute>
+        </Language>
+        <!-- Russian -->
+        <Language code="ru">
+            <Attribute name="label">Ð¢ÐžÐ¿ ÑÐµÑÑÑÑÐ°</Attribute>
+            <Attribute name="definition">ÐÑÐžÑÐŸÐŽÐ° ÐžÐ»Ðž Ð¶Ð°ÐœÑ ÑÐŸÐŽÐµÑÐ¶Ð°ÐœÐžÑ ÑÐµÑÑÑÑÐ°.</Attribute>
+            <Attribute name="comment">Ð¢ÐžÐ¿ Ð²ÐºÐ»ÑÑÐ°ÐµÑ ÑÐµÑÐŒÐžÐœÑ, ÐŸÐ¿ÐžÑÑÐ²Ð°ÑÑÐžÐµ ÐŸÐ±ÑÐžÐµ ÐºÐ°ÑÐµÐ³ÐŸÑÐžÐž, ÑÑÐœÐºÑÐžÐž, Ð¶Ð°ÐœÑÑ ÐžÐ»Ðž ÐŸÐ±ÑÐµÐŽÐžÐœÐµÐœÐœÑÐµ ÑÑÐŸÐ²ÐœÐž ÑÐŸÐŽÐµÑÐ¶Ð°ÐœÐžÑ. ÐÐ»Ñ Ð¿ÑÐ°ÐºÑÐžÑÐµÑÐºÐŸÐ³ÐŸ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÑ ÑÐµÐºÐŸÐŒÐµÐœÐŽÑÐµÑÑÑ Ð²ÑÐ±ÐžÑÐ°ÑÑ Ð·ÐœÐ°ÑÐµÐœÐžÐµ ÐžÐ· ÐºÐŸÐœÑÑÐŸÐ»ÐžÑÑÐµÐŒÐŸÐ³ÐŸ ÑÐ»ÐŸÐ²Ð°ÑÑ (ÐœÐ°Ð¿ÑÐžÐŒÐµÑ, ÑÐ°Ð±ÐŸÑÐµÐ³ÐŸ Ð¿ÑÐŸÐµÐºÑÐ° ÑÐ¿ÐžÑÐºÐ° Ð¢ÐžÐ¿ÐŸÐ² Dublin Core DCT1). ÐÐ»Ñ ÐŸÐ¿ÐžÑÐ°ÐœÐžÑ ÑÐžÐ·ÐžÑÐµÑ-ÐºÐŸÐ³ÐŸ ÐžÐ»Ðž ÑÐžÑÑÐŸÐ²ÐŸÐ³ÐŸ Ð¿ÑÐµÐŽÑÑÐ°Ð²Ð»ÐµÐœÐžÑ ÑÐµÑÑÑÑÐ° ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÑÑÑ ÑÐ»ÐµÐŒÐµÐœÑ Ð€ÐŸÑÐŒÐ°Ñ.</Attribute>
+        </Language>
+        <!-- Spanish -->
+        <Language code="es">
+            <Attribute name="label">Tipo del Recurso</Attribute>
+            <Attribute name="definition">La categorÃ­a del recurso, por ejemplo pÃ¡gina personal, romance, poema, minuta, diccionario. Para asegurar la interoperabilidad, Type deberÃ­a ser seleccionado de entre una lista de valores que actualmente se encuentra bajo desarrollo en un grupo de trabajo. En http://sunsite.berkeley.edu/Metadata/types.html se puede consultar el estado actual de la discusiÃ³n en torno a este tema.</Attribute>
+        </Language>
+        <!-- Arabic -->
+        <Language code="ar">
+            <Attribute name="label">ÙÙØ¹ Ø§ÙÙ
+ØµØ¯Ø±</Attribute>
+            <Attribute name="definition">ÙÙ ÙØŠØ© Ø§ÙÙ
+ØµØ¯Ø± , Ù
+Ø«ÙØ§ Ø§ÙØµÙØ­Ø© Ø§ÙØ§Ù
+, Ø±ÙØ§ÙØ© , ÙØ·Ø¹Ø© ØŽØ¹Ø±ÙØ© , ÙØ±ÙØ© Ø¹Ù
+Ù , ØªÙØ±ÙØ± ÙÙÙ , Ù
+ÙØ§Ù , ÙØ§Ù
+ÙØ³ . Ù Ù
+Ù Ø£Ø¬Ù Ø§ÙØªØ¹Ø§Ù
+Ù Ø§ÙÙ
+ØŽØªØ±Ù    ÙØ¬Øš Ø£Ù ÙØ®ØªØ§Ø± Ø§ÙÙÙØ¹ Ù
+Ù Ø§ÙÙØ§ØŠÙ
+Ø© Ø§ÙÙ
+Ø±ÙÙ
+Ø© ÙØ§ÙØªÙ ÙÙÙ
+ Ø§Ø¹Ø¯Ø§Ø¯ÙØ§ Ø­Ø§ÙÙØ§ Ø¶Ù
+Ù Ø­ÙÙØ§Øª ÙØ±ØŽØ© Ø¹Ù
+Ù</Attribute>
+        </Language>
+        <!-- Chinese - Simplified -->
+        <Language code="cn">
+            <Attribute name="label">èµæºç±»å</Attribute>
+            <Attribute name="definition">èµæºå
+å®¹çç¹åŸæç±»åã</Attribute>
+            <Attribute name="comment">èµæºç±»åå
+æ¬æè¿°èµæºå
+å®¹çäžè¬èçŽïŒåèœïŒç§å±ïŒæèç±»å±æ¬¡çæ¯è¯­ãå»ºè®®éçšæ¥èªäºåæ§è¯è¡š    äž­çåŒïŒäŸåŠDCMIç±»åè¯æ±è¡š[DCMITYPE]ïŒãèŠæè¿°èµæºçç©çææ°å­åè¡šç°åœ¢åŒïŒè¯·äœ¿çšâæ ŒåŒïŒFORMATïŒâå
+çŽ ã</Attribute>
+        </Language>
+        <!-- Czech -->
+        <Language code="cs">
+            <Attribute name="label">Typ zdroje</Attribute>
+            <Attribute name="definition">Povaha nebo druh obsahu zdroje.</Attribute>
+            <Attribute name="comment">Typ obsahuje termÃ­ny popisujÃ­cÃ­ obecnÃ© kategorie, funkce, druhy nebo agregaÄnÃ­ ÃºrovnÄ obsahu. DoporuÄuje se vybÃ­rat hodnotu z ÅÃ­zenÃ©ho slovnÃ­ku (napÅ. pracovnÃ­ nÃ¡vrh seznamu TypÅ¯ Dublin Core [DCT1]). K popisu fyzickÃ© nebo digitÃ¡lnÃ­ reprezentace zdroje uÅŸijte prvek FormÃ¡t.</Attribute>
+        </Language>
+        <!-- Dutch -->
+        <Language code="nl">
+            <Attribute name="label">Bestands type</Attribute>
+            <Attribute name="definition">Het soort Internetbron, bijvoorbeeld home page, gedicht, working paper, technical report, essay, woordenboek etc. De DC working groups zijn momenteel bezig met twee voorstellen; een minimalist draft: http://sunsite.berkeley.edu/Metadata/minimalist.html en een structuralist draft: http://sunsite.berkely.edu/Metadata/structuralist.html. Het wordt sterk aanbevolen om &quot;Type&quot; van deze lijsten te selecteren.</Attribute>
+        </Language>
+        <!-- Finnish -->
+        <Language code="fi">
+            <Attribute name="label"/>
+            <Attribute name="definition"/>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Interlingua -->
+        <Language code="ia">
+            <Attribute name="label">Typo del ressource</Attribute>
+            <Attribute name="definition">Le natura o genere del contento del ressource.</Attribute>
+            <Attribute name="comment">Le typo del ressource include terminos que describe categorias general, functiones, generes, o nivellos de aggregation pro le contento. Le practica recommendate es selectionar un valor a partir de un vocabulario controlate (per exemplo, le lista de schizzos de travalio de typos de Dublin Core [DCT1]). Pro describer le manifestation physic o digital del ressource, utiliza le elemento Formato.</Attribute>
+        </Language>
+        <!-- Marathi -->
+        <Language code="mr">
+            <Attribute name="label">à€ªà¥à€°à€à€Ÿà€°</Attribute>
+            <Attribute name="definition">à€®à€Ÿà€¹à€¿à€€à¥à€žà€Ÿà€ à¥à€¯à€Ÿà€à€Ÿà€ªà¥à€°à€à€Ÿà€°</Attribute>
+            <Attribute name="comment">à€®à€Ÿà€¹à€¿à€€à¥à€žà€Ÿà€ à¥à€¯à€Ÿà€à¥ à€µà€°à¥à€à¥à€à€°à€£, à€µà€°à¥à€à€µà€Ÿà€°à¥à€®à€§à¥à€¯à¥ à€à€à€Ÿà€Šà¥à€¯à€Ÿ à€šà¥à€à€Šà¥à€à€Ÿ à€®à¥à€à¥à€¯ à€à€à€ªà¥à€°à€à€Ÿà€°</Attribute>
+        </Language>
+        <!-- Tamil -->
+        <Language code="ta">
+            <Attribute name="label">à®µà®³à®®à¯ à®µà®à¯</Attribute>
+            <Attribute name="definition">à®µà®³à®€à¯à®€à®¿à®©à¯ à®à®³à¯à®³à®à®à¯à®à®€à¯à®€à®¿à®©à¯ à®ªà®Ÿà®©à¯à®®à¯ à®
+à®²à¯à®²à®€à¯ à®€à®°à®®à¯.</Attribute>
+            <Attribute name="comment">à®µà®à¯ à®à®©à¯à®°à®Ÿà®²à¯ à®ªà¯à®€à¯ à®ªà®¿à®°à®¿à®µà®¿à®©à¯à®à®³à¯, à®à¯à®¯à®²à¯à®à®³à¯, à®€à®°à®à¯à®à®³à¯, à®
+à®²à¯à®²à®€à¯  à®à®³à¯à®³à®à®à¯à®à®€à¯à®€à®¿à®©à¯ à®€à®¿à®°à®à¯à®à¯ à®šà®¿à®²à¯à®à®³à¯ à®à®©à¯à®ªà®µà®¯à®¿à®©à¯ à®ªà¯à®¯à®°à¯à®à®³à¯. à®à®à¯à®à¯à®ªà¯à®ªà®à¯à®€à¯à®€à®¿à®¯ à®à¯à®²à¯ à®µà®³à®€à¯à®€à®¿à®²à®¿à®°à¯à®šà¯à®€à¯ à®à®°à¯ à®®à®€à®¿à®ªà¯à®ªà¯ à®€à¯à®°à¯à®šà¯à®€à¯à®à¯à®ªà¯à®ªà®€à¯ à®šà®Ÿà®à¯à®à®³à¯ à®®à¯à®²à¯à®€à®°à®®à¯ à®à¯à®¯à®²à®Ÿà® à®à®¿à®ªà®Ÿà®°à®à¯ à®à¯à®¯à¯à®à®¿à®°à¯à®®à¯. (à®à®€à®Ÿà®à®°à®£à®®à¯: Dublin Core Types (à®à®ªà¯à®³à®¿à®©à¯ à®à¯à®°à¯ à®à¯à®ªà¯à®žà¯)à®ªà®£à®¿ à®à¯à®¯à¯à®µà®€à®°à¯à®à®Ÿà®© à®µà®°à¯à®µà¯ à®ªà®à¯à®à®¿à®¯à®²à¯). à®µà®³à®€à¯à®€à®¿à®©à¯ à®ªà®°à¯à®šà®¿à®²à¯ à®
+à®²à¯à®²à®€à¯ à®à®²à®à¯à®à®®à¯à®±à¯ à®µà¯à®³à®¿à®à®Ÿà®à¯à®à®²à¯ à®µà®¿à®µà®°à®¿à®ªà¯à®ªà®€à®°à¯à®à¯ FORMAT (à®ªà®à®¿à®µà®®à¯)à®à®±à¯à®ªà¯à®ªà¯ à®à®ªà®¯à¯à®à®¿à®à¯à®à®µà¯à®®à¯.</Attribute>
+        </Language>
+        <!-- Vietnamese -->
+        <Language code="vi">
+            <Attribute name="label">Thá» loáº¡i</Attribute>
+            <Attribute name="definition">MÃŽ táº£ báº£n cháº¥t hoáº·c thá» loáº¡i cá»§a ná»i dung cá»§a nguá»n tin</Attribute>
+            <Attribute name="comment">MÃŽ táº£ thá» loáº¡i cá»§a nguá»n tin</Attribute>
+        </Language>
+        <!-- Non-language specific -->
+        <Attribute name="version">1.1</Attribute>
+        <Attribute language="en" name="registration_authority">Dublin Core Metadata Initiative</Attribute>
+        <Attribute name="obligation">Optional</Attribute>
+        <Attribute name="datatype">Character String</Attribute>
+        <Attribute name="maximum_occurrence">Unlimited</Attribute>
+    </Element>
+    <Element name="Format">
+        <!-- English -->
+        <Language code="en">
+            <Attribute name="label">Format</Attribute>
+            <Attribute name="definition">The physical or digital manifestation of the resource.</Attribute>
+            <Attribute name="comment">Typically, Format may include the media-type or dimensions of the resource. Format may be used to determine the software, hardware or other equipment needed to display or operate the resource. Examples of dimensions include size and duration. Recommended best practice is to select a value from a controlled vocabulary (for example, the list of Internet Media Types [MIME] defining computer media formats).</Attribute>
+        </Language>
+        <!-- Maori -->
+        <Language code="mi">
+            <Attribute name="label">Whakatakotoranga</Attribute>
+            <Attribute name="definition">Te whakatinanatanga, te whakaputanga a-mati o te rauemi.</Attribute>
+            <Attribute name="comment">Ko te tikanga, ka taea te Whakatakotoranga te whakamahi hei whakarite i te rawa-ngohe (software), te rawa-maro (hardware), ma etahi taputapu ranei me matua whiwhi, hei whakahaere i te rauemi. Ko te rahi me te roanga etahi tauira hanga. Ko te tino huarahi kua tohua ko te tipako uara mai i tetahi whakaritenga kupu (hei tauira, te rarangi o nga Tumomo Papaho Ipurangi (Internet Media Types [MIME]) e whakaatu ana i nga whakatakotoranga papaho rorohiko.</Attribute>
+        </Language>
+        <!-- French -->
+        <Language code="fr">
+            <Attribute name="label">Format</Attribute>
+            <Attribute name="definition">La matÃ©rialisation physique ou digitale de la ressource.</Attribute>
+            <Attribute name="comment">Typiquement, Format peut inclure le media ou les dimensions de la ressource. Format peut Ãªtre utilisÃ© pour prÃ©ciser le logiciel, le matÃ©riel ou autre Ã©quipement nÃ©cessaire pour afficher ou faire fonctionner la ressource. Exemples de dimensions incluent la taille et la durÃ©e. Il est recommandÃ© de choisir la valeur du format dans une liste de vocabulaire contrÃŽlÃ©(par exemple, la liste des types de media dÃ©finis sur Internet [MIME]).</Attribute>
+        </Language>
+        <!-- Russian -->
+        <Language code="ru">
+            <Attribute name="label">Ð€ÐŸÑÐŒÐ°Ñ</Attribute>
+            <Attribute name="definition">Ð€ÐžÐ·ÐžÑÐµÑÐºÐŸÐµ ÐžÐ»Ðž ÑÐžÑÑÐŸÐ²ÐŸÐµ Ð¿ÑÐµÐŽÑÑÐ°Ð²Ð»ÐµÐœÐžÐµ ÑÐµÑÑÑÑÐ°.</Attribute>
+            <Attribute name="comment">ÐÐ±ÑÑÐœÐŸ Ð€ÐŸÑÐŒÐ°Ñ ÐŒÐŸÐ¶ÐµÑ Ð²ÐºÐ»ÑÑÐ°ÑÑ ÑÐžÐ¿ Ð°ÑÐŽÐžÐŸÐ²ÐžÐ·ÑÐ°Ð»ÑÐœÐŸÐ¹ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž (ÐŒÐµÐŽÐžÐ°-ÑÐžÐ¿) ÐžÐ»Ðž Ð²ÐµÐ»ÐžÑÐžÐœÑ ÑÐµÑÑÑÑÐ°. Ð€ÐŸÑÐŒÐ°Ñ ÐŒÐŸÐ¶ÐµÑ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÑÑÑÑ ÐŽÐ»Ñ ÐŸÐ¿ÑÐµÐŽÐµÐ»ÐµÐœÐžÑ Ð°Ð¿Ð¿Ð°ÑÐ°ÑÐœÐŸÐ³ÐŸ, Ð¿ÑÐŸÐ³ÑÐ°ÐŒÐŒÐœÐŸÐ³ÐŸ ÐŸÐ±ÐµÑÐ¿ÐµÑÐµÐœÐžÑ ÐžÐ»Ðž ÐŽÑÑÐ³ÐŸÐ³ÐŸ ÐŸÐ±ÐŸÑÑÐŽÐŸÐ²Ð°ÐœÐžÑ, ÐœÐµÐŸÐ±Ñ
+ÐŸÐŽÐžÐŒÐŸÐ³ÐŸ ÐŽÐ»Ñ Ð²ÐŸÑÐ¿ÑÐŸÐžÐ·Ð²ÐµÐŽÐµÐœÐžÑ ÐžÐ»Ðž ÑÐ°Ð±ÐŸÑÑ Ñ ÑÐµÑÑÑÑÐŸÐŒ. ÐÑÐžÐŒÐµÑÑ Ð²ÐµÐ»ÐžÑÐžÐœÑ Ð²ÐºÐ»ÑÑÐ°ÑÑ ÑÐ°Ð·ÐŒÐµÑ Ðž Ð¿ÑÐŸÐŽÐŸÐ»Ð¶ÐžÑÐµÐ»ÑÐœÐŸÑÑÑ. ÐÐ»Ñ Ð¿ÑÐ°ÐºÑÐžÑÐµÑÐºÐŸÐ³ÐŸ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÑ ÑÐµÐºÐŸÐŒÐµÐœÐŽÑÐµÑÑÑ Ð²ÑÐ±ÐžÑÐ°ÑÑ Ð·ÐœÐ°ÑÐµÐœÐžÐµ ÐžÐ· ÐºÐŸÐœÑÑÐŸÐ»ÐžÑÑÐµÐŒÐŸÐ³ÐŸ ÑÐ»ÐŸÐ²Ð°ÑÑ (ÐœÐ°Ð¿ÑÐžÐŒÐµÑ, ÑÐ¿ÐžÑÐºÐ° ÐÐµÐŽÐžÐ°-ÑÐžÐ¿ÐŸÐ² ÐÐœÑÐµÑÐœÐµÑ MIME, ÐŸÐ¿ÑÐµÐŽÐµÐ»ÑÑÑÐµÐ³ÐŸ ÐºÐŸÐŒÐ¿ÑÑÑÐµÑÐœÑÐµ ÑÐŸÑÐŒÐ°ÑÑ Ð°ÑÐŽÐžÐŸÐ²ÐžÐ·ÑÐ°Ð»ÑÐœÐŸÐ¹ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÐž).</Attribute>
+        </Language>
+        <!-- Spanish -->
+        <Language code="es">
+            <Attribute name="label">Formato</Attribute>
+            <Attribute name="definition">El formato de datos de un recurso, usado para identificar el software y posiblemente, el hardware que se necesitarÃ­a para mostrar el recurso. Para asegurar la interoperabilidad, los valores de Format deberÃ­an ser seleccionados de entre una lista de valores que actualmente se encuentra bajo desarrollo en un grupo de trabajo.</Attribute>
+        </Language>
+        <!-- Arabic -->
+        <Language code="ar">
+            <Attribute name="label">Ø§ÙØµÙØºØ©</Attribute>
+            <Attribute name="definition">ÙØ°Ù ØµÙØºØ© Ø§ÙÙ
+Ø¹ÙÙÙ
+Ø© Ø§ÙØ®Ø§ØµØ© ØšØ§ÙÙ
+ØµØ¯Ø± , Ù ØªØ³ØªØ®Ø¯Ù
+ ÙÙØªØ¹Ø±ÙÙ ØšØ§ÙØšØ±Ù
+Ø¬ÙØ§Øª ÙØ±ØšÙ
+Ø§ Ø§ÙØµÙØš ÙÙØ­Ø§Ø³ÙØš Ù Ø§ÙØªÙ ÙÙ
+ÙÙ Ø£Ù ÙØ­ØªØ§Ø¬    ÙÙØ§ ÙØ¹Ø±Ø¶ Ø£Ù ØªØŽØºÙÙ Ø§ÙÙ
+ØµØ¯Ø± . Ù
+Ù Ø£Ø¬Ù Ø§ÙØªØ¹Ø§Ù
+Ù Ø§ÙÙ
+ØŽØªØ±Ù, ÙØ¬Øš Ø£Ù ØªØ®ØªØ§Ø± Ø§ÙØµÙØºØ© Ù
+Ù Ø§ÙÙØ§ØŠÙ
+Ø© Ø§ÙÙ
+Ø±ÙÙ
+Ø© Ù Ø§ÙØªÙ ÙØªÙ
+ Ø§Ø¹Ø¯Ø§Ø¯ÙØ§    Ø­Ø§ÙÙØ§ Ø¶Ù
+Ù Ø­ÙÙØ§Øª ÙØ±ØŽØ© Ø¹Ù
+Ù</Attribute>
+        </Language>
+        <!-- Chinese - Simplified -->
+        <Language code="cn">
+            <Attribute name="label">æ ŒåŒ</Attribute>
+            <Attribute name="definition">èµæºçç©çææ°å­è¡šç°åœ¢åŒã</Attribute>
+            <Attribute name="comment">äžè¬èèšïŒæ ŒåŒå¯èœå
+æ¬èµæºçåªäœç±»åæèµæºçå€§å°ïŒæ ŒåŒå
+çŽ å¯ä»¥çšæ¥å³å®å±ç€ºææäœèµæºæé    çèœ¯ç¡¬ä»¶æå
+¶ä»çžåºè®Ÿå€ïŒäŸåŠå€§å°å
+æ¬èµæºæå çå­åšç©ºéŽåæç»­æ¶éŽãå»ºè®®éçšæ¥èªäºåæ§è¯è¡š    äž­çåŒïŒïŒäŸåŠInternetåªäœç±»å[MIME]å®ä¹è®¡ç®æºåªäœæ ŒåŒïŒã</Attribute>
+        </Language>
+        <!-- Czech -->
+        <Language code="cs">
+            <Attribute name="label">FormÃ¡t</Attribute>
+            <Attribute name="definition">FyzickÃ¡ nebo digitÃ¡lnÃ­ reprezentace zdroje.</Attribute>
+            <Attribute name="comment">Typicky mÅ¯ÅŸe FormÃ¡t obsahovat typ mÃ©dia nebo rozmÄry zdroje. FormÃ¡t lze pouÅŸÃ­vat k urÄenÃ­ softwaru, hardwaru nebo dalÅ¡Ã­ho zaÅÃ­zenÃ­ potÅebnÃ©ho k zobrazenÃ­ nebo k manipulaci se zdrojem. PÅÃ­klady rozmÄrÅ¯ zahrnujÃ­ velikost a dobu trvÃ¡nÃ­. DoporuÄuje se vybÃ­rat hodnotu z ÅÃ­zenÃ©ho slovnÃ­ku (napÅ. seznam typÅ¯ internetovÃœch mÃ©diÃ­ [MIME] definujÃ­cÃ­ formÃ¡ty poÄÃ­taÄovÃœch mÃ©diÃ­).</Attribute>
+        </Language>
+        <!-- Dutch -->
+        <Language code="nl">
+            <Attribute name="label">Format</Attribute>
+            <Attribute name="definition">Het data formaat van het Internetbestand. Dit gegeven kan gebruikt worden om systeemvereisten (hard- en software) te identificeren die nodig zijn voor raadpleging of bediening van de Internetbron. &quot;Format&quot; is nog in ontwikkeling bij de DC workshop. Uit compatibiliteitsoverwegingen wordt aanbevolen formaatgegevens te selecteren uit een gecontroleerde lijst. Formaten kunnen van de Internet Media Types (MIME types) lijst gekozen worden: http://www.isi.edu/in-notes/iana/assignments/media-types/media-types</Attribute>
+        </Language>
+        <!-- Finnish -->
+        <Language code="fi">
+            <Attribute name="label"/>
+            <Attribute name="definition"/>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Interlingua -->
+        <Language code="ia">
+            <Attribute name="label">Formato</Attribute>
+            <Attribute name="definition">Le manifestation physic o digital del ressource.</Attribute>
+            <Attribute name="comment">Typicamente le formato pote includer le typo de medio o dimensiones del ressource. Le formato pote esser utilizate pro determinar le software o le equipamento necessari pro exhibir o operar le ressource. Exemplos de dimensiones include grandessa e duration. Le practica recommendate es selectionar un valor de un vocabulario controlate (per exemplo, le lista de typos de medios de Internet [MIME] que defini formatos de medios).</Attribute>
+        </Language>
+        <!-- Marathi -->
+        <Language code="mr">
+            <Attribute name="label">à€°à€à€šà€Ÿ</Attribute>
+            <Attribute name="definition">à€®à€Ÿà€¹à€¿à€€à¥à€žà€Ÿà€ à¥à€¯à€Ÿà€à¥ à€°à€à€šà€Ÿ, à€šà€®à¥à€šà€Ÿà€¬à¥à€Š à€°à€à€šà€Ÿ</Attribute>
+            <Attribute name="comment">à€®à€Ÿà€¹à€¿à€€à¥à€žà€Ÿà€ à¥à€¯à€Ÿà€à¥ à€žà¥à€µà€°à¥à€ª, à€°à€à€šà€Ÿà€à€Šà€Ÿ. à€€à¥à€¯à€Ÿà€à¥ à€°à¥à€ª à€à€žà¥ à€ªà¥à€žà¥à€€à€à€°à¥à€ª, à€žà€à€à€£à€à¥à€¯ à€°à¥à€ª, à€µà€¿à€Šà¥à€¯à¥à€€ à€ªà€°à€®à€Ÿà€£à¥à€à€à¥à€¯à€Ÿ à€žà€¹à€Ÿà€¯à¥à€¯à€Ÿà€šà¥ à€žà€à€à€£à€à¥à€à¥à€€ à€®à€Ÿà€¹à€¿à€€à¥à€žà€Ÿà€ à€Ÿ</Attribute>
+        </Language>
+        <!-- Tamil -->
+        <Language code="ta">
+            <Attribute name="label">à®µà®à®¿à®µà®®à¯</Attribute>
+            <Attribute name="definition">à®µà®³à®€à¯à®€à®¿à®©à¯ à®ªà®°à¯à®šà®¿à®²à¯ à®
+à®²à¯à®²à®€à¯ à®à®²à®à¯à®à®®à¯à®±à¯ à®µà¯à®³à®¿à®à®Ÿà®à¯à®à®²à¯</Attribute>
+            <Attribute name="comment">à®à®€à®Ÿà®à®°à®£à®®à¯: à®à®à®à®à¯à®à®³à¯ à®µà®à¯ à®
+à®²à¯à®²à®€à¯ à®µà®³à®€à¯à®€à®¿à®©à¯ à®ªà®Ÿà®®à®Ÿà®£à®®à¯à®à®³à¯ à®µà®à®¿à®µà®€à¯à®€à®¿à®²à¯ à®à®°à¯à®à¯à®à¯à®®à¯. à®µà®³à®€à¯à®€à¯ à®à®¯à®à¯à®à¯à®µà®€à®°à¯à®à¯à®à¯ à®
+à®²à¯à®²à®€à¯ à®à®Ÿà®à¯à®à¯à®µà®€à®à¯à®à¯ à®µà¯à®£à¯à®à®¿à®¯  à®®à¯à®©à¯à®ªà¯à®°à¯à®³à¯, à®µà®©à¯à®ªà¯à®°à¯à®³à¯ à®
+à®²à¯à®²à®€à¯ à®µà¯à®°à¯ à®à®°à¯à®µà®¿à®à®³à¯ à®€à¯à®°à¯à®®à®Ÿà®©à®¿à®ªà®€à®°à¯à®à¯à®à¯ à®µà®à®¿à®µà®®à¯ à®à®ªà®¯à¯à®à®¿à®à¯à®à®²à®Ÿà®®à¯. à®ªà®°à¯à®®à®Ÿà®£à®€à¯à®€à®¿à®²à¯ à®
+à®³à®µà¯ à®
+à®²à¯à®²à®€à¯ à®šà¯à®à®¿à®à¯à®à¯à®®à¯ à®à®Ÿà®²à®®à¯ à®à®³à¯à®ªà¯à®ªà®à¯à®®à¯. à®à®°à¯ à®à®à¯à®à¯à®ªà¯à®ªà®à¯à® à®à¯à®²à¯ à®µà®³à®€à¯à®€à®¿à®²à®¿à®°à¯à®šà¯à®€à¯ (à®à®€à®Ÿà®à®°à®£à®®à¯: Internet Media Types [MIME] à®ªà®à¯à®à®¿à®¯à®²à¯ à®à®£à®¿à®ªà¯à®ªà¯à®±à®¿ à®à®à®à®à¯à®à®³à¯ à®µà®à®¿à®µà®à¯à®à®³à¯ à®µà®¿à®µà®°à®¿à®€à¯à®€à®¿à®°à¯à®à¯à®à¯à®®à¯)à®à®°à¯ à®®à®€à®¿à®ªà¯à®ªà¯ à®€à®¿à®°à®šà¯à®€à¯à®à¯à®ªà¯à®ªà®€à¯ à®šà®Ÿà®à¯à®à®³à¯ à®à®¿à®ªà®Ÿà®°à®à¯ à®à¯à®¯à¯à®¯à¯à®®à¯ à®®à¯à®²à¯à®€à®°à®®à¯ à®à¯à®¯à®²à¯.</Attribute>
+        </Language>
+        <!-- Vietnamese -->
+        <Language code="vi">
+            <Attribute name="label">Dáº¡ng máº«u dá»¯ liá»u</Attribute>
+            <Attribute name="definition">MÃŽ táº£ loáº¡i hÃ¬nh váº­t lÃœ hoáº·c sá» (Äiá»n tá»­) cá»§a nguá»n tin.</Attribute>
+            <Attribute name="comment">Vá» cÆ¡ báº£n, Yáº¿u tá» Format cung cáº¥p thÃŽng tin vá» váº­t mang tin cá»§a nguá»n tin náº¿u lÃ  nguá»n tin khÃŽng trá»±c tuyáº¿n. Yáº¿u tá» cÃ²n cung cáº¥p thÃŽng tin vá» kiá»u dá»¯ liá»u hoáº·c kÃ­ch thÆ°á»c, quy mÃŽ cá»§a nguá»n tin. Dáº¡ng máº«u cÃ³ thá» sá»­ dá»¥ng Äá» xÃ¡c Äá»nh pháº§n má»m, pháº§n cá»©ng hoáº·c thiáº¿t bá» khÃ¡c cáº§n thiáº¿t Äá» hiá»n thá» hoáº·c thao tÃ¡c vá»i nguá»n tin. Khuyáº¿n nghá» sá»­ dá»¥ng tá»« vá»±ng cÃ³ kiá»m soÃ¡t Äá» chá»n lá»±a thuáº­t ngá»¯ phÃ¹ há»£p (thÃ­ dá»¥ sá»­ dá»¥ng danh má»¥c tá»« chuáº©n tÃªn gá»i loáº¡i hÃ¬nh dá»¯ liá»u Internet (MIME) Äá» xÃ¡c Äá»nh dáº¡ng máº«u dá»¯ liá»u Äiá»n tá»­)</Attribute>
+        </Language>
+        <!-- Non-language specific -->
+        <Attribute name="version">1.1</Attribute>
+        <Attribute language="en" name="registration_authority">Dublin Core Metadata Initiative</Attribute>
+        <Attribute name="obligation">Optional</Attribute>
+        <Attribute name="datatype">Character String</Attribute>
+        <Attribute name="maximum_occurrence">Unlimited</Attribute>
+    </Element>
+    <Element name="Identifier">
+        <!-- English -->
+        <Language code="en">
+            <Attribute name="label">Resource Identifier</Attribute>
+            <Attribute name="definition">An unambiguous reference to the resource within a given context.</Attribute>
+            <Attribute name="comment">Recommended best practice is to identify the resource by means of a string or number conforming to a formal identification system. Example formal identification systems include the Uniform Resource Identifier (URI) (including the Uniform Resource Locator (URL)), the Digital Object Identifier (DOI) and the International Standard Book Number (ISBN).</Attribute>
+        </Language>
+        <!-- Maori -->
+        <Language code="mi">
+            <Attribute name="label">Taututanga</Attribute>
+            <Attribute name="definition">He tohutoro e hangai ana ki te rauemi i roto i tetahi horopaki.</Attribute>
+            <Attribute name="comment">Ko te tino huarahi kua tohua, ko te tautu i te rauemi ma tetahi aho (string), tau ranei, e hangai ana ki tetahi punaha taututanga okawa. Ko etahi punaha taututanga okawa ko te Taututanga Rauemi Orite (Uniform Resource Identifier - URI), te Taututanga Rauemi Tohu-wahi (Uniform Resource Locator - URL), Te Mea A-mati (Digital Object Identifier - DOI) me te Tau Pukapuka Aro Whanui o te Ao (International Standard Book Number - ISBN).</Attribute>
+        </Language>
+        <!-- French -->
+        <Language code="fr">
+            <Attribute name="label">Identifiant</Attribute>
+            <Attribute name="definition">Une rÃ©fÃ©rence non ambiguÃ« Ã  la ressource dans un contexte donnÃ©</Attribute>
+            <Attribute name="comment">Il est recommandÃ© d&apos;identifier la ressource par une chaÃ®ne de caractÃšre ou un nombre conforme Ã  un sytÃšme formel d&apos;identification. Exemples de systemes formels d&apos;identification incluent le &quot;Uniform Resource Identifier&quot; (URI) (qui inclut le &quot;Uniform Resource Locator&quot; (URL)), le &quot;Digital Object Identifier&quot;(DOI) et le &quot;International Standard Book Number&quot;(ISBN).</Attribute>
+        </Language>
+        <!-- Russian -->
+        <Language code="ru">
+            <Attribute name="label">ÐÐŽÐµÐœÑÐžÑÐžÐºÐ°ÑÐŸÑ ÑÐµÑÑÑÑÐ°</Attribute>
+            <Attribute name="definition">ÐÐŽÐœÐŸÐ·ÐœÐ°ÑÐœÐ°Ñ ÑÑÑÐ»ÐºÐ° ÐœÐ° ÑÐµÑÑÑÑ Ð² Ð¿ÑÐµÐŽÐµÐ»Ð°Ñ
+ ÐŽÐ°ÐœÐœÐŸÐ³ÐŸ ÐºÐŸÐœÑÐµÐºÑÑÐ°.</Attribute>
+            <Attribute name="comment">ÐÐ»Ñ Ð¿ÑÐ°ÐºÑÐžÑÐµÑÐºÐŸÐ³ÐŸ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÑ ÑÐµÐºÐŸÐŒÐµÐœÐŽÑÐµÑÑÑ ÐžÐŽÐµÐœÑÐžÑÐžÑÐžÑÐŸÐ²Ð°ÑÑ ÑÐµÑÑÑÑ Ð¿ÐŸÑÑÐµÐŽÑÑÐ²ÐŸÐŒ ÑÑÑÐŸÐºÐž ÐžÐ»Ðž ÑÐžÑÐ»Ð°, ÑÐŸÐŸÑÐ²ÐµÑÑÑÐ²ÑÑÑÐµÐ³ÐŸ ÑÐŸÑÐŒÐ°Ð»ÑÐœÐŸÐ¹ ÐžÐŽÐµÐœÑÐžÑÐžÐºÐ°ÑÐžÐŸÐœÐœÐŸÐ¹ ÑÐžÑÑÐµÐŒÐµ. ÐÑÐžÐŒÐµÑÑ ÑÐŸÑÐŒÐ°Ð»ÑÐœÑÑ
+ ÐžÐŽÐµÐœÑÐžÑÐžÐºÐ°ÑÐžÐŸÐœÐœÑÑ
+ ÑÐžÑÑÐµÐŒ Ð²ÐºÐ»ÑÑÐ°ÑÑ Ð£ÐœÐžÑÐžÑÐžÑÐŸÐ²Ð°ÐœÐœÑÐ¹ ÐÐŽÐµÐœÑÐžÑÐžÐºÐ°ÑÐŸÑ Ð ÐµÑÑÑÑÐ° (URI), (Ð²ÐºÐ»ÑÑÐ°Ñ Ð£ÐœÐžÑÐžÑÐžÑÐŸÐ²Ð°ÐœÐœÑÑÐ¹ ÐÐŸÐºÐ°ÑÐŸÑ Ð ÐµÑÑÑÑÐ° URL), ÐÐŽÐµÐœÑÐžÑÐžÐºÐ°ÑÐŸÑ ÐŠÐžÑÑÐŸÐ²ÐŸÐ³ÐŸ ÐÐ±ÑÐµÐºÑÐ° (DOI) Ðž ÐÐµÐ¶ÐŽÑÐœÐ°ÑÐŸÐŽÐœÑÐ¹ Ð¡ÑÐ°ÐœÐŽÐ°ÑÑÐœÑÐ¹ ÐÐœÐžÐ¶ÐœÑÐ¹ ÐÐŸÐŒÐµÑ (ISBN).</Attribute>
+        </Language>
+        <!-- Spanish -->
+        <Language code="es">
+            <Attribute name="label">Identificador del Recurso</Attribute>
+            <Attribute name="definition">Secuencia de caracteres usados para identificar unÃ­vocamente un recurso. Ejemplos para recursos en lÃ­nea pueden ser URLs y URNs (cuando estÃ©n implementados). Para otros recursos pueden ser usados otros formatos de identificadores, como por ejemplo ISBN (&quot;International Standard Book Number&quot; - NÃºmero Internacional Normalizado para Libros)</Attribute>
+        </Language>
+        <!-- Arabic -->
+        <Language code="ar">
+            <Attribute name="label">Ù
+Ø¹Ø±Ù Ø§ÙÙ
+ØµØ¯Ø±</Attribute>
+            <Attribute name="definition">ÙÙ Ù
+Ø¬Ù
+ÙØ¹Ø© Ø­Ø±ÙÙØ© Ø£Ù Ø±ÙÙ
+ ÙØ³ØªØ®Ø¯Ù
+ ÙØªØ¹Ø±ÙÙ Ø§ÙÙ
+ØµØ¯Ø± Ø§Ø­Ø¯ÙØ§ : Ø§ÙØ§Ù
+Ø«ÙØ© ÙØ°Ø§ÙÙ ÙÙ Ø§ÙÙ
+ØµØ§Ø¯Ø± Ø§ÙØŽØšÙÙØ©ØªØ¶Ù
+ ) URNs, URLs Ø¹ÙØ¯ ØšÙØ§ØŠÙØ§ (    ÙØ°ÙÙ ÙÙ
+ÙÙ Ø§Ø¹ØªØšØ§Ø± Ø§ÙÙ
+Ø¹Ø±ÙØ§Øª Ø§ÙØ¹Ø§ÙÙ
+ÙØ© Ø§ÙØ§Ø­Ø§Ø¯ÙØ© Ù
+Ø«Ù Ø§ÙØ±ÙÙ
+ Ø§ÙØ¯ÙÙÙ ÙØªØµÙÙÙ Ø§ÙÙØ§ØªØš (ISBN) Ù
+Ø±ØŽØ­Ø© ÙÙØ°Ø§ Ø§ÙØ¹Ø§Ù
+Ù</Attribute>
+        </Language>
+        <!-- Chinese - Simplified -->
+        <Language code="cn">
+            <Attribute name="label">èµæºæ è¯ç¬Š</Attribute>
+            <Attribute name="definition">åšç¹å®çèåŽå
+ç»äºèµæºçäžäžªæç¡®çæ è¯ã</Attribute>
+            <Attribute name="comment">å»ºè®®å¯¹èµæºçæ è¯éçšç¬Šåæäžæ­£åŒæ è¯äœç³»çå­ç¬Šäž²åæ°å­ç»åãäŸåŠæ­£åŒçæ è¯äœç³»å
+æ¬ç»äžèµ    æºæ è¯ç¬Š(URI) (å
+æ¬åäžèµæºå®äœç¬ŠURL)ãæ°å­å¯¹è±¡æ è¯ç¬Š(DOI)ååœé
+æ åä¹Šå·(ISBN)ã</Attribute>
+        </Language>
+        <!-- Czech -->
+        <Language code="cs">
+            <Attribute name="label">IdentifikÃ¡tor zdroje</Attribute>
+            <Attribute name="definition">JednoznaÄnÃœ odkaz na zdroj v rÃ¡mci danÃ©ho kontextu.</Attribute>
+            <Attribute name="comment">DoporuÄuje se identifikovat zdroj znakovÃœm ÅetÄzcem nebo ÄÃ­slem odpovÃ­dajÃ­cÃ­m nÄkterÃ©mu z formÃ¡lnÃ­ch identifikaÄnÃ­ch systÃ©mÅ¯. PÅÃ­klady formÃ¡lnÃ­ch identifikaÄnÃ­ch systÃ©mÅ¯ zahrnujÃ­ Uniform Resource Identifier (URI) (vÄetnÄ Uniform Resource Locator (URL)), Digital Object Identifier (DOI) a MezinÃ¡rodnÃ­ standardnÃ­ ÄÃ­slo knihy (ISBN).</Attribute>
+        </Language>
+        <!-- Dutch -->
+        <Language code="nl">
+            <Attribute name="label">Bestandsidentificatie</Attribute>
+            <Attribute name="definition">Een unieke string of nummer ter identificatie van de Internetbron. Voorbeelden zijn URL&apos;s of URN&apos;s Andere voorbeelden zijn International Standard Book Number (ISBN) of International Standard Serial Number (ISSN)</Attribute>
+        </Language>
+        <!-- Finnish -->
+        <Language code="fi">
+            <Attribute name="label"/>
+            <Attribute name="definition"/>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Interlingua -->
+        <Language code="ia">
+            <Attribute name="label">Identificator del ressource</Attribute>
+            <Attribute name="definition">Un referentia inambigue al ressource intra un date contexto.</Attribute>
+            <Attribute name="comment">Se recommenda identificar le ressource per medio de un catena de characteres o numero conforme a un systema formal de identification. Exemplos de systemas formal de identification include le Uniform Resource Identifier (URI) (includente le Uniform Resource Locator (URL)), le Digital Object Identifier (DOI) e le International Standard Book Number (ISBN).</Attribute>
+        </Language>
+        <!-- Marathi -->
+        <Language code="mr">
+            <Attribute name="label">à€à€³à€</Attribute>
+            <Attribute name="definition">à€®à€Ÿà€¹à€¿à€€à¥à€žà€Ÿà€ à¥à€¯à€Ÿà€à€Ÿ à€à€ à€
+à€°à¥à€¥à¥ à€žà€à€Šà€°à¥à€­</Attribute>
+            <Attribute name="comment">à€à€Šà€Ÿ. à€®à€Ÿà€¹à€¿à€€à¥à€à€Ÿà€³à¥à€¯à€Ÿà€µà€°à¥à€² à€ªà€€à¥à€€à€Ÿ, à€µà€¿à€¶à€¿à€·à¥à€  à€žà¥à€¥à€³,  à€ªà¥à€žà¥à€€à€à€Ÿà€à€Ÿ à€à€à€€à€°à€°à€Ÿà€·à¥à€à¥à€°à¥à€¯  à€®à€Ÿà€šà€ à€à¥à€°à€®à€Ÿà€à€,  à€®à€Ÿà€¹à€¿à€€à¥à€žà€Ÿà€ à¥à€¯à€Ÿà€à¥ à€à€³à€ à€ªà€à€µà€¿à€£à€Ÿà€°à€Ÿ à€à€à€à€°à€šà¥à€ à€µà€°à¥à€² à€ªà€€à¥à€€à€Ÿ</Attribute>
+        </Language>
+        <!-- Tamil -->
+        <Language code="ta">
+            <Attribute name="label">à®µà®³à®®à¯  à®à¯à®±à®¿à®ªà¯à®ªà®Ÿà®©à¯</Attribute>
+            <Attribute name="definition">à®à®°à¯ à®à¯à®Žà®²à®¿à®²à¯ à®à®°à¯à®à¯à®à¯à®®à¯ à®µà®³à®€à¯à®€à¯ à®à®°à¯ à®€à¯à®³à®¿à®µà®Ÿà®© à®à¯à®°à®¿à®ªà¯à®ªà¯.</Attribute>
+            <Attribute name="comment">à®à®°à¯ à®®à¯à®±à¯à®à®Ÿà®°à¯à®šà¯à®€ à®
+à®à¯à®¯à®Ÿà®³ à®
+à®®à¯à®ªà¯à®ªà¯ à®à®£à®à¯à®à®®à®Ÿà®©  à®à®°à¯ à®à®°à®®à¯ à®
+à®²à¯à®²à®€à¯ à®à®£à¯ à®à®ªà®¯à¯à®à®¿à®€à¯à®€à¯ à®µà®³à®€à¯à®€à¯ à®
+à®à®¯à®Ÿà®³à®®à¯ à®à¯à®¯à¯à®µà®€à¯ à®šà®Ÿà®à¯à®à®³à¯ à®à®¿à®ªà®Ÿà®°à®à¯ à®à¯à®¯à¯à®¯à¯à®®à¯ à®®à¯à®²à¯à®€à®°à®®à¯ à®à¯à®¯à®²à¯. à®à®€à®Ÿà®à®°à®£ à®®à¯à®±à¯à®à®Ÿà®°à¯à®šà¯à®€ à®
+à®à¯à®¯à®Ÿà®³ à®
+à®®à¯à®ªà¯à®ªà¯à®à®³à¯:  Uniform Resource Identifier (URI)(Uniform Resource Locator (URL)à®à®³à¯à®ªà¯à®ªà®), the Digital Object Identifier (DOI)à®®à¯à®²à¯à®®à¯ International Standard Book Number (ISBN).</Attribute>
+        </Language>
+        <!-- Vietnamese -->
+        <Language code="vi">
+            <Attribute name="label">Äá»nh danh</Attribute>
+            <Attribute name="definition">Má»t tham chiáº¿u khÃŽng trÃ¹ng láº·p Äáº¿n nguá»n tin trong khung cáº£nh cá»¥ thá»</Attribute>
+            <Attribute name="comment">Khuyáº¿n nghá» sá»­ dá»¥ng cÃ¡c Äá»nh danh nguá»n tin theo nhá»¯ng chuáº©n ÄÆ°á»£c cháº¥p nháº­n quy Äá»nh cho nhá»¯ng há» thá»ng Äá»nh danh hÃ¬nh thá»©c. ThÃ­ dá»¥ vá» há» thá»ng Äá»nh danh bao gá»m: Äá»nh danh Nguá»n tin thá»ng nháº¥t (Uniform Resource Identifier hoáº·c URI, trong ÄÃ³ cÃ³ Äá»nh vá» nguá»n tin thá»ng nháº¥t URL - Uniform Resource Locator, TÃªn nguá»n tin thá»ng nháº¥t URN - Uniform Resource Name vÃ  Äá»nh vá» nguá»n tin thá»ng nháº¥t á»n Äá»nh PURL - Persistent URL),  Äá»nh danh Äá»i tÆ°á»£ng sá» DOI (Digital Object Identifier), Chá» sá» sÃ¡ch chuáº©n quá»c táº¿ ISBN (International Standard Book Number),...</Attribute>
+        </Language>
+        <!-- Non-language specific -->
+        <Attribute name="version">1.1</Attribute>
+        <Attribute language="en" name="registration_authority">Dublin Core Metadata Initiative</Attribute>
+        <Attribute name="obligation">Optional</Attribute>
+        <Attribute name="datatype">Character String</Attribute>
+        <Attribute name="maximum_occurrence">Unlimited</Attribute>
+    </Element>
+    <Element name="Source">
+        <!-- English -->
+        <Language code="en">
+            <Attribute name="label">Source</Attribute>
+            <Attribute name="definition">A Reference to a resource from which the present resource is derived.</Attribute>
+            <Attribute name="comment">The present resource may be derived from the Source resource in whole or in part.  Recommended best practice is to reference the resource by means of a string or number conforming to a formal identification system.</Attribute>
+        </Language>
+        <!-- Maori -->
+        <Language code="mi">
+            <Attribute name="label">Matapuna</Attribute>
+            <Attribute name="definition">He tohutoro ki tetahi rauemi koira te matapuna o te rauemi e tirohia ana.</Attribute>
+            <Attribute name="comment">Tera pea i puta te katoa, tetahi wahanga ranei o te rauemi, e tirohia ana, mai i te Matapuna rauemi. Ko te tino huarahi kua tohua ko te tohutoro ki te rauemi ma te aho, ma te tau ranei e hangai ana ki tetahi punaha taututanga okawa.</Attribute>
+        </Language>
+        <!-- French -->
+        <Language code="fr">
+            <Attribute name="label">Source</Attribute>
+            <Attribute name="definition">Une rÃ©fÃ©rence Ã  une ressource Ã  partir de laquelle la ressource actuelle a Ã©tÃ© dÃ©rivÃ©e.</Attribute>
+            <Attribute name="comment">La ressource actuelle peut avoir Ã©tÃ© dÃ©rivÃ©e d&apos;une autre ressource source, en totalitÃ© ou en partie. Il est recommandÃ© de refÃ©rencer cette source par une chaÃ®ne de caractÃšre ou un nombre conforme Ã  un systÃšme formel d&apos;identification.</Attribute>
+        </Language>
+        <!-- Russian -->
+        <Language code="ru">
+            <Attribute name="label">ÐÑÑÐŸÑÐœÐžÐº</Attribute>
+            <Attribute name="definition">Ð¡ÑÑÐ»ÐºÐ° ÐœÐ° ÑÐµÑÑÑÑ, ÐžÐ· ÐºÐŸÑÐŸÑÐŸÐ³ÐŸ ÐžÐ·Ð²Ð»ÐµÑÐµÐœ ÐœÐ°ÑÑÐŸÑÑÐžÐ¹.</Attribute>
+            <Attribute name="comment">ÐÐ°ÑÑÐŸÑÑÐžÐ¹ ÑÐµÑÑÑÑ ÐŒÐŸÐ¶ÐµÑ Ð±ÑÑÑ ÐžÐ·Ð²Ð»ÐµÑÐµÐœ ÐžÐ· ÐÑÑÐŸÑÐœÐžÐºÐ° ÑÐµÐ»ÐžÐºÐŸÐŒ ÐžÐ»Ðž ÑÐ°ÑÑÐžÑÐœÐŸ. ÐÐ»Ñ Ð¿ÑÐ°ÐºÑÐžÑÐµÑÐºÐŸÐ³ÐŸ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÑ ÑÐµÐºÐŸÐŒÐµÐœÐŽÑÐµÑÑÑ ÐžÐŽÐµÐœÑÐžÑÐžÑÐžÑÐŸÐ²Ð°ÑÑ ÑÐµÑÑÑÑ Ð¿ÐŸÑÑÐµÐŽÑÑÐ²ÐŸÐŒ ÑÑÑÐŸÐºÐž ÐžÐ»Ðž ÑÐžÑÐ»Ð°, ÑÐŸÐŸÑÐ²ÐµÑÑÑÐ²ÑÑÑÐµÐ³ÐŸ ÑÐŸÑÐŒÐ°Ð»ÑÐœÐŸÐ¹ ÐžÐŽÐµÐœÑÐžÑÐžÐºÐ°ÑÐžÐŸÐœÐœÐŸÐ¹ ÑÐžÑÑÐµÐŒÐµ.</Attribute>
+        </Language>
+        <!-- Spanish -->
+        <Language code="es">
+            <Attribute name="label">Fuente</Attribute>
+            <Attribute name="definition">Secuencia de caracteres utilizado para identificar unÃ­vocamente un trabajo a partir del cual proviene el recurso actual. Por ejemplo, es posible usar Source con la fecha de 1603 como descripciÃ³n de una pelÃ­cula basada en una obra de Shakespeare, pero es preferible, en ese caso, usar Relation &quot;IsBasedOn&quot; con una referencia a un recurso distinto cuya descripciÃ³n contenga el elemento Date con valor 1603.</Attribute>
+        </Language>
+        <!-- Arabic -->
+        <Language code="ar">
+            <Attribute name="label">Ø§ÙÙ
+ØµØ¯Ø±</Attribute>
+            <Attribute name="definition">Ø§ÙÙ
+Ø¹ÙÙÙ
+Ø§Øª Ø§ÙØ®Ø§ØµØ© ØšÙ
+ØµØ¯Ø± Ø«Ø§ÙÙ Ù Ø§ÙØ°Ù Ø§Ø³ØªÙ
+Ø¯ Ù
+ÙÙ Ø§ÙÙ
+ØµØ¯Ø± Ø§ÙØ­Ø§ÙÙ. Ù
+Ø¹ Ø£ÙÙ Ù
+Ù Ø§ÙÙ
+ÙØµÙ ØšÙ Ø£Ù ØªÙØ¯Ù
+ Ø§ÙØ¹ÙØ§Ù
+Ù    Ù
+Ø¹ÙÙÙ
+Ø§Øª Ø¹Ù Ø§ÙÙ
+ØµØ¯Ø± Ø§ÙØ­Ø§ÙÙ ÙÙØ· , ÙÙÙ
+ÙÙ Ø£Ù ÙØ­ÙÙ ÙØ°Ø§ Ø§ÙØ¹Ø§Ù
+Ù Ø§ÙØªØ§Ø±ÙØ®, Ø§ÙÙ
+ÙØŽØŠ , Ø§ÙØµÙØºØ© , Ø§ÙÙ
+Ø¹Ø±Ù , Ø§Ù Ø§ÙØ© Ù
+ÙØ© - Ù
+Ø¹ÙÙÙ
+Ø§Øª Ø§Ø®Ø±Ù ÙÙÙ
+ØµØ¯Ø± Ø§ÙØ«Ø§ÙÙ Ø¹ÙØ¯Ù
+Ø§ ØªØ¹ØªØšØ± Ù
+ÙÙ
+Ø© ÙØ§ÙØªØŽØ§Ù Ø§ÙÙ
+ØµØ¯Ø± Ø§ÙØ­Ø§ÙÙ , Ù ÙØ°Ø§ÙÙ ÙÙØµÙ Ø¹ÙØ¯ Ø§ÙØªØ·ØšÙÙÙÙ Ø§Ø­Ø³Ù     Ø§ÙÙ
+ØªØ¹Ø§Ø±Ù Ø¹ÙÙÙ ØšØ§Ø³ØªØ®Ø¯Ø§Ù
+ Ø¹Ø§Ù
+Ù Ø§ÙØ¹ÙØ§ÙØ©</Attribute>
+        </Language>
+        <!-- Chinese - Simplified -->
+        <Language code="cn">
+            <Attribute name="label">æ¥æº</Attribute>
+            <Attribute name="definition">ç°æèµæºæ¥æºçåç
+§ã</Attribute>
+            <Attribute name="comment">åœåèµæºå¯èœéšåæå
+šéšæºèªè¯¥å
+çŽ ææ è¯çèµæºïŒå»ºè®®å¯¹è¿äžèµæºçæ è¯éçšäžäžªç¬Šåæ­£åŒæ è¯ç³»    ç»çå­äž²åæ°å­ç»å ã</Attribute>
+        </Language>
+        <!-- Czech -->
+        <Language code="cs">
+            <Attribute name="label">Zdroj</Attribute>
+            <Attribute name="definition">Odkaz na zdroj, z nÄhoÅŸ je popisovanÃœ zdroj odvozen.</Attribute>
+            <Attribute name="comment">PopisovanÃœ zdroj mÅ¯ÅŸe bÃœt zcela nebo zÄÃ¡sti odvozen ze zdroje uvedenÃ©ho v prvku Zdroj. DoporuÄuje se odkazovat zdroj znakovÃœm ÅetÄzcem nebo ÄÃ­slem odpovÃ­dajÃ­cÃ­m nÄkterÃ©mu z formÃ¡lnÃ­ch identifikaÄnÃ­ch systÃ©mÅ¯.</Attribute>
+        </Language>
+        <!-- Dutch -->
+        <Language code="nl">
+            <Attribute name="label">Bron</Attribute>
+            <Attribute name="definition">Informatie over een tweede bron waar de huidige Internetbron is van afgeleid. Bij &quot;Source&quot; mag een datum, auteur of maker, formaat, identificatie of andere metadata voor de tweede bron worden ingevuld. Voorbeeld: het is mogelijk om een &quot;Source&quot; datum 1603 in een omschrijving van een 1996 film bewerking van een Shakespeare stuk te gebruiken. &quot;Source&quot; is niet bruikbaar wanneer de huidige bron de orginele is.</Attribute>
+        </Language>
+        <!-- Finnish -->
+        <Language code="fi">
+            <Attribute name="label"/>
+            <Attribute name="definition"/>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Interlingua -->
+        <Language code="ia">
+            <Attribute name="label">Fonte</Attribute>
+            <Attribute name="definition">Un referentia a un ressource del qual se deriva le ressource presente.</Attribute>
+            <Attribute name="comment">Le ressource presente pote derivar se del ressource-fonte in toto o in parte. Le practica recommendate es facer referentia al ressource per medio de un catena de characteres o un numero conforme a un systema formal de identification.</Attribute>
+        </Language>
+        <!-- Marathi -->
+        <Language code="mr">
+            <Attribute name="label">à€à€à€®</Attribute>
+            <Attribute name="definition">à€®à€Ÿà€¹à€¿à€€à¥à€à€Ÿ à€à€à€® à€žà€Ÿà€à€à€£à€Ÿà€°à€Ÿ à€à€à€
+à€°à¥à€¥à¥ à€žà€à€Šà€°à¥à€­</Attribute>
+            <Attribute name="comment">à€à€Šà€Ÿ. à€ªà¥à€žà¥à€€à€, à€®à€Ÿà€žà€¿à€,  à€®à€Ÿà€¹à€¿à€€à¥à€à€Ÿà€³à¥à€¯à€Ÿà€µà€°à¥à€² à€ªà€€à¥à€€à€Ÿà€¯à€Ÿà€à€à€Ÿ à€žà€à€Šà€°à¥à€­</Attribute>
+        </Language>
+        <!-- Tamil -->
+        <Language code="ta">
+            <Attribute name="label">à®®à¯à®²à®®à¯</Attribute>
+            <Attribute name="definition">à®à®šà¯à®€ à®µà®³à®€à¯à®€à®¿à®²à®¿à®°à¯à®šà¯à®€à¯ à®šà®¿à®à®Žà¯à®®à¯ à®µà®³à®®à¯ à®ªà¯à®±à¯à®±à®¿à®°à¯à®à¯à®à®¿à®°à®€à¯ à®
+à®€à¯ à®à¯à®±à®¿à®à¯à®à®¿à®°à®€à¯.</Attribute>
+            <Attribute name="comment">à®šà®¿à®à®Žà¯à®®à¯ à®µà®³à®®à¯ à®®à¯à®² à®µà®³à®€à¯à®€à®¿à®²à®¿à®°à¯à®šà¯à®€à¯ à®à®°à¯ à®ªà®Ÿà®à®®à¯ à®
+à®²à¯à®²à®€à¯ à®®à¯à®Žà¯à®®à¯à®¯à®à®µà¯ à®ªà¯à®±à®²à®Ÿà®®à¯. à®à®°à¯ à®®à¯à®±à¯à®à®Ÿà®°à¯à®šà¯à®€ à®
+à®à¯à®¯à®Ÿà®³ à®
+à®®à¯à®ªà¯à®ªà¯ à®à®£à®à¯à®à®®à®Ÿà®©  à®à®°à¯ à®à®°à®®à¯ à®
+à®²à¯à®²à®€à¯ à®à®£à¯ à®à®ªà®¯à¯à®à®¿à®€à¯à®€à¯ à®µà®³à®€à¯ à®
+à®à®¯à®Ÿà®³à®®à¯ à®à¯à®¯à¯à®µà®€à¯ à®šà®Ÿà®à¯à®à®³à¯ à®à®¿à®ªà®Ÿà®°à®à¯ à®à¯à®¯à¯à®¯à¯à®®à¯ à®®à¯à®²à¯à®€à®°à®®à¯ à®à¯à®¯à®²à¯.</Attribute>
+        </Language>
+        <!-- Vietnamese -->
+        <Language code="vi">
+            <Attribute name="label">Nguá»n trÃ­ch</Attribute>
+            <Attribute name="definition">Tham chiáº¿u vá» nguá»n gá»c mÃ  tá»« ÄÃ³ nguá»n tin hiá»n ÄÆ°á»£c mÃŽ táº£ ÄÆ°á»£c rÃºt ra hoáº·c táº¡o ra tá»« ÄÃ³</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Non-language specific -->
+        <Attribute name="version">1.1</Attribute>
+        <Attribute language="en" name="registration_authority">Dublin Core Metadata Initiative</Attribute>
+        <Attribute name="obligation">Optional</Attribute>
+        <Attribute name="datatype">Character String</Attribute>
+        <Attribute name="maximum_occurrence">Unlimited</Attribute>
+    </Element>
+    <Element name="Language">
+        <!-- English -->
+        <Language code="en">
+            <Attribute name="label">Language</Attribute>
+            <Attribute name="definition">A language of the intellectual content of the resource.</Attribute>
+            <Attribute language="en" name="comment">Recommended best practice for the values of the Language element is defined by RFC 1766 which includes a two-letter Language Code (taken from the ISO 639 standard, followed optionally, by a two-letter Country Code (taken from the ISO 3166 standard). For example, &apos;en&apos; for English, &apos;fr&apos; for French, or &apos;en-uk&apos; for English used in the United Kingdom.</Attribute>
+        </Language>
+        <!-- Maori -->
+        <Language code="mi">
+            <Attribute name="label">Reo</Attribute>
+            <Attribute name="definition">Te reo o te whakakaupapatanga o nga matauranga o te rauemi.</Attribute>
+            <Attribute name="comment">Ko te tino huarahi kua tohua mo nga uara o te huanga Reo kua whakaritea ki te RFC 1766 [RFC1766] kei roto te Tohu Reo kupu-rua (two-letter Language Code) (no te aro whanui ISO 639 [ISO639], ka taea e tetahi tohu kupu-rua te whai atu (no te aro whanui ISO 3166) [ISO366]). Hei tauira, te &apos;en&apos; mo te English, te &apos;fr&apos; mo te French, &apos;te en-uk&apos; mo te English e whakamahia ana i Ingarangi (UK).</Attribute>
+        </Language>
+        <!-- French -->
+        <Language code="fr">
+            <Attribute name="label">Langue</Attribute>
+            <Attribute name="definition">La langue du contenu intellectuel de la ressource.</Attribute>
+            <Attribute name="comment">Il est recommandÃ© d&apos;utiliser comme valeur de l&apos;Ã©lÃ©ment Langue celles definies par la RFC 1766 [RFC1766] qui comprend un code de langage Ã  deux caractÃšres(venant du standard ISO 639 [ISO639]), Ã©ventuellement suivi d&apos;un code Ã  deux lettres pour le pays (venant du standard ISO 3166 [ISO3166] ou en franÃ§ais [ISO3166]). Par exemple, &apos;en&apos; pour l&apos;anglais, &apos;fr&apos; pour le franÃ§ais, ou &apos;en-uk&apos; pour l&apos;anglais utilisÃ© au Royaume-Uni.</Attribute>
+        </Language>
+        <!-- Russian -->
+        <Language code="ru">
+            <Attribute name="label">Ð¯Ð·ÑÐº</Attribute>
+            <Attribute name="definition">Ð¯Ð·ÑÐº ÐžÐœÑÐµÐ»Ð»ÐµÐºÑÑÐ°Ð»ÑÐœÐŸÐ³ÐŸ ÑÐŸÐŽÐµÑÐ¶Ð°ÐœÐžÑ ÑÐµÑÑÑÑÐ°.</Attribute>
+            <Attribute name="comment">ÐÐ»Ñ Ð¿ÑÐ°ÐºÑÐžÑÐµÑÐºÐŸÐ³ÐŸ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÑ ÑÐµÐºÐŸÐŒÐµÐœÐŽÑÐµÑÑÑ Ð·ÐœÐ°ÑÐµÐœÐžÐµ ÑÐ»ÐµÐŒÐµÐœÑÐ° Ð¯Ð·ÑÐº, ÐŸÐ¿ÑÐµÐŽÐµÐ»ÑÐµÐŒÐŸÐµ RFC 1766 (Ð¢ÑÐ³Ðž ÐŽÐ»Ñ ÐžÐŽÐµÐœÑÐžÑÐžÐºÐ°ÑÐžÐž ÑÐ·ÑÐºÐ°), Ð²ÐºÐ»ÑÑÐ°ÑÑÐžÐŒ ÐŽÐ²ÑÑ
+Ð±ÑÐºÐ²ÐµÐœÐœÑÐ¹ ÐºÐŸÐŽ ÑÐ·ÑÐºÐ° (Ð²Ð·ÑÑÑÐ¹ ÐžÐ· ÑÑÐ°ÐœÐŽÐ°ÑÑÐ° ISO 639 (ÐÐŸÐŽÑ ÐŽÐ»Ñ Ð¿ÑÐµÐŽÑÑÐ°Ð²Ð»ÐµÐœÐžÑ ÐœÐ°Ð·Ð²Ð°ÐœÐžÐ¹ ÑÐ·ÑÐºÐŸÐ²)), Ð·Ð° ÐºÐŸÑÐŸÑÑÐŒ ÑÐ»ÐµÐŽÑÐµÑ (Ð¿ÑÐž ÐœÐµÐŸÐ±Ñ
+ÐŸÐŽÐžÐŒÐŸÑÑÐž) ÐŽÐ²ÑÑ
+Ð±ÑÐºÐ²ÐµÐœÐœÑÐ¹ ÐºÐŸÐŽ ÑÑÑÐ°ÐœÑ (Ð²Ð·ÑÑÑÐŒÐž ÐžÐ· ÑÑÐ°ÐœÐŽÐ°ÑÑÐ° ISO 3166 (ÐÐŸÐŽÑ ÐŽÐ»Ñ Ð¿ÑÐµÐŽÑÑÐ°Ð²Ð»ÐµÐœÐžÑ ÐœÐ°Ð·Ð²Ð°ÐœÐžÐ¹ ÑÑÑÐ°Ðœ)). ÐÐ°Ð¿ÑÐžÐŒÐµÑ, &quot;en&quot; - ÐŽÐ»Ñ Ð°ÐœÐ³Ð»ÐžÐ¹ÑÐºÐŸÐ³ÐŸ, &quot;fr&quot; - ÐŽÐ»Ñ ÑÑÐ°ÐœÑÑÐ·ÑÐºÐŸÐ³ÐŸ, &quot;en-uk&quot; - ÐŽÐ»Ñ Ð°ÐœÐ³Ð»ÐžÐ¹ÑÐºÐŸÐ³ÐŸ, ÐžÑÐ¿ÐŸÐ»ÑÐ·ÑÐµÐŒÐŸÐ³ÐŸ Ð² ÐÐµÐ»ÐžÐºÐŸÐ±ÑÐžÑÐ°ÐœÐžÐž.</Attribute>
+        </Language>
+        <!-- Spanish -->
+        <Language code="es">
+            <Attribute name="label">Lengua</Attribute>
+            <Attribute name="definition">Lengua/s del contenido intelectual del recurso. Practicamente el contenido de este campo deberÃ­a coincidir con los de la RFC 1766 (Tags para la identificaciÃ³n de lenguas, http://ds.internic.net/rfc/rfc1766.txt); por ejemplo: en, es, de, fi, ja y zh.</Attribute>
+        </Language>
+        <!-- Arabic -->
+        <Language code="ar">
+            <Attribute name="label">Ø§ÙÙØºØ©</Attribute>
+            <Attribute name="definition">ÙØ°Ù ÙÙ ÙØºØ© Ø§ÙÙ
+Ø­ØªÙÙ Ø§ÙÙÙØ±Ù ÙÙÙ
+ØµØ¯Ø± . ÙÙÙ
+Ø§ ÙØ§Ù  Ø¹Ù
+ÙÙØ§ , Ù
+Ø­ØªÙÙ ÙØžØ§ Ø§ÙØ­ÙÙ ÙØ¬Øš Ø£Ù ÙØªØ·Ø§ØšÙ Ù
+Ø¹ RFC 1766    ] Ø§ÙØ§Ù
+Ø«ÙØ© ØªØ¶Ù
+ th, ja, fr, es, fi, de, en Ù zh ÙØ±Ù
+ÙØ² ÙÙØªØ¹Ø±ÙÙ ØšØ§ÙÙØºØ© [</Attribute>
+        </Language>
+        <!-- Chinese - Simplified -->
+        <Language code="cn">
+            <Attribute name="label">è¯­ç§</Attribute>
+            <Attribute name="definition">æè¿°èµæºç¥è¯å
+å®¹çè¯­ç§ã</Attribute>
+            <Attribute name="comment">å»ºè®®æ¬å
+çŽ çåŒéçšRFC 3066[RFC3066]ïŒè¯¥æ åäžISO 639 [ISO639]äžèµ·å®ä¹äºç±äž€äžªåäžäžªè±    æå­æ¯ç»æçäž»è¯­èšæ ç­Ÿåå­æ ç­ŸäŸåŠå
+æ¬âenâæâengâæ¥è¡šç€ºEnglish, &quot;akk&quot; æ¥è¡šç€º    &quot;en-GB&quot;è¡šç€ºè±åœè±è¯­ã</Attribute>
+        </Language>
+        <!-- Czech -->
+        <Language code="cs">
+            <Attribute name="label">Jazyk</Attribute>
+            <Attribute name="definition">Jazyk intelektuÃ¡lnÃ­ho obsahu zdroje.</Attribute>
+            <Attribute name="comment">DoporuÄenÃœ postup pro hodnoty prvku Jazyk je definovÃ¡n v RFC 1766 [RFC1766]: dvouznakovÃœ kÃ³d jazyka (pÅevzatÃœ z normy ISO 639 [ISO639]) volitelnÄ nÃ¡sledovanÃœ dvouznakovÃœm kÃ³dem zemÄ (pÅevzatÃœm z normy ISO 3166 [ISO3166]). NapÅÃ­klad &apos;en&apos; pro angliÄtinu, &apos;fr&apos; pro francouzÅ¡tinu, &apos;cs&apos; pro ÄeÅ¡tinu, nebo &apos;en-uk&apos; pro angliÄtinu uÅŸÃ­vanou ve SpojenÃ©m krÃ¡lovstvÃ­.</Attribute>
+        </Language>
+        <!-- Dutch -->
+        <Language code="nl">
+            <Attribute name="label">Taal</Attribute>
+            <Attribute name="definition">De taal waarin het document is beschreven. Voorgeschreven wordt de ISO639-1 norm, een twee karakter taalcode van de ISO 639(639-1 en 639-2) norm. Taalcodes kunnen van een lijst worden gekozen: http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt, Eventueel kan ISO3166 (landencodes) gebruikt worden om aan te geven in welk gebied de taal wordt gesproken. Deze kunnen ook van een lijst worden gekozen:  http://www.ics.uci.edu/pub/ietf/http/related/iso3166.txt.</Attribute>
+        </Language>
+        <!-- Finnish -->
+        <Language code="fi">
+            <Attribute name="label"/>
+            <Attribute name="definition"/>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Interlingua -->
+        <Language code="ia">
+            <Attribute name="label">Lingua</Attribute>
+            <Attribute name="definition">Le lingua del contento intellectual del ressource.</Attribute>
+            <Attribute name="comment">Le practica recommendate pro le valores del elemento lingua es definite per RFC 1766 [RFC1766], que include un codice de lingua de duo litteras (prendite del standard ISO 639 [ISO639]), sequite optionalmente per un codice de pais de duo litteras (prendite del standard ISO 3166 [ISO3166]). Per exemplo, &apos;ia&apos; pro interlingua, &apos;fr&apos; pro francese, o &apos;en-uk&apos; pro le anglese del Regno Unite.</Attribute>
+        </Language>
+        <!-- Marathi -->
+        <Language code="mr">
+            <Attribute name="label">à€­à€Ÿà€·à€Ÿ</Attribute>
+            <Attribute name="definition">à€®à€Ÿà€¹à€¿à€€à¥à€žà€Ÿà€ à¥à€¯à€Ÿà€à¥ à€­à€Ÿà€·à€Ÿ</Attribute>
+            <Attribute name="comment">à€à€Šà€Ÿ. à€®à€°à€Ÿà€ à¥ - à€­à€Ÿà€°à€€à¥à€¯ à€­à€Ÿà€·à€Ÿ</Attribute>
+        </Language>
+        <!-- Tamil -->
+        <Language code="ta">
+            <Attribute name="label">à®®à¯à®Žà®¿</Attribute>
+            <Attribute name="definition">à®µà®³à®€à¯à®€à®¿à®©à¯ à®
+à®±à®¿à®µà®¿à®¯à®±à¯à®€à®©à®®à®Ÿà®© à®ªà¯à®°à¯à®³à®à®à¯à®à®€à¯à®€à®¿à®©à¯ à®®à¯à®Žà®¿.</Attribute>
+            <Attribute name="comment">à®šà®Ÿà®à¯à®à®³à¯ à®à®¿à®ªà®Ÿà®°à®à¯ à®à¯à®¯à¯à®¯à¯à®®à¯ à®®à¯à®²à¯à®€à®°à®®à¯ à®à¯à®¯à®²à¯: à®®à¯à®Žà®¿à®¯à®¿à®©à¯ à®à®±à¯à®ªà¯à®ªà®¿à®©à¯ à®®à®€à®¿à®ªà¯à®ªà¯à®à®³à¯ RFC 1766 à®à®²à¯ à®µà®¿à®µà®°à®¿à®€à¯à®€à®€à¯, à®
+à®€à®¿à®²à¯ à®à®°à®£à¯à®à¯ - à®à®Žà¯à®€à¯à®€à¯ à®®à¯à®Žà®¿ à®šà®¿à®°à®²à¯ (ISO 639 à®à¯à®šà¯à®€à®°à®€à¯à®€à®¿à®²à®¿à®°à¯à®šà¯à®€à¯ à®à®à¯à®à¯à®à®ªà®à¯à®à®€à¯, à®µà¯à®£à¯à®à¯à®®à®Ÿà®©à®Ÿà®²à¯ à®à®°à¯ à®à®°à®£à¯à®à¯ - à®à®Žà¯à®€à¯à®€à¯ à®€à¯à®à®®à¯ à®šà®¿à®°à®²à¯ à®à¯à®°à¯à®€à¯à®€à®¿à®°à¯à®à¯à®à¯à®®à¯ (ISO 3166 à®à¯à®šà¯à®€à®°à®€à¯à®€à®¿à®²à®¿à®°à¯à®šà¯à®€à¯ à®à®à¯à®à¯à®à®ªà®à¯à®à®€à¯).  à®à®€à®Ÿà®à®°à®£à®®à¯: English à®à¯à®à¯ &apos;en&apos;,   French à®à¯à®à¯ &apos;fr&apos;, à®
+à®²à¯à®²à¯à®€à¯ English used in the United Kingdom à®à¯à®à¯ &apos;en-uk&apos;.</Attribute>
+        </Language>
+        <!-- Vietnamese -->
+        <Language code="vi">
+            <Attribute name="label">NgÃŽn ngá»¯</Attribute>
+            <Attribute name="definition">NgÃŽn ngá»¯ cá»§a chÃ­nh vÄn cá»§a ná»i dung cá»§a nguá»n tin</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Non-language specific -->
+        <Attribute name="version">1.1</Attribute>
+        <Attribute language="en" name="registration_authority">Dublin Core Metadata Initiative</Attribute>
+        <Attribute name="obligation">Optional</Attribute>
+        <Attribute name="datatype">Character String</Attribute>
+        <Attribute name="maximum_occurrence">Unlimited</Attribute>
+    </Element>
+    <Element name="Relation">
+        <!-- English -->
+        <Language code="en">
+            <Attribute name="label">Relation</Attribute>
+            <Attribute name="definition">A reference to a related resource.</Attribute>
+            <Attribute name="comment">Recommended best practice is to reference the resource by means of a string or number conforming to a formal identification system.</Attribute>
+        </Language>
+        <!-- Maori -->
+        <Language code="mi">
+            <Attribute name="label">Whai Panga</Attribute>
+            <Attribute name="definition">He tohutoro ki tetahi rauemi whai panga.</Attribute>
+            <Attribute name="comment">Ko te tino huarahi kua tohua, ko te tohutoro ki te rauemi ma te aho, te tau ranei, e hangai ana ki te punaha taututanga okawa.</Attribute>
+        </Language>
+        <!-- French -->
+        <Language code="fr">
+            <Attribute name="label">Relation</Attribute>
+            <Attribute name="definition">Une rÃ©fÃ©rence Ã  une autre ressource qui a un rapport avec cette ressource.</Attribute>
+            <Attribute name="comment">Il est recommandÃ© de rÃ©fÃ©rencer cette ressource par une chaÃ®ne de caractÃšres ou un numÃ©ro conforme Ã  un systÃšme formel d&apos;identification.</Attribute>
+        </Language>
+        <!-- Russian -->
+        <Language code="ru">
+            <Attribute name="label">ÐÑÐœÐŸÑÐµÐœÐžÐµ</Attribute>
+            <Attribute name="definition">Ð²ÐµÐœÐœÑÐ¹ ÑÐµÑÑÑÑ.</Attribute>
+            <Attribute name="comment">ÐÐ»Ñ Ð¿ÑÐ°ÐºÑÐžÑÐµÑÐºÐŸÐ³ÐŸ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÑ ÑÐµÐºÐŸÐŒÐµÐœÐŽÑÐµÑÑÑ ÐžÐŽÐµÐœÑÐžÑÐžÑÐžÑÐŸÐ²Ð°ÑÑ ÑÐµÑÑÑÑ Ð¿ÐŸÑÑÐµÐŽÑÑÐ²ÐŸÐŒ ÑÑÑÐŸÐºÐž ÐžÐ»Ðž ÑÐžÑÐ»Ð°, ÑÐŸÐŸÑÐ²ÐµÑÑÑÐ²ÑÑÑÐµÐ³ÐŸ ÑÐŸÑÐŒÐ°Ð»ÑÐœÐŸÐ¹ ÐžÐŽÐµÐœÑÐžÑÐžÐºÐ°ÑÐžÐŸÐœÐœÐŸÐ¹ ÑÐžÑÑÐµÐŒÐµ.</Attribute>
+        </Language>
+        <!-- Spanish -->
+        <Language code="es">
+            <Attribute name="label">RelaciÃ³n</Attribute>
+            <Attribute name="definition">Un identificador de un segundo recurso y su relaciÃ³n con el recurso actual. Este elemento permite enlazar los recursos relacionados y las descripciones de los recursos. Por ejemplo: IsVersionOf - Incluye la ediciÃ³n de un trabajo, IsBasedOn - La traducciÃ³n de un trabajo, IsPartOf - Un capÃ­tulo de un libro, IsFormatOf - Un mecanismo de transformaciÃ³n de un conjunto de datos en una imagen. Para asegurar la interoperabilidad, las relaciones deberÃ­an ser seleccionadas de una lista de elementos que actualmente se encuentra bajo desarrollo en un grupo de trabajo.</Attribute>
+        </Language>
+        <!-- Arabic -->
+        <Language code="ar">
+            <Attribute name="label">Ø§ÙØ¹ÙØ§ÙØ©</Attribute>
+            <Attribute name="definition">ÙØ°Ø§ Ù
+Ø¹Ø±Ù ÙÙÙ
+ØµØ¯Ø± Ø§ÙØ«Ø§ÙÙ Ù Ø¹ÙØ§ÙØªÙ ØšØ§ÙÙ
+ØµØ¯Ø± Ø§ÙØ­Ø§ÙÙ . ÙØ³Ù
+Ø­ ÙØ°Ø§ Ø§ÙØ¹Ø§Ù
+Ù ØšØªÙØ¶ÙØ­ Ø§ÙØ±ÙØ§ØšØ· ØšÙÙ Ø§ÙÙ
+ØµØ§Ø¯Ø± Ø§ÙÙ
+ØªØ¹ÙÙØ©     ØšØšØ¹Ø¶ÙØ§ Ù ØªÙØµÙÙ Ø§ÙÙ
+ØµØ¯Ø± . Ø§ÙØ§Ù
+Ø«ÙØ© ØªØ¶Ù
+ Ø·ØšØ¹Ø© Ø§ÙØ¹Ù
+Ù ) ÙØ³Ø®Ø© Ù
+Ù ( ØªØ±Ø¬Ù
+Ø© Ø¹Ù
+Ù ) Ø§Ø¹ØªÙ
+Ø§Ø¯Ø§ Ø¹ÙÙ ( ÙØµÙ Ù
+Ù ÙØªØ§Øš ) Ø¬Ø²Ø¡ Ù
+Ù (    Ù ØªØ­ÙÙÙÙ Ù
+ÙÙØ§ÙÙÙÙØ© ÙÙ
+Ø¬Ù
+ÙØ¹Ø© Ù
+Ø¹ÙÙÙ
+Ø§ØªÙØ© Ø§ÙÙ ØµÙØ±Ø© ) ØµÙØºØ© Ù
+Ù ( Ù
+Ù Ø£Ø¬Ù Ø§ÙØªØ¹Ø§Ù
+Ù Ø§ÙÙ
+ØŽØªØ±Ù , ÙØ¬Øš Ø§Ø®ØªÙØ§Ø± Ø§ÙØ¹ÙØ§ÙØ§Øª Ù
+Ù    Ø§ÙÙØ§ØŠÙ
+Ø© Ø§ÙÙ
+Ø±ÙÙ
+Ø© Ù Ø§ÙØªÙ ÙØªÙ
+ Ø§Ø¹Ø¯Ø§Ø¯ÙØ§ Ø­Ø§ÙÙØ§ Ø¶Ù
+Ù Ø­ÙÙØ§Øª ÙØ±ØŽØ© Ø¹Ù
+Ù</Attribute>
+        </Language>
+        <!-- Chinese - Simplified -->
+        <Language code="cn">
+            <Attribute name="label">å
+³è</Attribute>
+            <Attribute name="definition">æ¶åççžå
+³èµæºã</Attribute>
+            <Attribute name="comment">èåœçžå
+³èµæºæ¶ïŒå»ºè®®äœ¿çšç¬Šåæ­£åŒæ è¯ç³»ç»çå­ç¬Šäž²æè
+æ°å­ã</Attribute>
+        </Language>
+        <!-- Czech -->
+        <Language code="cs">
+            <Attribute name="label">Vztah</Attribute>
+            <Attribute name="definition">Odkaz na pÅÃ­buznÃœ zdroj.</Attribute>
+            <Attribute name="comment">DoporuÄuje se odkazovat zdroj znakovÃœm ÅetÄzcem nebo ÄÃ­slem odpovÃ­dajÃ­cÃ­m nÄkterÃ©mu z formÃ¡lnÃ­ch identifikaÄnÃ­ch systÃ©mÅ¯.</Attribute>
+        </Language>
+        <!-- Dutch -->
+        <Language code="nl">
+            <Attribute name="label">Relatie</Attribute>
+            <Attribute name="definition">Een identificatie van een tweede bron en de relatie met de huide Internetbron. Voorbeelden zijn een editie van een werk (IsVersionOf), een vertaling van een werk (IsBasedOn), een hoofdstuk van een boek (IsPartOf) en een mechanische transformatie van een dataset in een plaatje (IsFormatOf). De DC Working Groups zijn bezig met een lijst met de meest verwachte relaties. Aanbevolen wordt om de relaties van deze lijst te gebruiken: http://purl.oclc.org/metadata/dublin_core/wrelationdraft.html.</Attribute>
+        </Language>
+        <!-- Finnish -->
+        <Language code="fi">
+            <Attribute name="label"/>
+            <Attribute name="definition"/>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Interlingua -->
+        <Language code="ia">
+            <Attribute name="definition">Relation</Attribute>
+            <Attribute name="definition">Un referentia a un ressource correlate.</Attribute>
+            <Attribute name="comment">Le practica recommendate es facer referentia al ressource per medio de un catena de characteres o numero conforme a un systema de identification formal.</Attribute>
+        </Language>
+        <!-- Marathi -->
+        <Language code="mr">
+            <Attribute name="label">à€šà€Ÿà€€à¥ , à€žà€à€¬à€à€§</Attribute>
+            <Attribute name="definition">à€®à€Ÿà€¹à€¿à€€à¥à€žà€Ÿà€ à¥à€¯à€Ÿà€¶à¥ à€žà€à€¬à€à€§ à€Šà€Ÿà€à€µà€£à€Ÿà€°à€Ÿ à€žà€à€Šà€°à¥à€­</Attribute>
+            <Attribute name="comment">à€à€Šà€Ÿ.  à€®à€Ÿà€¹à€¿à€€à¥ à€à€Ÿà€³à¥à€¯à€Ÿà€µà€°à¥à€² à€ªà€€à¥à€€à€Ÿ(URL)</Attribute>
+        </Language>
+        <!-- Tamil -->
+        <Language code="ta">
+            <Attribute name="label">à®à®®à¯à®ªà®šà¯à®€à®®à¯</Attribute>
+            <Attribute name="definition">à®à®®à¯à®ªà®šà¯à®€à®ªà®à¯à® à®µà®³à®€à¯à®€à¯ à®à¯à®±à®¿à®à¯à®à®¿à®°à®€à¯.</Attribute>
+            <Attribute name="comment">à®à®°à¯ à®®à¯à®±à¯à®à®Ÿà®°à¯à®šà¯à®€ à®
+à®à¯à®¯à®Ÿà®³ à®
+à®®à¯à®ªà¯à®ªà¯ à®à®£à®à¯à®à®®à®Ÿà®©  à®à®°à¯ à®à®°à®®à¯ à®
+à®²à¯à®²à®€à¯ à®à®£à¯ à®à®ªà®¯à¯à®à®¿à®€à¯à®€à¯ à®µà®³à®€à¯à®€à¯ à®
+à®à®¯à®Ÿà®³à®®à¯ à®à¯à®¯à¯à®µà®€à¯ à®šà®Ÿà®à¯à®à®³à¯ à®à®¿à®ªà®Ÿà®°à®à¯ à®à¯à®¯à¯à®¯à¯à®®à¯ à®®à¯à®²à¯à®€à®°à®®à¯ à®à¯à®¯à®²à¯.</Attribute>
+        </Language>
+        <!-- Vietnamese -->
+        <Language code="vi">
+            <Attribute name="label">Quan há»</Attribute>
+            <Attribute name="definition">Tham chiáº¿u Äáº¿n cÃ¡c nguá»n tin liÃªn quan Äáº¿n nguá»n Äang mÃŽ táº£</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Non-language specific -->
+        <Attribute name="version">1.1</Attribute>
+        <Attribute language="en" name="registration_authority">Dublin Core Metadata Initiative</Attribute>
+        <Attribute name="obligation">Optional</Attribute>
+        <Attribute name="datatype">Character String</Attribute>
+        <Attribute name="maximum_occurrence">Unlimited</Attribute>
+    </Element>
+    <Element name="Coverage">
+        <!-- English -->
+        <Language code="en">
+            <Attribute name="label">Coverage</Attribute>
+            <Attribute name="definition">The extent or scope of the content of the resource.</Attribute>
+            <Attribute name="comment">Coverage will typically include spatial location (a place name or geographic coordinates), temporal period (a period label, date, or date range) or jurisdiction (such as a named administrative entity). Recommended best practice is to select a value from a controlled vocabulary (for example, the Thesaurus of Geographic Names [TGN]) and that, where appropriate, named places or time periods be used in preference to numeric identifiers such as sets of coordinates or date ranges.</Attribute>
+        </Language>
+        <!-- Maori -->
+        <Language code="mi">
+            <Attribute name="label">Kapitanga</Attribute>
+            <Attribute name="definition">Te roanga, te whanuitanga ranei o te whakakaupapatanga o te rauemi.</Attribute>
+            <Attribute name="comment">Ko te tikanga, ka uru atu te wahi mokowa (te ingoa o tetahi wahi, whakapiritanga matawhenua ranei), whakaritenga wa (he tapatanga wa (period label, ra, whakatakotoranga whanui o nga ra), te whakaritenga ture (penei i te putahi whakahaere). Ko te tino huarahi kua tohua, ko te tipako uara mai i tetahi whakaritenga kupu (hei tauira, i tetahi Puna Kupu Ingoa Matawhenua (Geographic Names [TGN] i nga wahi tika, ko nga wahi me nga whakaritenga wa ka whakamahia i mua i te whakamahitanga o nga taututanga tau penei i nga huinga whakapiritanga me nga whakatakotoranga whanui o nga ra.</Attribute>
+        </Language>
+        <!-- French -->
+        <Language code="fr">
+            <Attribute name="label">Couverture</Attribute>
+            <Attribute name="definition">La portÃ©e ou la couverture spatio-temporelle de la ressource.</Attribute>
+            <Attribute name="comment">La couverture typiquement inclut une position gÃ©ographique (le nom d&apos;un lieu ou ses coordonnÃ©es), une pÃ©riode de temps (un nom de pÃ©riode, une date, ou un intervalle de temps) ou une juridiction (telle que le nom d&apos;une entitÃ© administrative). Il est recommandÃ© de choisir la  valeur de Couverture dans un vocabulaire contrÃŽlÃ© (par exemple, un thÃ©saurus de noms gÃ©ographiques, comme[TGN]) et, quand cela est appropriÃ©, des noms de lieux ou de pÃ©riodes plutÃŽt que des identifiants numÃ©riques tels que des coordonnÃ©es ou des intervalles de dates. </Attribute>
+        </Language>
+        <!-- Russian -->
+        <Language code="ru">
+            <Attribute name="label">ÐÑ
+Ð²Ð°Ñ</Attribute>
+            <Attribute name="definition">ÐÑÐŸÑÑÐ¶ÐµÐœÐœÐŸÑÑÑ Ðž Ð³ÑÐ°ÐœÐžÑÑ ÑÐŸÐŽÐµÑÐ¶Ð°ÐœÐžÑ ÑÐµÑÑÑÑÐ°.</Attribute>
+            <Attribute name="comment">ÐÑ
+Ð²Ð°Ñ ÐŸÐ±ÑÐºÐœÐŸÐ²ÐµÐœÐœÐŸ Ð²ÐºÐ»ÑÑÐ°ÐµÑ Ð¿ÑÐŸÑÑÑÐ°ÐœÑÑÐ²ÐµÐœÐœÐŸÐµ ÐŒÐµÑÑÐŸÐœÐ°Ñ
+ÐŸÐ¶ÐŽÐµÐœÐžÐµ (ÐœÐ°Ð·Ð²Ð°ÐœÐžÐµ ÐŒÐµÑÑÐœÐŸÑÑÐž ÐžÐ»Ðž Ð³ÐµÐŸÐ³ÑÐ°ÑÐžÑÐµÑÐºÐžÐµ ÐºÐŸÐŸÑÐŽÐžÐœÐ°ÑÑ), Ð²ÑÐµÐŒÐµÐœÐœÐŸÐ¹ Ð¿ÑÐŸÐŒÐµÐ¶ÑÑÐŸÐº (ÑÐºÐ°Ð·Ð°ÐœÐžÐµ Ð¿ÐµÑÐžÐŸÐŽÐ°, ÐŽÐ°ÑÐ° ÐžÐ»Ðž ÑÑÐŽ ÐŽÐ°Ñ) ÐžÐ»Ðž ÑÑÐžÑÐŽÐžÐºÑÐžÑ (ÑÐºÐ°Ð·Ð°ÐœÐžÐµ ÐµÐŽÐžÐœÐžÑÑ Ð°ÐŽÐŒÐžÐœÐžÑÑÑÐ°ÑÐžÐ²ÐœÐŸÐ³ÐŸ ÐŽÐµÐ»ÐµÐœÐžÑ). ÐÐ° Ð¿ÑÐ°ÐºÑÐžÐºÐµ ÑÐµÐºÐŸÐŒÐµÐœÐŽÑÐµÑÑÑ Ð²ÑÐ±ÐžÑÐ°ÑÑ Ð·ÐœÐ°ÑÐµÐœÐžÐµ ÐžÐ· ÐºÐŸÐœÑÑÐŸÐ»ÐžÑÑÐµÐŒÐŸÐ³ÐŸ ÑÐ»ÐŸÐ²Ð°ÑÑ (ÐœÐ°Ð¿ÑÐžÐŒÐµÑ, Ð¢ÐµÐ·Ð°ÑÑÑÑÐ° Ð³ÐµÐŸÐ³ÑÐ°ÑÐžÑÐµÑÐºÐžÑ
+ ÐœÐ°Ð·Ð²Ð°ÐœÐžÐ¹ TGN), Ðž, ÐµÑÐ»Ðž ÑÑÐŸ ÑÐŒÐµÑÑÐœÐŸ, Ð¿ÑÐµÐŽÐ¿ÐŸÑÑÐµÐœÐžÐµ ÐŸÑÐŽÐ°ÐµÑÑÑ ÑÐºÐ°Ð·Ð°ÐœÐžÑÐŒ ÐŒÐµÑÑÐœÐŸÑÑÐµÐ¹ ÐžÐ»Ðž Ð²ÑÐµÐŒÐµÐœÐœÑÑ
+ Ð¿ÑÐŸÐŒÐµÐ¶ÑÑÐºÐŸÐ² Ð²ÐŒÐµÑÑÐŸ ÑÐžÑÑÐŸÐ²ÑÑ
+ ÐžÐŽÐµÐœÑÐžÑÐžÐºÐ°ÑÐŸÑÐŸÐ², ÐºÐ°Ðº, ÐœÐ°Ð¿ÑÐžÐŒÐµÑ, ÑÐžÑÑÐµÐŒ ÐºÐŸÐŸÑÐŽÐžÐœÐ°Ñ ÐžÐ»Ðž Ð²ÑÐµÐŒÐµÐœÐœÑÑ
+ ÑÑÐŽÐŸÐ².</Attribute>
+        </Language>
+        <!-- Spanish -->
+        <Language code="es">
+            <Attribute name="label">Cobertura</Attribute>
+            <Attribute name="definition">La caracterÃ­stica de cobertura espacial y/o temporal del contenido intelectual del recurso. La cobertura espacial se refiere a una regiÃ³n fÃ­sica (por ejemplo, sector celestial); uso de coordenadas (por ejemplo, longitud y latitud) o nombres de lugares extraidos de una lista controlada. La cobertura temporal se refiere al contenido del recurso en vez de a cuando fue creado o puesto accesible ya que este Ãºltimo pertenece al elemento Date. Se usa el mismo formato basado en http://www.w3.org/TR/NOTE-datetime.</Attribute>
+        </Language>
+        <!-- Arabic -->
+        <Language code="ar">
+            <Attribute name="label">Ø§ÙØªØºØ·ÙØ©</Attribute>
+            <Attribute name="definition">ÙÙ Ø§ÙØ®ØµØ§ØŠØµ Ø§ÙÙ
+ÙØ§ÙÙØ© Ø§Ù Ø§ÙØ²Ù
+ÙÙØ© ÙÙÙ
+Ø­ØªÙÙ Ø§ÙÙÙØ±Ù ÙÙÙ
+ØµØ¯Ø± . Ø§ÙØªØºØ·ÙØ© Ø§ÙÙ
+ÙØ§ÙÙØ© ØªØŽÙØ± Ø§ÙÙ Ø¬ÙØ© Ø·ØšÙØ¹ÙØ© )Ù
+Ø«Ù , ÙØ·Ø§Ø¹ Ø³Ù
+Ø§ÙÙ (    Ø§Ø³ØªØ®Ø¯Ø§Ù
+ Ø§ÙØ§Ø­Ø¯Ø§Ø«ÙØ§Øª ) Ù
+Ø«Ù  Ø®Ø· Ø§ÙØ·ÙÙ Ù Ø®Ø· Ø§ÙØ¹Ø±Ø¶ ( ÙÙ Ø£Ø³Ù
+Ø§Ø¡ Ø§Ù
+ÙÙØ© Ù
+Ø³ØªØ­ÙÙ
+Ø© Ø§Ù Ù
+ØªØ¬ÙØ§Øª ØšØ§ÙÙØ§Ù
+Ù . Ø§ÙØªØºØ·ÙØ© Ø§ÙØ²Ù
+ÙÙØ©    Ø«Ø¹ÙØ¯ Ø§ÙÙ Ù
+Ø§ ÙØ±Ø¬Ø¹ Ø§ÙÙÙ Ø§ÙÙ
+ØµØ¯Ø± Ù ÙÙØ³ Ø§Ù Ù
+ØªÙ ØªÙ
+ ØªÙÙÙØ±Ù ) Ø§ÙØ§Ø®ÙØ± ÙØªØ¹ÙÙ ØšØ¹Ø§Ù
+Ù Ø§ÙØªØ§Ø±ÙØ® ( Ø§Ø³ØªØ®Ø¯Ø§Ù
+ ÙÙØ³ ØµÙØºØ© Ø§ÙØªØ§Ø±ÙØ®  Ø§Ù Ø§ÙÙÙØª    ) Ø¹Ø§Ø¯Ø© Ù
+Ø¯Ù ] ( ØµÙØ§ØºØ§Øª Ø§ÙÙÙÙ
+ Ù Ø§ÙÙÙØª ) Ø§Ø¹ØªÙ
+Ø§Ø¯Ø§ Ø¹ÙÙ (ISO 8601 Ø§ÙÙ
+ÙØ§Ø­ØžØ© Ø§ÙÙÙÙØ© [http://www.w3.org/TR/NOTE-datetime, W3C    ÙÙ
+Ø§ ÙÙ Ù
+ÙØµÙ ØšÙ ÙØ¹Ø§Ù
+Ù Ø§ÙØªØ§Ø±ÙØ® Ø§Ù ÙØªØ±Ø§Øª Ø²Ù
+ÙÙØ© Ù
+Ù ÙØ§ØŠÙ
+Ø© Ù
+Ø³ØªØ­ÙÙ
+Ø© Ø§Ù Ù
+ØªØ¬ÙØ§Øª ØšØ§ÙÙØ§Ù
+Ù</Attribute>
+        </Language>
+        <!-- Chinese - Simplified -->
+        <Language code="cn">
+            <Attribute name="label">èŠçèåŽ</Attribute>
+            <Attribute name="definition">èµæºå
+å®¹ææ¶åçå€å»¶äžèŠçèåŽ</Attribute>
+            <Attribute name="comment">èŠçèåŽäžè¬å
+æ¬ç©ºéŽäœçœ®ïŒäžäžªå°åæå°çåæ ïŒãæ¶éŽåºéŽïŒäžäžªæ¶éŽæ è¯ïŒæ¥ææäžäžªæ¥æè    åŽïŒãæè
+æéïŒæ¯åŠåœåçææå®äœïŒæšèèŠçèåŽæå¥œæ¯åèªäºäžäžªåæ§è¯è¡šïŒäŸåŠå°åè¯åº    [TGN]ïŒïŒå¹¶åºå°œå¯èœå°äœ¿çšç±æ°å­è¡šç€ºçåæ ææ¥æåºéŽæ¥æè¿°å°åäžæ¶éŽæ®µã</Attribute>
+        </Language>
+        <!-- Czech -->
+        <Language code="cs">
+            <Attribute name="label">PokrytÃ­</Attribute>
+            <Attribute name="definition">Rozsah nebo zÃ¡bÄr obsahu zdroje.</Attribute>
+            <Attribute name="comment">PokrytÃ­ bude typicky obsahovat prostorovÃ© umÃ­stÄnÃ­ (jmÃ©no mÃ­sta nebo zemÄpisnÃ© souÅadnice), ÄasovÃ© obdobÃ­ (oznaÄenÃ­ obdobÃ­, datum nebo ÄasovÃœ interval) nebo jurisdikci (napÅ. jmÃ©no administrativnÃ­ jednotky). DoporuÄuje se vybÃ­rat hodnotu z ÅÃ­zenÃ©ho slovnÃ­ku (napÅ. Thesaurus of Geographic Names [TGN]) a tam, kde je to vhodnÃ©, uvÃ¡dÄt mÃ­sta nebo ÄasovÃ© Ãºseky spÃ­Å¡e jmÃ©nem neÅŸ ÄÃ­selnÃœmi identifikÃ¡tory jako jsou soubory souÅadnic nebo ÄasovÃ© intervaly.</Attribute>
+        </Language>
+        <!-- Dutch -->
+        <Language code="nl">
+            <Attribute name="label">Dekking</Attribute>
+            <Attribute name="definition">De ruimtelijke of tijdelijke karakteristieken van de intellectuele inhoud van de Internetbron. Ruimtelijke dekking verwijst naar een geografisch gebied. Gebruik coordinaten (longitude (lengtegraad) en latitude (breedtegraad)) of plaatsnamen die van een gecontroleerde lijst komen of volledig uitgeschreven zijn. Dekking in de tijd geeft de tijdsperiode aan waarop de inhoud van de Internetbron betrekking heeft en niet wanneer de Internetbron is gemaakt of beschikbaar is gesteld (dit laatste hoort ingevult te worden bij &quot;Date&quot;). Gebruik dezelfde datum/tijd formaat als bij &quot;Date&quot;; W3C Technical Note http://www.w3.org/TR/NOTE-datetime of tijdsperioden die van een gecontroleerde lijst komen of volledig uitgeschreven zijn. Coverage is in ontwikkeling bij de Dublin Core Working group http://www.alexandria.ucsb.edu/docs/metadata/dc_coverage.html.</Attribute>
+        </Language>
+        <!-- Finnish -->
+        <Language code="fi">
+            <Attribute name="label"/>
+            <Attribute name="definition"/>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Interlingua -->
+        <Language code="ia">
+            <Attribute name="label">Copertura</Attribute>
+            <Attribute name="definition">Le extension physic o abstracte del contento del ressource.</Attribute>
+            <Attribute name="comment">Le copertura typicamente include un location spatial (un nomine de localitate o coordinatas geographic), un periodo de tempore (un etiquetta de periodo, data, o gamma de datas), o un jurisdiction (tal como un entitate administrative nominate). Le practica recommendate es selectionar un valor a partir de un vocabulario controlate (per exemplo, le Thesaurus of Geographical Names [TGN]) e que, quando appropriate, localitates o periodos de tempore nominate sia utilizate in preferentia a identificatores numeric tales como collectiones de coordinatas o gammas de datas.</Attribute>
+        </Language>
+        <!-- Marathi -->
+        <Language code="mr">
+            <Attribute name="label">à€µà¥à€¯à€Ÿà€ªà¥à€€à¥</Attribute>
+            <Attribute name="definition">à€®à€Ÿà€¹à€¿à€€à¥à€žà€Ÿà€ à¥à€¯à€Ÿà€à¥ à€­à¥à€à¥à€²à€¿à€  à€®à€Ÿà€¹à€¿à€€à¥</Attribute>
+            <Attribute name="comment">à€à€Šà€Ÿ. à€­à¥à€à¥à€²à€¿à€ à€µà¥à€¯à€Ÿà€ªà¥à€€à¥</Attribute>
+        </Language>
+        <!-- Tamil -->
+        <Language code="ta">
+            <Attribute name="label">à®ªà®°à®ªà¯à®ªà¯</Attribute>
+            <Attribute name="definition">à®µà®³à®€à¯à®€à®¿à®©à¯ à®ªà¯à®°à¯à®³à®à®à¯à®à®€à¯à®€à®¿à®©à¯ à®µà®¿à®žà¯à®€à®¿à®°à®£à®®à¯ à®
+à®²à¯à®²à®€à¯ à®µà®°à¯à®¯à¯à®²à¯à®²à¯.</Attribute>
+            <Attribute name="comment">à®à®€à®Ÿà®à®°à®£à®®à®Ÿà®:  à®à®à®®à¯à®à®Ÿà®°à¯à®šà¯à®€ à®à®°à¯à®ªà¯à®ªà®¿à®à®®à¯ (à®à®°à¯ à®à®à®€à¯à®€à®¿à®©à¯ à®ªà¯à®¯à®°à¯ à®
+à®²à¯à®²à®€à¯ à®ªà¯à®µà®¿à®¯à®¿à®¯à®²à¯ à®à®¯à®à¯à®à®³à¯), à®à®®à¯à®®à¯à®à¯à®°à®¿à®¯ à®à®Ÿà®²à®µà®°à¯  (à®à®Ÿà®²à®µà®°à¯ à®
+à®à¯à®¯à®Ÿà®³à®®à¯, à®€à¯à®€à®¿, à®
+à®²à¯à®²à®€à¯ à®€à¯à®€à®¿  à®µà¯à®à¯à®à¯)à®
+à®²à¯à®²à®€à¯ à®à®à¯à® à®à®²à¯à®²à¯ (à®à®€à®Ÿà®à®°à®£à®®à¯: à®šà®¿à®°à¯à®µà®Ÿà® à®ªà¯à®°à¯à®³à¯)à®ªà®°à®ªà¯à®ªà®¿à®²à¯ à®à®³à¯à®ªà¯à®ªà®à¯à®®à¯.  à®à®°à¯ à®à®à¯à®à¯à®ªà¯à®ªà®à¯à® à®à¯à®²à¯ à®µà®³à®€à¯à®€à®¿à®²à®¿à®°à¯à®šà¯à®€à¯ (à®à®€à®Ÿà®à®°à®£à®®à¯: Thesaurus of Geographic Names [TGN])à®®à¯à®²à¯à®®à¯ à®à®à¯à®à¯ à®€à®à¯à®®à¯, à®à®£à¯ à®à¯à®±à®¿à®ªà¯à®ªà®¿à®à¯à®à®³à¯ à®à®€à®Ÿà®à®°à®£à®®à®Ÿà® à®à®¯à®à¯à®à®³à¯ à®à®£à®®à¯ à®
+à®²à¯à®²à®€à¯ à®€à¯à®€à®¿ à®µà¯à®à¯à®à¯à®à¯à®à¯ à®ªà®€à®¿à®²à®Ÿà® à®ªà¯à®¯à®°à¯à®³à¯à®³ à®à®à®à¯à®à®³à¯ à®
+à®²à¯à®²à¯à®€à¯ à®ªà¯à®¯à®°à¯à®³à¯à®³ à®à®Ÿà®²à®µà®°à¯à®à®³à¯ à®à®ªà®¯à¯à®à®¿à®à¯à®à¯à®µà®€à¯ à®šà®Ÿà®à¯à®à®³à¯ à®à®¿à®ªà®Ÿà®°à®à¯ à®à¯à®¯à¯à®¯à¯à®®à¯ à®®à¯à®²à¯à®€à®°à®®à¯ à®à¯à®¯à®²à¯</Attribute>
+        </Language>
+        <!-- Vietnamese -->
+        <Language code="vi">
+            <Attribute name="label">Pháº¡m vi bao quÃ¡t</Attribute>
+            <Attribute name="definition">MÃŽ táº£ má»©c Äá» bao quÃ¡t cá»§a ná»i dung cá»§a nguá»n tin</Attribute>
+            <Attribute name="comment">Pháº¡m vi bao quÃ¡t cÃ³ thá» lÃ  vá» pháº¡m vi khÃŽng gian (tÃªn Äá»a danh, toáº¡ Äá» khÃŽng gian,..), thá»i gian (giai Äoáº¡n, chuá»i ngÃ y thÃ¡ng, ...), pháº¡m vi vá» tÃ i phÃ¡n (tÃªn lÃ£nh thá», nÆ°á»c,..). Khuyáº¿n nghá» sá»­ dá»¥ng tá»« vá»±ng cÃ³ kiá»m soÃ¡t Äá» chá»n lá»±a thuáº­t ngá»¯ phÃ¹ há»£p. ThÃ­ dá»¥ sá»­ dá»¥ng tá»« Äiá»n tá»« chuáº©n vá» tÃªn Äá»a lÃœ, tÃªn Äá»a danh,...</Attribute>
+        </Language>
+        <!-- Non-language specific -->
+        <Attribute name="version">1.1</Attribute>
+        <Attribute language="en" name="registration_authority">Dublin Core Metadata Initiative</Attribute>
+        <Attribute name="obligation">Optional</Attribute>
+        <Attribute name="datatype">Character String</Attribute>
+        <Attribute name="maximum_occurrence">Unlimited</Attribute>
+    </Element>
+    <Element name="Rights">
+        <!-- English -->
+        <Language code="en">
+            <Attribute name="label">Rights Management</Attribute>
+            <Attribute name="definition">Information about rights held in and over the resource.</Attribute>
+            <Attribute name="comment">Typically, a Rights element will contain a rights management statement for the resource, or reference a service providing such information. Rights information often encompasses Intellectual Property Rights (IPR), Copyright, and various Property Rights. If the Rights element is absent, no assumptions can be made about the status of these and other rights with respect to the resource.</Attribute>
+        </Language>
+        <!-- Maori -->
+        <Language code="mi">
+            <Attribute name="label">Motika</Attribute>
+            <Attribute name="definition">Ko nga mohiohio ki nga motika o tetahi rauemi.</Attribute>
+            <Attribute name="comment">Ko te tikanga, kei te huanga Motika e pupuri ana he korero mo te whakaritenga motika mo te rauemi, he ratonga tohutoro e whakarato ana ranei i enei tumomo mohiohio. He nui nga wa, puta ai i roto i te mohiohio Motika te Mana Whakairo Hinegaro (Intellectual Property Rights - (IPR)), te Manatarua me nga Tuahua Mana Taonga (Property Rights). Ki te kore te huanga Motika, kaore e taea te pohehe noa ki te mana o enei, nga motika ranei e pa ana ki te rauemi.</Attribute>
+        </Language>
+        <!-- French -->
+        <Language code="fr">
+            <Attribute name="label">Droits</Attribute>
+            <Attribute name="definition">Information sur les droits sur et au sujet de la ressource.</Attribute>
+            <Attribute name="comment">Typiquement, un Ã©lÃ©ment Droits contiendra un Ã©tat du droit Ã  gÃ©rer une ressource, ou la refÃ©rence Ã  un service fournissant cette information. Ces droits souvent couvrent les droits de propriÃ©tÃ© intellectuelle (IPR), Copyright, et divers droits de propriÃ©tÃ©. Si l&apos;Ã©lÃ©ment Droits est absent, aucune hypothÃšse ne peut Ãªtre faite sur l&apos;Ã©tat de ces droits, ou de tout autre, par rapport Ã  la ressource.</Attribute>
+        </Language>
+        <!-- Russian -->
+        <Language code="ru">
+            <Attribute name="label">ÐÑÐ°Ð²ÐŸÐ²ÐŸÐµ ÑÐµÐ³ÑÐ»ÐžÑÐŸÐ²Ð°ÐœÐžÐµ</Attribute>
+            <Attribute name="definition">ÐÐœÑÐŸÑÐŒÐ°ÑÐžÑ ÐŸ Ð¿ÑÐ°Ð²Ð°Ñ
+ ÐžÑÐ¿ÐŸÐ»ÑÐ·ÐŸÐ²Ð°ÐœÐžÑ, ÑÐŸÐŽÐµÑÐ¶Ð°ÑÐ°ÑÑÑ Ð²ÐœÑÑÑÐž Ðž Ð²ÐœÐµ ÑÐµÑÑÑÑÐ°.</Attribute>
+            <Attribute name="comment">ÐÐ±ÑÑÐœÐŸ ÑÐ»ÐµÐŒÐµÐœÑ ÐÑÐ°Ð²Ð° ÑÐŸÐŽÐµÑÐ¶ÐžÑ Ð¿ÐŸÐ»ÐŸÐ¶ÐµÐœÐžÐµ ÐŸ Ð¿ÑÐ°Ð²ÐŸÐ²ÑÑ
+ ÐœÐŸÑÐŒÐ°Ñ
+, ÑÐµÐ³ÑÐ»ÐžÑÑÑÑÐžÑ
+ ÑÑÐœÐºÑÐžÐŸÐœÐžÑÐŸÐ²Ð°ÐœÐžÐµ ÑÐµÑÑÑÑÐ° ÐžÐ»Ðž ÑÑÑÐ»ÐºÑ ÐœÐ° ÑÐ»ÑÐ¶Ð±Ñ, Ð¿ÑÐµÐŽÐŸÑÑÐ°Ð²Ð»ÑÑÑÑÑ ÑÑÑ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÑ. ÐÑÐ°Ð²ÐŸÐ²Ð°Ñ ÐžÐœÑÐŸÑÐŒÐ°ÑÐžÑ ÐŸÐ±ÑÑÐœÐŸ Ð²ÐºÐ»ÑÑÐ°ÐµÑ ÑÐ²ÐµÐŽÐµÐœÐžÑ ÐŸ ÐÑÐ°Ð²Ð°Ñ
+ ÐžÐœÑÐµÐ»Ð»ÐµÐºÑÑÐ°Ð»ÑÐœÐŸÐ¹ ÑÐŸÐ±ÑÑÐ²ÐµÐœÐœÐŸÑÑÐž, ÐÐ²ÑÐŸÑÑÐºÐŸÐŒ Ð¿ÑÐ°Ð²Ðµ Ðž ÐŽÑÑÐ³ÐžÑ
+ ÐÐŒÑÑÐµÑÑÐ²ÐµÐœÐœÑÑ
+ Ð¿ÑÐ°Ð²Ð°Ñ
+. ÐÑÑÑÑÑÑÐ²ÐžÐµ ÑÐ»ÐµÐŒÐµÐœÑÐ° ÐÑÐ°Ð²Ð° ÐœÐµ ÐŒÐŸÐ¶ÐµÑ ÑÐ²Ð»ÑÑÑÑÑ ÐŸÑÐœÐŸÐ²Ð°ÐœÐžÐµÐŒ ÐŽÐ»Ñ ÐºÐ°ÐºÐžÑ
+-Ð»ÐžÐ±ÐŸ Ð¿ÑÐµÐŽÐ¿ÐŸÐ»ÐŸÐ¶ÐµÐœÐžÐ¹ ÐŸ Ð¿ÑÐ°Ð²ÐŸÐ²ÐŸÐŒ ÑÑÐ°ÑÑÑÐµ Ðž ÐŽÑÑÐ³ÐžÑ
+ Ð¿ÑÐ°Ð²Ð°Ñ
+, ÐºÐ°ÑÐ°ÑÑÐžÑ
+ÑÑ ÑÐµÑÑÑÑÐ°.</Attribute>
+        </Language>
+        <!-- Spanish -->
+        <Language code="es">
+            <Attribute name="label">Derechos</Attribute>
+            <Attribute name="definition">Una referencia (URL, por ejemplo) para una nota sobre derechos de autor, para un servicio de gestiÃ³n de derechos o para un servicio que darÃ¡ informaciÃ³n sobre tÃ©rminos y condiciones de acceso a un recurso. Una especificaciÃ³n formal del elemento Rights se encuentra catualmente en discusiÃ³n y por lo tanto su uso se considera experimental.</Attribute>
+        </Language>
+        <!-- Arabic -->
+        <Language code="ar">
+            <Attribute name="label">Ø­ÙÙÙ Ø§ÙØ§Ø¯Ø§Ø±Ø©</Attribute>
+            <Attribute name="definition">ÙÙ Ø§ÙØ§Ø¯Ø© Ø­ÙÙÙ Ø§ÙØ§Ø¯Ø§Ø±Ø© , Ù
+Ø¹Ø±Ù Ù
+Ø±ØªØšØ· ØšØ§ÙØ§Ø¯Ø© Ø­ÙÙÙ Ø§ ÙØ§Ø¯Ø§Ø±Ø© , Ù
+Ø¹Ø±Ù Ù
+Ø±ØªØšØ· ØšØ®Ø¯Ù
+Ø© ØªÙØ¯Ù
+ Ù
+Ø¹ÙÙÙ
+Ø§Øª Ø¹Ù Ø­ÙÙÙ Ø§ÙØ§Ø¯Ø§Ø±Ø© Ø§ÙØ®Ø§ØµØ© ØšØ§ÙÙ
+ØµØ¯Ø±</Attribute>
+        </Language>
+        <!-- Chinese - Simplified -->
+        <Language code="cn">
+            <Attribute name="label">æé</Attribute>
+            <Attribute name="definition">æå
+³èµæºæ¬èº«ææçæè¢«èµäºçæéä¿¡æ¯</Attribute>
+            <Attribute name="comment">äžè¬èèšïŒæéå
+çŽ åºå
+æ¬äžäžªå¯¹èµæºçæéå£°æïŒæè
+æ¯å¯¹æäŸè¿äžä¿¡æ¯çæå¡çåç
+§ãæéäžè¬    å
+æ¬ç¥è¯äº§æ(IPR)ïŒçææå
+¶ä»åç§åæ ·çäº§æãåŠææ²¡ææéå
+çŽ çæ æ³šïŒäžå¯ä»¥å¯¹äžèµæºçžå
+³    çäžè¿°æå
+¶ä»æå©çæ
+åµäœåºä»»äœåå®ã</Attribute>
+        </Language>
+        <!-- Czech -->
+        <Language code="cs">
+            <Attribute name="label">PrÃ¡va</Attribute>
+            <Attribute name="definition">Informace o prÃ¡vech vztahujÃ­cÃ­ch se k popisovanÃ©mu zdroji.</Attribute>
+            <Attribute name="comment">Prvek PrÃ¡va bude typicky obsahovat ustanovenÃ­ o sprÃ¡vÄ autorskÃœch/vlastnickÃœch prÃ¡v ke zdroji nebo odkaz na sluÅŸbu poskytujÃ­cÃ­ takovÃ©to informace. Informace o prÃ¡vech Äasto zahrnujÃ­ prÃ¡va duÅ¡evnÃ­ho vlastnictvÃ­ (IPR), autorskÃ© prÃ¡vo a rÅ¯znÃ¡ vlastnickÃ¡ prÃ¡va. JestliÅŸe prvek PrÃ¡va chybÃ­, nelze odvozovat ÅŸÃ¡dnÃ© pÅedpoklady o stavu tÄchto a jinÃœch prÃ¡v vztahujÃ­cÃ­ch se k popisovanÃ©mu zdroji.</Attribute>
+        </Language>
+        <!-- Dutch -->
+        <Language code="nl">
+            <Attribute name="label">Copyright</Attribute>
+            <Attribute name="definition">Een copyright verklaring of een link naar een copyright verklaring of een link naar een service die informatie geeft over de copyright van de Internetbron.</Attribute>
+        </Language>
+        <!-- Finnish -->
+        <Language code="fi">
+            <Attribute name="label"/>
+            <Attribute name="definition"/>
+            <Attribute name="comment"/>
+        </Language>
+        <!-- Interlingua -->
+        <Language code="ia">
+            <Attribute name="label">Gestion de derectos</Attribute>
+            <Attribute name="definition">Information super derectos detenite super e a proposito del ressource.</Attribute>
+            <Attribute name="comment">Typicamente le elemento derectos continera un declaration de gestion de derectos pro le ressource, o un referentia a un servicio que provide tal information. Information de derectos frequentemente involve derectos de proprietate intellectual (IPR), copyright e varie derectos de proprietate. Si le elemento Derectos es absente, necun hypothese pote esser facite quanto al stato de iste e altere derectos concernente ressource.</Attribute>
+        </Language>
+        <!-- Marathi -->
+        <Language code="mr">
+            <Attribute name="label">à€¹à€à¥à€</Attribute>
+            <Attribute name="definition">à€¬à¥à€§à¥à€Šà€¿à€ à€žà€à€ªà€Šà¥à€à€Ÿà€¹à€à¥à€</Attribute>
+            <Attribute name="comment">à€žà¥à€µà€€à€à€¹à€Ÿà€à¥ à€²à¥à€à€š à€à€Ÿà€ªà¥à€š à€
+à€¥à€µà€Ÿ à€®à€Ÿà€¹à€¿à€€à¥à€à€Ÿà€³à¥à€¯à€Ÿà€µà€° à€ªà¥à€°à€à€Ÿà€¶à€¿à€€ à€à€°à€£à¥à€¯à€Ÿà€à€Ÿ à€²à¥à€à€ à€
+à€¥à€µà€Ÿ à€²à¥à€à€¿à€à¥à€à€Ÿ à€¬à¥à€§à¥à€Šà€¿à€ à€žà€à€ªà€Šà¥à€à€Ÿà€¹à€à¥à€</Attribute>
+        </Language>
+        <!-- Tamil -->
+        <Language code="ta">
+            <Attribute name="label">à®à®°à®¿à®®à¯à®à®³à¯ à®®à¯à®²à®Ÿà®£à¯à®®à¯</Attribute>
+            <Attribute name="definition">à®µà®³à®€à¯à®€à®¿à®©à¯à®³à¯ à®à®°à®¿à®®à¯à®à®³à¯ à®®à¯à®²à¯à®®à¯ à®µà®³à®€à¯à®€à®¿à®©à¯ à®®à¯à®²à¯ à®à®³à¯à®³ à®à®°à®¿à®®à¯à®à®³à¯ à®ªà®±à¯à®±à®¿à®¯ à®€à®à®µà®²à¯.</Attribute>
+            <Attribute name="comment">à®à®€à®Ÿà®à®°à®©à®®à®Ÿà®, à®à®°à¯ à®à®°à®¿à®®à¯ à®à®±à¯à®ªà¯à®ªà¯ à®à®°à¯ à®µà®³à®®à¯ à®à®°à®¿à®®à¯à®à®³à¯ à®®à¯à®²à®Ÿà®£à¯à®®à¯ à®à¯à®±à¯à®±à¯ à®à®à¯à®®à¯, à®
+à®²à¯à®²à®€à¯ à®à®šà¯à®€ à®€à®à®µà®²à¯ à®à¯à®à¯à®à¯à®à¯à®®à¯ à®à¯à®µà¯à®¯à®¯à¯ à®à¯à®à¯à®à®¿à®à¯à®à®Ÿà®à¯à®à¯à®®à¯. à®à®°à®¿à®®à¯à®à®³à¯ à®€à®à®µà®²à®¿à®²à¯ à®
+à®©à¯à®à®®à®Ÿà®  à®
+à®±à®¿à®µà®Ÿà®±à¯à®±à®²à¯ à®à®°à®¿à®®à¯ (Intellectual Property Rights (IPR)), à®ªà®¿à®°à®à¯à®° (à®ªà®€à®¿à®ªà¯à®ªà¯) à®à®°à®¿à®®à¯, à®®à¯à®²à¯à®®à¯ à®ªà®² à®ªà®Ÿà®©à¯à®®à¯ à®à®°à®¿à®®à¯à®à®³à¯ à®ªà®±à¯à®±à®¿ à®à®°à¯à®à¯à®à¯à®®à¯.</Attribute>
+        </Language>
+        <!-- Vietnamese -->
+        <Language code="vi">
+            <Attribute name="label">Quyá»n</Attribute>
+            <Attribute name="definition">ThÃŽng tin vá» cÃ¡c quyá»n cÃ³ ÄÆ°á»£c Äá»i vá»i nguá»n tin hoáº·c Äá»i vá»i thÃŽng tin.</Attribute>
+            <Attribute name="comment">Yáº¿u tá» Quyá»n chá»©a thÃŽng bÃ¡o vá» cÃ¡c quyá»n liÃªn quan Äáº¿n nguá»n tin hoáº·c chá» dáº«n Äáº¿n má»t dá»ch vá»¥ cung cáº¥p thÃŽng bÃ¡o nhÆ° váº­y vá» quyá»n. ThÃŽng tin vá» quyá»n cÃ³ thá» bao gá»m thÃŽng tin vá» quyá»n sá» há»¯u trÃ­ tuá», báº£n quyá»n vÃ  cÃ¡c quyá»n liÃªn quan khÃ¡c.</Attribute>
+        </Language>
+        <!-- Non-language specific -->
+        <Attribute name="version">1.1</Attribute>
+        <Attribute language="en" name="registration_authority">Dublin Core Metadata Initiative</Attribute>
+        <Attribute name="obligation">Optional</Attribute>
+        <Attribute name="datatype">Character String</Attribute>
+        <Attribute name="maximum_occurrence">Unlimited</Attribute>
+    </Element>
+</MetadataSet>
Index: main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/metadata/ex.mds
===================================================================
--- main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/metadata/ex.mds	(revision 30446)
+++ main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/metadata/ex.mds	(revision 30446)
@@ -0,0 +1,496 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE MetadataSet SYSTEM "http://www.greenstone.org/dtd/MetadataSet/1.0/MetadataSet.dtd">
+<MetadataSet contact="nzdl.org" creator="New Zealand Digital Libraries Project: Greenstone" family="Extracted Greenstone" lastchanged="Tue Sep 05 14:40:36 NZST 2006 - kjdon on kanuka" namespace="ex">
+    <SetLanguage code="en">
+        <Name>Extracted Greenstone Metadata 1.1</Name>
+        <Description>This document is the reference description, version 1.1 of the automatically extracted Greenstone Metadata Element Set. Most of the possible extracted metadata elements have been added.</Description>
+    </SetLanguage>
+    <SetLanguage code="vi">
+        <Name>Bá» siÃªu dá»¯ liá»u Greenstone</Name>
+        <Description>MÃŽ táº£ vá» bá» siÃªu dá»¯ liá»u Greenstone phiÃªn báº£n 1.1 cho yáº¿u tá» siÃªu dá»¯ liá»u Greenstone ÄÆ°á»£c triáº¿t rÃºt tá»± Äá»ng</Description>
+    </SetLanguage>
+    <SetLanguage code="ar">
+    	<Name language="ar">ÙØ§ØµÙØ§Øª ØšÙØ§ÙØ§Øª Greenstone Ø§ÙÙ
+Ø³ØªØ®Ø±Ø¬Ø© 1.0</Name>
+    	<Description language="ar">ÙØ§ØµÙØ§Øª ØšÙØ§ÙØ§Øª ÙØ±ÙÙØ³ØªÙÙ</Description>
+       </SetLanguage>
+
+    <Element name="Title">
+        <Language code="en">
+            <Attribute name="comment">Not always available.</Attribute>
+            <Attribute name="definition">The title of the imported document as extracted by Greenstone.</Attribute>
+            <Attribute name="label">Title</Attribute>
+        </Language>
+        <Language code="vi">
+            <Attribute name="label">Nhan Äá»</Attribute>
+            <Attribute name="definition">Nhan Äá» cá»§a tÃ i liá»u nháº­p kháº©u vÃ o Há» thá»ng vÃ  ÄÆ°á»£c Greenstone triáº¿t rÃºt tá»± Äá»ng</Attribute>
+            <Attribute name="comment">KhÃŽng pháº£i lÃºc nÃ o cÅ©ng sáºµn cÃ³</Attribute>
+        </Language>
+        <Language code="ar">
+             <Attribute name="label">Ø§ÙØ¹ÙÙØ§Ù</Attribute>
+             <Attribute name="definition">Ø§ÙØ¹ÙÙØ§Ù</Attribute>
+              <Attribute name="comment">ØºÙØ± Ù
+ØªÙÙØ± Ø¯Ø§ØŠÙ
+Ø§.</Attribute>
+        </Language>
+
+    </Element>
+    <Element name="Encoding">
+        <Language code="en">
+            <Attribute name="comment">Not always available.</Attribute>
+            <Attribute name="definition">The encoding of the imported document as extracted by Greenstone.</Attribute>
+            <Attribute name="label">Encoding</Attribute>
+        </Language>
+        <Language code="vi">
+            <Attribute name="label">Bá» mÃ£ kÃœ tá»±</Attribute>
+            <Attribute name="definition">ThÃŽng tin bá» mÃ£ kÃœ tá»± cá»§a tÃ i liá»u ÄÆ°á»£c nháº­p kháº©u mÃ  Greenstone tá»± Äá»ng triáº¿t rut ÄÆ°á»£c</Attribute>
+            <Attribute name="comment">KhÃŽng pháº£i lÃºc nÃ o cÅ©ng cÃ³ sáºµn</Attribute>
+        </Language>
+        <Language code="ar">
+            <Attribute name="label">Ø§ÙØªØŽÙÙØ±</Attribute>
+            <Attribute name="definition">Ø§ÙØªØŽÙÙØ±</Attribute>
+            <Attribute name="comment">ØºÙØ± Ù
+ØªÙÙØ± Ø¯Ø§ØŠÙ
+Ø§.</Attribute>
+    </Language>
+
+    </Element>
+    <Element name="Language">
+        <Language code="en">
+            <Attribute name="comment">Not always available.</Attribute>
+            <Attribute name="definition">The language of the imported document as extracted by Greenstone.</Attribute>
+            <Attribute name="label">Language</Attribute>
+        </Language>
+        <Language code="vi">
+            <Attribute name="label">NgÃŽn ngá»¯</Attribute>
+            <Attribute name="definition">TÃªn ngÃŽn ngá»¯ cá»§a tÃ i liá»u mÃ  Greenstone tá»± Äá»ng triáº¿t rÃºt ÄÆ°á»£c.</Attribute>
+            <Attribute name="comment">KhÃŽng pháº£i lÃºc nÃ o cÅ©ng cÃ³ sáºµn</Attribute>
+        </Language>
+        <Language code="ar">
+            <Attribute name="label">Ø§ÙÙØºØ©</Attribute>
+            <Attribute name="definition">Ø§ÙÙØºØ©</Attribute>
+            <Attribute name="comment">ØºÙØ± Ù
+ØªÙÙØ± Ø¯Ø§ØŠÙ
+Ø§.</Attribute>
+        </Language>
+
+    </Element>
+    <Element name="Source">
+        <Language code="en">
+            <Attribute name="comment"/>
+            <Attribute name="definition">The filename of the document imported by Greenstone, suitable for display.</Attribute>
+            <Attribute name="label">Source</Attribute>
+        </Language>
+        <Language code="vi">
+            <Attribute name="label">TÃªn tá»p tin</Attribute>
+            <Attribute name="definition">TÃªn tá»p tin cá»§Ã¢tÃ¬ liá»u ÄÆ°á»£c Greenstone nháº­p kháº©u vÃ o há» thá»ng.</Attribute>
+            <Attribute name="comment">áºšn Äá»i vá»i GLI bá»i ÄÃ£ ÄÆ°á»£c hiá»n thá» trong cÃ¢y thÆ° má»¥c</Attribute>
+        </Language>
+        <Language code="ar">
+            <Attribute name="label">Ø§Ø³Ù
+Ø§Ø¡ Ø§ÙÙ
+ÙÙØ§Øª</Attribute>
+            <Attribute name="definition"></Attribute>
+            <Attribute name="comment">ØºÙØ± Ù
+ØªÙÙØ± Ø¯Ø§ØŠÙ
+Ø§.</Attribute>
+        </Language>
+
+    </Element>
+    <Element name="SourceFile">
+        <Language code="en">
+            <Attribute name="label">SourceFile</Attribute>
+            <Attribute name="definition">The file the metadata has been extracted from</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="FileSize">
+        <Language code="en">
+            <Attribute name="label">FileSize</Attribute>
+            <Attribute name="definition">The size of the source file in bytes</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="FileFormat">
+        <Language code="en">
+            <Attribute name="label">FileFormat</Attribute>
+            <Attribute name="definition">The format of the source file</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="MimeType">
+        <Language code="en">
+            <Attribute name="label">MimeType</Attribute>
+            <Attribute name="definition">The MIME type of the source file</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="Identifier">
+        <Language code="en">
+            <Attribute name="label">Identifier</Attribute>
+            <Attribute name="definition">Identifier assigned by Greenstone</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+        <Language code="ab">
+            <Attribute name="label"/>
+            <Attribute name="definition"/>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="Plugin">
+        <Language code="en">
+            <Attribute name="label">Plugin</Attribute>
+            <Attribute name="definition">The Greenstone plugin used to extract metadata</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="URL">
+        <Language code="en">
+            <Attribute name="label">URL</Attribute>
+            <Attribute name="definition">The URL the source file was retrieved from</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="assocfilepath">
+        <Language code="en">
+            <Attribute name="label">assocfilepath</Attribute>
+            <Attribute name="definition">The filepath of any associated files</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="lastmodified">
+        <Language code="en">
+            <Attribute name="label">lastmodified</Attribute>
+            <Attribute name="definition">The date of the last modification of the source file</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="hascover">
+        <Language code="en">
+            <Attribute name="label">hascover</Attribute>
+            <Attribute name="definition">Whether or not a cover has been defined for the source file</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="NoText">
+        <Language code="en">
+            <Attribute name="label">NoText</Attribute>
+            <Attribute name="definition">True if the source file has no text</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="Date">
+        <Language code="en">
+            <Attribute name="label">Date</Attribute>
+            <Attribute name="definition">The date of the source file</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="Image">
+        <Language code="en">
+            <Attribute name="label">Image</Attribute>
+            <Attribute name="definition">Image</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="ImageType">
+        <Language code="en">
+            <Attribute name="label">ImageType</Attribute>
+            <Attribute name="definition">The type of the image</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="ImageSize">
+        <Language code="en">
+            <Attribute name="label">ImageSize</Attribute>
+            <Attribute name="definition">The size of the image in bytes</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="ImageHeight">
+        <Language code="en">
+            <Attribute name="label">ImageHeight</Attribute>
+            <Attribute name="definition">The height of the image in pixels</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="ImageWidth">
+        <Language code="en">
+            <Attribute name="label">ImageWidth</Attribute>
+            <Attribute name="definition">The width of the image in pixels</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="Thumb">
+        <Language code="en">
+            <Attribute name="label">Thumb</Attribute>
+            <Attribute name="definition">Thumbnail image</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="ThumbType">
+        <Language code="en">
+            <Attribute name="label">ThumbType</Attribute>
+            <Attribute name="definition">The file type of the thumbnail image</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="ThumbWidth">
+        <Language code="en">
+            <Attribute name="label">ThumbWidth</Attribute>
+            <Attribute name="definition">The width of the thumbnail image in pixels</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="ThumbHeight">
+        <Language code="en">
+            <Attribute name="label">ThumbHeight</Attribute>
+            <Attribute name="definition">The height of the thumbnail image in pixels</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="Screen">
+        <Language code="en">
+            <Attribute name="label">Screen</Attribute>
+            <Attribute name="definition">Screen</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="ScreenType">
+        <Language code="en">
+            <Attribute name="label">ScreenType</Attribute>
+            <Attribute name="definition">The type of the screen</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="ScreenWidth">
+        <Language code="en">
+            <Attribute name="label">ScreenWidth</Attribute>
+            <Attribute name="definition">The width of the screen in pixels</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="ScreenHeight">
+        <Language code="en">
+            <Attribute name="label">ScreenHeight</Attribute>
+            <Attribute name="definition">The height of the screen in pixels</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="SourceSegment">
+        <Language code="en">
+            <Attribute name="label">SourceSegment</Attribute>
+            <Attribute name="definition">Source segment</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="NumPages">
+        <Language code="en">
+            <Attribute name="label">NumPages</Attribute>
+            <Attribute name="definition">Number of pages</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="HTMLDisplay">
+        <Language code="en">
+            <Attribute name="label">HTMLDisplay</Attribute>
+            <Attribute name="definition">from procite plugin</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="RecordNumber">
+        <Language code="en">
+            <Attribute name="label">RecordNumber</Attribute>
+            <Attribute name="definition">from procite plugin</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="Workform">
+        <Language code="en">
+            <Attribute name="label">Workform</Attribute>
+            <Attribute name="definition">from procite plugin</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="Pages">
+        <Language code="en">
+            <Attribute name="label">Pages</Attribute>
+            <Attribute name="definition">Pages</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="PageNum">
+        <Language code="en">
+            <Attribute name="label">PageNum</Attribute>
+            <Attribute name="definition">Number of pages</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="GENERATOR">
+        <Language code="en">
+            <Attribute name="label">GENERATOR</Attribute>
+            <Attribute name="definition">GENERATOR</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="ISISRawRecord">
+        <Language code="en">
+            <Attribute name="label">ISISRawRecord</Attribute>
+            <Attribute name="definition">ISISRawRecord</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="Creator">
+        <Language code="en">
+            <Attribute name="label">Creator</Attribute>
+            <Attribute name="definition">The Creator of a record, as extracted by Latex, Bibtex, and Refer plugins. Contains a concatenated set of all Authors.</Attribute>
+            <Attribute name="comment">Not always available.</Attribute>
+        </Language>
+    </Element>
+    <Element name="Author">
+        <Language code="en">
+            <Attribute name="label">Author</Attribute>
+            <Attribute name="definition">The Author of a record, as extracted byLatex, Bibtex, and Refer plugins. Each Author specified individually.</Attribute>
+            <Attribute name="comment">Not always available.</Attribute>
+        </Language>
+        <Language code="ar">
+            <Attribute name="label">Ø§ÙÙ
+Ø€ÙÙ ØŽØ®Øµ</Attribute>
+            <Attribute name="definition">Ø§ÙÙ
+Ø€ÙÙ ØŽØ®Øµ</Attribute>
+            <Attribute name="comment">ØºÙØ± Ù
+ØªÙÙØ± Ø¯Ø§ØŠÙ
+Ø§.</Attribute>
+        </Language>
+    </Element>
+    <Element name="Placename">
+        <Language code="en">
+            <Attribute name="label">Placename</Attribute>
+            <Attribute name="definition">from gis plugin</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="Headers">
+        <Language code="en">
+            <Attribute name="label">Headers</Attribute>
+            <Attribute name="definition">from email plugin</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="InReplyTo">
+        <Language code="en">
+            <Attribute name="label">InReplyTo</Attribute>
+            <Attribute name="definition">from email plugin</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="FromName">
+        <Language code="en">
+            <Attribute name="label">FromName</Attribute>
+            <Attribute name="definition">from email plugin</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="FromAddr">
+        <Language code="en">
+            <Attribute name="label">FromAddr</Attribute>
+            <Attribute name="definition">from email plugin</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="EmailAddress">
+        <Language code="en">
+            <Attribute name="label">EmailAddress</Attribute>
+            <Attribute name="definition">Email address</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="EntryType">
+        <Language code="en">
+            <Attribute name="label">EntryType</Attribute>
+            <Attribute name="definition">from bibtex plugin</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="Keyword">
+        <Language code="en">
+            <Attribute name="label">Keyword</Attribute>
+            <Attribute name="definition">Keywords for a record, as extracted by Bibtex and Refer plugins.</Attribute>
+            <Attribute name="comment">Not always available.</Attribute>
+        </Language>
+        <Language code="ar">
+            <Attribute name="label">Ø§ÙÙÙÙ
+Ø§Øª Ø§ÙÙ
+ÙØªØ§Ø­ÙØ©</Attribute>
+            <Attribute name="definition">Ø§ÙÙÙÙ
+Ø§Øª Ø§ÙÙ
+ÙØªØ§Ø­ÙØ©</Attribute>
+            <Attribute name="comment">ØºÙØ± Ù
+ØªÙÙØ± Ø¯Ø§ØŠÙ
+Ø§.</Attribute>
+        </Language>
+    </Element>
+    <Element name="BookConfOnly">
+        <Language code="en">
+            <Attribute name="label">BookConfOnly</Attribute>
+            <Attribute name="definition">from bibtex, refer plugin</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="JournalsOnly">
+        <Language code="en">
+            <Attribute name="label">JournalsOnly</Attribute>
+            <Attribute name="definition">from bibtex, refer plugin</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="equivlink">
+        <Language code="en">
+            <Attribute name="label">equivlink</Attribute>
+            <Attribute name="definition">equivlink</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="Acronym">
+        <Language code="en">
+            <Attribute name="label">Acronym</Attribute>
+            <Attribute name="definition">Acronym</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="mp3applet">
+        <Language code="en">
+            <Attribute name="label">mp3applet</Attribute>
+            <Attribute name="definition">from mp3 plugin</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="giquery">
+        <Language code="en">
+            <Attribute name="label">giquery</Attribute>
+            <Attribute name="definition">from mp3 plugin</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="srcurl">
+        <Language code="en">
+            <Attribute name="label">srcurl</Attribute>
+            <Attribute name="definition">from mp3 plugin</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="Keyphrase">
+        <Language code="en">
+            <Attribute name="label">Keyphrase</Attribute>
+            <Attribute name="definition">Keyphrase</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+    <Element name="Keyphrases">
+        <Language code="en">
+            <Attribute name="label">Keyphrases</Attribute>
+            <Attribute name="definition">Keyphrases</Attribute>
+            <Attribute name="comment"/>
+        </Language>
+    </Element>
+</MetadataSet>
Index: main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/metadata/greenstone.mds
===================================================================
--- main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/metadata/greenstone.mds	(revision 30446)
+++ main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/metadata/greenstone.mds	(revision 30446)
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE MetadataSet SYSTEM "http://www.greenstone.org/dtd/MetadataSet/1.0/MetadataSet.dtd">
+<MetadataSet contact="" creator="" family="" lastchanged="Tue Sep 05 14:40:36 NZST 2006 - kjdon on kanuka" namespace="gs">
+  <SetLanguage code="en">
+    <Name>Greenstone metadata set</Name>
+    <Description>Some special elements particular to Greenstone.</Description>
+  </SetLanguage>
+  <SetLanguage code="vi">
+    <Name>Bá» siÃªu dá»¯ liá»u riÃªng cá»§a Greenstone</Name>
+    <Description>Má»t sá» yáº¿u tá» riÃªng biá»t cho Greenstone.</Description>
+  </SetLanguage>
+  <Element name="DocumentHeader">
+    <Language code="en">
+      <Attribute name="label">Document Header</Attribute>
+      <Attribute name="definition">Headers that will be added to document display. For example, use this to include stylesheets in the document display. The content should be escaped HTML.</Attribute>
+      <Attribute name="comment">The _document:documentheader_ macro will be set to the value of this metadata.</Attribute>
+    </Language>
+    <Language code="vi">
+      <Attribute name="label">TiÃªu Äá» tÃ i liá»u</Attribute>
+      <Attribute name="definition">TiÃªu Äá» ÄÆ°á»£c bá» sung vÃ o pháº§n hiá»n thá» cá»§a tÃ i liá»u. ThÃ­ dá»¥, sá»­ dá»¥ng Äiá»u nÃ y Äá» ÄÆ°a stylesheets vÃ o trong viá»c hiá»n thá» tÃ i liá»u. Ná»i dung cáº§n lÃ  escaped HTML.</Attribute>
+      <Attribute name="comment">Macro  _document:documentheader_ sáºœ ÄÆ°á»£c thiáº¿t láº­p cho giÃ¡ trá» cá»§a siÃªu dá»¯ liá»u nÃ y</Attribute>
+    </Language>
+  </Element>
+  <Element name="OAIDateStamp">
+    <Language code="en">
+      <Attribute name="label">OAI DateStamp</Attribute>
+      <Attribute name="definition">The datestamp of the document to be used by the OAI server. Format must be YYYY-MM-DD. If not defined, oailastmodified will be used instead.</Attribute>
+    </Language>
+  </Element>
+  <Element name="OAIResourceURL">
+    <Language code="en">
+      <Attribute name="label">OAI Resource URL</Attribute>
+      <Attribute name="definition">The URL for the document to be used for dc:identifier. If not defined, a URL to the file defined by srclinkFile metadata will be used instead. If no srclinkFile either, then a URL to the Greenstone version of the document will be used.</Attribute>
+    </Language>
+  </Element>
+  <Element name="allowPrinting">
+    <Language code="en">
+      <Attribute name="label">Allow Printing</Attribute>
+      <Attribute name="definition">Controls whether or not a particular document can be printed from within the Realistic Books software.  Defaults to 'true' (i.e allow printing); set to 'false' to prevent this.</Attribute>
+    </Language>
+  </Element>
+  <Element name="filenameEncoding" accumulating="false">
+    <Language code="en">
+      <Attribute name="label">Filename Encoding</Attribute>
+      <Attribute name="definition">The encoding of the filename. If this is known, it can be manually set here.</Attribute>
+      <Attribute name="comment">If not manually specified, Greenstone will try to guess the encoding of the filename upon building, which may or may not be correct.</Attribute>
+    </Language>
+  </Element>
+  
+</MetadataSet>
Index: main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/metadata/profile.xml
===================================================================
--- main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/metadata/profile.xml	(revision 30446)
+++ main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/metadata/profile.xml	(revision 30446)
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE Profiles [
+<!ELEMENT Profiles (Action*)>
+<!ELEMENT Action (#PCDATA)>
+<!ATTLIST Action
+                source     CDATA #REQUIRED
+                target     CDATA "">
+]>
+<Profiles/>
Index: main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/perllib/XML/Rules.pm
===================================================================
--- main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/perllib/XML/Rules.pm	(revision 30446)
+++ main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/perllib/XML/Rules.pm	(revision 30446)
@@ -0,0 +1,2084 @@
+package XML::Rules;
+
+use warnings;
+no warnings qw(uninitialized);
+use strict;
+use Carp;
+
+require Exporter;
+our @ISA = qw(Exporter);
+our @EXPORT_OK = qw(paths2rules);
+
+use XML::Parser::Expat;
+
+=head1 NAME
+
+XML::Rules - parse XML and specify what and how to keep/process for individual tags
+
+=head1 VERSION
+
+Version 1.05
+
+=cut
+
+our $VERSION = '1.05';
+
+=head1 SYNOPSIS
+
+    use XML::Rules;
+
+	$xml = <<'*END*';
+	<doc>
+	 <person>
+	  <fname>...</fname>
+	  <lname>...</lname>
+	  <email>...</email>
+	  <address>
+	   <street>...</street>
+	   <city>...</city>
+	   <country>...</country>
+	   <bogus>...</bogus>
+	  </address>
+	  <phones>
+	   <phone type="home">123-456-7890</phone>
+	   <phone type="office">663-486-7890</phone>
+	   <phone type="fax">663-486-7000</phone>
+	  </phones>
+	 </person>
+	 <person>
+	  <fname>...</fname>
+	  <lname>...</lname>
+	  <email>...</email>
+	  <address>
+	   <street>...</street>
+	   <city>...</city>
+	   <country>...</country>
+	   <bogus>...</bogus>
+	  </address>
+	  <phones>
+	   <phone type="office">663-486-7891</phone>
+	  </phones>
+	 </person>
+	</doc>
+	*END*
+
+	@rules = (
+		_default => sub {$_[0] => $_[1]->{_content}},
+			# by default I'm only interested in the content of the tag, not the attributes
+		bogus => undef,
+			# let's ignore this tag and all inner ones as well
+		address => sub {address => "$_[1]->{street}, $_[1]->{city} ($_[1]->{country})"},
+			# merge the address into a single string
+		phone => sub {$_[1]->{type} => $_[1]->{_content}},
+			# let's use the "type" attribute as the key and the content as the value
+		phones => sub {delete $_[1]->{_content}; %{$_[1]}},
+			# remove the text content and pass along the type => content from the child nodes
+		person => sub { # lets print the values, all the data is readily available in the attributes
+			print "$_[1]->{lname}, $_[1]->{fname} <$_[1]->{email}>\n";
+			print "Home phone: $_[1]->{home}\n" if $_[1]->{home};
+			print "Office phone: $_[1]->{office}\n" if $_[1]->{office};
+			print "Fax: $_[1]->{fax}\n" if $_[1]->{fax};
+			print "$_[1]->{address}\n\n";
+			return; # the <person> tag is processed, no need to remember what it contained
+		},
+	);
+	$parser = XML::Rules->new(rules => \@rules);
+	$parser->parse( $xml);
+
+=head1 INTRODUCTION
+
+There are several ways to extract data from XML. One that's often used is to read the whole file and transform it into a huge maze of objects and then write code like
+
+	foreach my $obj ($XML->forTheLifeOfMyMotherGiveMeTheFirstChildNamed("Peter")->pleaseBeSoKindAndGiveMeAllChildrenNamedSomethingLike("Jane")) {
+		my $obj2 = $obj->sorryToKeepBotheringButINeedTheChildNamed("Theophile");
+		my $birth = $obj2->whatsTheValueOfAttribute("BirthDate");
+		print "Theophile was bort at $birth\n";
+	}
+
+I'm exagerating of course, but you probably know what I mean. You can of course shorten the path and call just one method ... that is if you spend the time to learn one more "cool" thing starting with X. XPath.
+
+You can also use XML::Simple and generate an almost equaly huge maze of hashes and arrays ... which may make the code more or less complex. In either case you need to have enough memory
+to store all that data, even if you only need a piece here and there.
+
+Another way to parse the XML is to create some subroutines that handle the start and end tags and the text and whatever else may appear in the XML. Some modules will let you specify just one for start tag, one for text and one for end tag, others will let you install different handlers for different tags. The catch is that you have to build your data structures yourself, you have to know where you are, what tag is just open and what is the parent and it's parent etc. so that you could add the attributes and especially the text to the right place. And the handlers have to do everything as their side effect. Does anyone remember what do they say about side efects? They make the code hard to debug, they tend to change the code into a maze of interdependent snippets of code.
+
+So what's the difference in the way XML::Rules works? At the first glance, not much. You can also specify subroutines to be called for the tags encountered while parsing the XML, just like the other even based XML parsers. The difference is that you do not have to rely on sideeffects if all you want is to store the value of a tag. You simply return whatever you need from the current tag and the module will add it at the right place in the data structure it builds and will provide it to the handlers for the parent tag. And if the parent tag does return that data again it will be passed to its parent and so forth. Until we get to the level at which it's convenient to handle all the data we accumulated from the twig.
+
+Do we want to keep just the content and access it in the parent tag handler under a specific name?
+
+	foo => sub {return 'foo' => $_[1]->{_content}}
+
+Do we want to ornament the content a bit and add it to the parent tag's content?
+
+	u => sub {return '_' . $_[1]->{_content} . '_'}
+	strong =>  sub {return '*' . $_[1]->{_content} . '*'}
+	uc =>  sub {return uc($_[1]->{_content})}
+
+Do we want to merge the attributes into a string and access the string from the parent tag under a specified name?
+
+	address => sub {return 'Address' => "Street: $_[1]->{street} $_[1]->{bldngNo}\nCity: $_[1]->{city}\nCountry: $_[1]->{country}\nPostal code: $_[1]->{zip}"}
+
+and in this case the $_[1]->{street} may either be an attribute of the <address> tag or it may be ther result of the handler (rule)
+
+	street => sub {return 'street' => $_[1]->{_content}}
+
+and thus come from a child tag <street>. You may also use the rules to convert codes to values
+
+	our %states = (
+	  AL => 'Alabama',
+	  AK => 'Alaska',
+	  ...
+	);
+	...
+	state => sub {return 'state' => $states{$_[1]->{_content}}; }
+
+ or
+
+	address => sub {
+		if (exists $_[1]->{id}) {
+			$sthFetchAddress->execute($_[1]->{id});
+			my $addr = $sthFetchAddress->fetchrow_hashref();
+			$sthFetchAddress->finish();
+			return 'address' => $addr;
+		} else {
+			return 'address' => $_[1];
+		}
+	}
+
+so that you do not have to care whether there was
+
+	<address id="147"/>
+
+or
+
+	<address><street>Larry Wall's St.</street><streetno>478</streetno><city>Core</city><country>The Programming Republic of Perl</country></address>
+
+At each level in the tree structure serialized as XML you can decide what to keep, what to throw away, what to transform and then just return the stuff you care about and it will be available to the handler at the next level.
+
+=head1 CONSTRUCTOR
+
+	my $parser = XML::Rules->new(
+		rules => \@rules,
+		[ start_rules => \@start_rules, ]
+		[ stripspaces => 0 / 1 / 2 / 3   +   0 / 4   +   0 / 8, ]
+		[ normalisespaces => 0 / 1, ]
+		[ style => 'parser' / 'filter', ]
+		[ ident => '  ', [reformat_all => 0 / 1] ],
+		[ encode => 'encoding specification', ]
+		[ output_encoding => 'encoding specification', ]
+		[ namespaces => \%namespace2alias_mapping, ]
+		# and optionaly parameters passed to XML::Parser::Expat
+	);
+
+Options passed to XML::Parser::Expat : ProtocolEncoding Namespaces NoExpand Stream_Delimiter ErrorContext ParseParamEnt Base
+
+The "stripspaces" controls the handling of whitespace. Please see the C<Whitespace handling> bellow.
+
+The "style" specifies whether you want to build a parser used to extract stuff from the XML or filter/modify the XML. If you specify
+style => 'filter' then all tags for which you do not specify a subroutine rule or that occure inside such a tag are copied to the output filehandle
+passed to the ->filter() or ->filterfile() methods.
+
+The "ident" specifies what character(s) to use to ident the tags when filtering, by default the tags are not formatted in any way. If the
+"reformat_all" is not set then this affects only the tags that have a rule and their subtags. And in case of subtags only those that were
+added into the attribute hash by their rules, not those left in the _content array!
+
+The "warnoverwrite" instructs XML::Rules to issue a warning whenever the rule cause a key in a tag's hash to be overwritten by new
+data produced by the rule of a subtag. This happens eg. if a tag is repeated and its rule doesn't expect it.
+
+The "encode" allows you to ask the module to run all data through Encode::encode( 'encoding_specification', ...)
+before being passed to the rules. Otherwise all data comes as UTF8.
+
+The "output_encoding" on the other hand specifies in what encoding is the resulting data going to be, the default is again UTF8.
+This means that if you specify
+
+	encode => 'windows-1250',
+	output_encoding => 'utf8',
+
+and the XML is in ISO-8859-2 (Latin2) then the filter will 1) convert the content and attributes of the tags you are not interested in from Latin2
+directly to utf8 and output and 2) convert the content and attributes of the tags you want to process from Latin2 to Windows-1250, let you mangle
+the data and then convert the results to utf8 for the output.
+
+The C<encode> and C<output_enconding> affects also the C<$parser->toXML(...)>, if they are different then the data are converted from
+one encoding to the other.
+
+=head2 The Rules
+
+The rules option may be either an arrayref or a hashref, the module doesn't care, but if you want to use regexps to specify the groups of tags to be handled
+by the same rule you should use the array ref. The rules array/hash is made of pairs in form
+
+	tagspecification => action
+
+where the tagspecification may be either a name of a tag, a string containing comma or pipe ( "|" ) delimited list of tag names
+or a string containing a regexp enclosed in // with optional parameters or a qr// compiled regular expressions. The tag names and tag name lists
+take precedence to the regexps, the regexps are (in case of arrayref only!!!) tested in the order in which they are specified.
+
+These rules are evaluated/executed whenever a tag if fully parsed including all the content and child tags and they may access the content and attributes of the
+specified tag plus the stuff produced by the rules evaluated for the child tags.
+
+The action may be either
+
+	an undef or empty string = ignore the tag and all its children
+	a subroutine reference = the subroutine will be called to handle the tag data&contents
+		sub { my ($tagname, $attrHash, $contexArray, $parentDataArray, $parser) = @_; ...}
+	'content' = only the content of the tag is preserved and added to
+		the parent tag's hash as an attribute named after the tag
+		sub { $_[0] => $_[1]->{_content}}
+	'content trim' = only the content of the tag is preserved, trimmed and added to
+		the parent tag's hash as an attribute named after the tag
+		sub { s/^\s+//,s/\s+$// for ($_[1]->{_content}); $_[0] => $_[1]->{_content}}
+	'content array' = only the content of the tag is preserved and pushed
+		to the array pointed to by the attribute
+		sub { '@' . $_[0] => $_[1]->{_content}}
+	'as is' = the tag's hash is added to the parent tag's hash
+		as an attribute named after the tag
+		sub { $_[0] => $_[1]}
+	'as is trim' = the tag's hash is added to the parent tag's hash
+		as an attribute named after the tag, the content is trimmed
+		sub { $_[0] => $_[1]}
+	'as array' = the tag's hash is pushed to the attribute named after the tag
+		in the parent tag's hash
+		sub { '@'.$_[0] => $_[1]}
+	'as array trim' = the tag's hash is pushed to the attribute named after the tag
+		in the parent tag's hash, the content is trimmed
+		sub { '@'.$_[0] => $_[1]}
+	'no content' = the _content is removed from the tag's hash and the hash
+		is added to the parent's hash into the attribute named after the tag
+		sub { delete $_[1]->{_content}; $_[0] => $_[1]}
+	'no content array' = similar to 'no content' except the hash is pushed
+		into the array referenced by the attribute
+	'as array no content' = same as 'no content array'
+	'pass' = the tag's hash is dissolved into the parent's hash,
+		that is all tag's attributes become the parent's attributes.
+		The _content is appended to the parent's _content.
+		sub { %{$_[0]}}
+	'pass no content' = the _content is removed and the hash is dissolved
+		into the parent's hash.
+		sub { delete $_[1]->{_content}; %{$_[0]}}
+	'pass without content' = same as 'pass no content'
+	'raw' = the [tagname => attrs] is pushed to the parent tag's _content.
+		You would use this style if you wanted to be able to print
+		the parent tag as XML preserving the whitespace or other textual content
+		sub { [$_[0] => $_[1]]}
+	'raw extended' = the [tagname => attrs] is pushed to the parent tag's _content
+		and the attrs are added to the parent's attribute hash with ":$tagname" as the key
+		sub { (':'.$_[0] => $_[1], [$_[0] => $_[1]])};
+	'raw extended array' = the [tagname => attrs] is pushed to the parent tag's _content
+		and the attrs are pushed to the parent's attribute hash with ":$tagname" as the key
+		sub { ('@:'.$_[0] => $_[1], [$_[0] => $_[1]])};
+	'by <attrname>' = uses the value of the specified attribute as the key when adding the
+		attribute hash into the parent tag's hash. You can specify more names, in that case
+		the first found is used.
+		sub {delete($_[1]->{name}) => $_[1]}
+	'content by <attrname>' = uses the value of the specified attribute as the key when adding the
+		tags content into the parent tag's hash. You can specify more names, in that case
+		the first found is used.
+		sub {$_[1]->{name} => $_[1]->{_content}}
+	'no content by <attrname>' = uses the value of the specified attribute as the key when adding the
+		attribute hash into the parent tag's hash. The content is dropped. You can specify more names,
+		in that case the first found is used.
+		sub {delete($_[1]->{_content}); delete($_[1]->{name}) => $_[1]}
+	'==...' = replace the tag by the specified string. That is the string will be added to
+		the parent tag's _content
+		sub { return '...' }
+	'=...' = replace the tag contents by the specified string and forget the attributes.
+		sub { return $_[0] => '...' }
+
+You may also add " no xmlns" at the end of all those predefined rules to strip the namespace
+alias from the $_[0] (tag name).
+
+The subroutines in the rules specification receive five parameters:
+
+	$rule->( $tag_name, \%attrs, \@context, \@parent_data, $parser)
+
+It's OK to destroy the first two parameters, but you should treat the other three as read only
+or at least treat them with care!
+
+	$tag_name = string containing the tag name
+	\%attrs = hash containing the attributes of the tag plus the _content key
+		containing the text content of the tag. If it's not a leaf tag it may
+		also contain the data returned by the rules invoked for the child tags.
+	\@context = an array containing the names of the tags enclosing the current
+		one. The parent tag name is the last element of the array.
+	\@parent_data = an array containing the hashes with the attributes
+		and content read&produced for the enclosing tags so far.
+		You may need to access this for example to find out the version
+		of the format specified as an attribute of the root tag. You may
+		safely add, change or delete attributes in the hashes, but all bets
+		are off if you change the number or type of elements of this array!
+	$parser = the parser object.
+
+The subroutine may decide to handle the data and return nothing or
+tweak the data as necessary and return just the relevant bits. It may also
+load more information from elsewhere based on the ids found in the XML
+and provide it to the rules of the ancestor tags as if it was part of the XML.
+
+The possible return values of the subroutines are:
+
+1) nothing or undef or "" - nothing gets added to the parent tag's hash
+
+2) a single string - if the parent's _content is a string then the one produced by this rule is appended to the parent's _content.
+If the parent's _content is an array, then the string is push()ed to the array.
+
+3) a single reference - if the parent's _content is a string then it's changed to an array containing the original string and this reference.
+If the parent's _content is an array, then the string is push()ed to the array.
+
+4) an even numbered list - it's a list of key & value pairs to be added to the parent's hash.
+
+The handling of the attributes may be changed by adding '@', '%', '+', '*' or '.' before the attribute name.
+
+Without any "sigil" the key & value is added to the hash overwriting any previous values.
+
+The values for the keys starting with '@' are push()ed to the arrays referenced by the key name
+without the @. If there already is an attribute of the same name then the value will be preserved and will become
+the first element in the array.
+
+The values for the keys starting with '%' have to be either hash or array references. The key&value pairs
+in the referenced hash or array will be added to the hash referenced by the key. This is nice for rows of tags like this:
+
+  <field name="foo" value="12"/>
+  <field name="bar" value="24"/>
+
+if you specify the rule as
+
+  field => sub { '%fields' => [$_[1]->{name} => $_[1]->{value}]}
+
+then the parent tag's has will contain
+
+  fields => {
+    foo => 12,
+	bar => 24,
+  }
+
+The values for the keys starting with '+' are added to the current value, the ones starting with '.' are
+appended to the current value and the ones starting with '*' multiply the current value.
+
+5) an odd numbered list - the last element is appended or push()ed to the parent's _content, the rest is handled as in the previous case.
+
+
+Since 0.19 it's possible to specify several actions for a tag if you need to do something different based on the path to the tag like this:
+
+	tagname => [
+		'tag/path' => action,
+		'/root/tag/path' => action,
+		'/root/*/path' => action,
+		qr{^root/ns:[^/]+/par$} => action,
+		default_action
+	],
+
+The path is matched against the list of parent tags joined by slashes.
+
+=head2 The Start Rules
+
+Apart from the normal rules that get invoked once the tag is fully parsed, including the contents and child tags, you may want to
+attach some code to the start tag to (optionaly) skip whole branches of XML or set up attributes and variables. You may set up
+the start rules either in a separate parameter to the constructor or in the rules=> by prepending the tag name(s) by ^.
+
+These rules are in form
+
+	tagspecification => undef / '' / 'skip'	--> skip the element, including child tags
+	tagspecification => 1 / 'handle'	--> handle the element, may be needed
+		if you specify the _default rule.
+	tagspecification => \&subroutine
+
+The subroutines receive the same parameters as for the "end tag" rules except of course the _content, but their return value is treated differently.
+If the subroutine returns a false value then the whole branch enclosed by the current tag is skipped, no data are stored and no rules are
+executed. You may modify the hash referenced by $attr.
+
+Both types of rules are free to store any data they want in $parser->{pad}. This property is NOT emptied
+after the parsing!
+
+=head2 Whitespace handling
+
+There are two options that affect the whitespace handling: stripspaces and normalisespaces. The normalisespaces is a simple flag that controls
+whether multiple spaces/tabs/newlines are collapsed into a single space or not. The stripspaces is more complex, it's a bit-mask,
+an ORed combination of the following options:
+
+	0 - don't remove whitespace around tags
+	    (around tags means before the opening tag and after the closing tag, not in the tag's content!)
+	1 - remove whitespace before tags whose rules did not return any text content
+	    (the rule specified for the tag caused the data of the tag to be ignored,
+		processed them already or added them as attributes to parent's \%attr)
+	2 - remove whitespace around tags whose rules did not return any text content
+	3 - remove whitespace around all tags
+
+	0 - remove only whitespace-only content
+	    (that is remove the whitespace around <foo/> in this case "<bar>   <foo/>   </bar>"
+		but not this one "<bar>blah   <foo/>  blah</bar>")
+	4 - remove trailing/leading whitespace
+	    (remove the whitespace in both cases above)
+
+	0 - don't trim content
+	8 - do trim content
+		(That is for "<foo>  blah   </foo>" only pass to the rule {_content => 'blah'})
+
+
+That is if you have a data oriented XML in which each tag contains either text content or subtags, but not both,
+you want to use stripspaces => 3 or stripspaces => 3|4. This will not only make sure you don't need to bother
+with the whitespace-only _content of the tags with subtags, but will also make sure you do not keep on wasting
+memory while parsing a huge XML and processing the "twigs". Without that option the parent tag of
+the repeated tag would keep on accumulating unneeded whitespace in its _content.
+
+=cut
+
+sub new {
+	my $class = shift;
+	my %params = @_;
+	croak "Please specify the rules=> for the parser!" unless $params{rules} and ref($params{rules});
+
+	my $self = {rules => {}, start_rules => {}};
+	bless $self, $class;
+
+	my @rules = (ref($params{rules}) eq 'HASH' ? %{$params{rules}} : @{$params{rules}}); # dereference and copy
+	delete $params{rules};
+
+	my @start_rules;
+	if ($params{start_rules} and ref($params{start_rules})) {
+		@start_rules = ref($params{start_rules}) eq 'HASH' ? %{$params{start_rules}} : @{$params{start_rules}}; # dereference and copy
+	};
+	delete $params{start_rules};
+
+	for (my $i=0; $i <= $#rules; $i+=2) {
+		next unless $rules[$i] =~ s/^\^//;
+		push @start_rules, splice( @rules, $i, 2);
+		$i-=2;
+	}
+
+	$self->_split_rules( \@rules, 'rules', 'as is');
+	$self->_split_rules( \@start_rules, 'start_rules', 'handle');
+
+	$self->{for_parser} = {};
+	{ # extract the params for the XML::Parser::Expat constructor
+		my @for_parser = grep exists($params{$_}), qw(ProtocolEncoding Namespaces NoExpand Stream_Delimiter ErrorContext ParseParamEnt Base);
+		if (@for_parser) {
+			@{$self->{for_parser}}{@for_parser} = @params{@for_parser};
+			delete @params{@for_parser};
+		}
+	}
+
+	$self->{namespaces} = delete($params{namespaces});
+	if (defined($self->{namespaces})) {
+		croak 'XML::Rules->new( ... , namespaces => ...HERE...) must be a hash reference!'
+			unless ref($self->{namespaces}) eq 'HASH';
+		$self->{xmlns_map} = {};
+	}
+
+	$self->{style} = delete($params{style}) || 'parser';
+
+	$self->{opt}{lc $_} = $params{$_} for keys %params;
+
+	delete $self->{opt}{encode} if $self->{opt}{encode} =~ /^utf-?8$/i;
+	delete $self->{opt}{output_encoding} if $self->{opt}{output_encoding} =~ /^utf-?8$/i;
+
+	for (qw(normalisespace normalizespace normalizespaces)) {
+		last if defined($self->{opt}{normalisespaces});
+		$self->{opt}{normalisespaces} = $self->{opt}{$_};
+		delete $self->{opt}{$_};
+	}
+	$self->{opt}{normalisespaces} = 0 unless(defined($self->{opt}{normalisespaces}));
+	$self->{opt}{stripspaces} = 0 unless(defined($self->{opt}{stripspaces}));
+
+	require 'Encode.pm' if $self->{opt}{encode};
+	require 'Encode.pm' if $self->{opt}{output_encoding};
+
+	return $self;
+}
+
+sub _split_rules {
+	my ($self, $rules, $type, $default) = @_;
+
+	$self->{$type}{_default} = $default unless exists($self->{$type}{_default});
+
+	while (@$rules) {
+		my ($tag, $code) = (shift(@$rules), shift(@$rules));
+
+		if (ref($code) eq 'ARRAY') {
+			for( my $i = 0; $i < $#$code; $i+=2) {
+				$code->[$i] = _xpath2re($code->[$i]);
+			}
+			push @$code, $self->{$type}{_default} if @$code % 2 == 0; # add the default type if there's even number of items (path => code, path => code)
+		}
+
+		if ($tag =~ m{^/([^/].*)/([imosx]*)$}) { # string with a '/regexp/'
+			if ($2) {
+				push @{$self->{$type.'_re'}}, qr/(?$2)$1/;
+			} else {
+				push @{$self->{$type.'_re'}}, qr/$1/;
+			}
+			push @{$self->{$type.'_re_code'}}, $code;
+		} elsif (ref($tag) eq 'Regexp') { # a qr// created regexp
+			push @{$self->{$type.'_re'}}, $tag;
+			push @{$self->{$type.'_re_code'}}, $code;
+		} elsif ($tag =~ /[,\|]/) { # a , or | separated list
+			if ($tag =~ s/^\^//) {
+				my @tags = split(/\s*[,\|]\s*/, $tag);
+				$self->{$type}{'^'.$_} = $code for (@tags);
+			} else {
+				my @tags = split(/\s*[,\|]\s*/, $tag);
+				$self->{$type}{$_} = $code for (@tags);
+			}
+		} else { # a single tag
+			$self->{$type}{$tag} = $code;
+		}
+	}
+}
+
+sub _xpath2re {
+	my $s = shift;
+	return $s if ref($s);
+	for ($s) {
+		s/([\.\[\]+{}\-])/\\$1/g;
+		s{\*}{.+}g;
+		s{^//}{}s;
+		s{^/}{^}s;
+	}
+	return qr{$s$};
+}
+
+sub skip_rest {
+	die "[XML::Rules] skip rest\n";
+}
+
+sub return_nothing {
+	die "[XML::Rules] return nothing\n";
+}
+
+sub _run {
+	my $self = shift;
+	my $string = shift;
+	$self->{parameters} = shift;
+
+	$self->{parser} = XML::Parser::Expat->new( %{$self->{for_parser}});
+
+	$self->{parser}->setHandlers(
+		Start => _Start($self),
+		End => _End($self),
+		Char => _Char($self),
+		XMLDecl => _XMLDecl($self),
+	);
+
+	$self->{data} = [];
+	$self->{context} = [];
+	$self->{_ltrim} = [0];
+
+	if (! eval {
+		$self->{parser}->parse($string) and 1;
+	}) {
+		my $err = $@;
+		undef $@;
+
+		if ($err =~ /^\[XML::Rules\] skip rest/) {
+			my (undef, $handler) = $self->{parser}->setHandlers(End => undef);
+			foreach my $tag (reverse @{$self->{context} = []}) {
+				$handler->( $self->{parser}, $tag);
+			}
+		} else {
+
+			delete $self->{normal_handlers};
+			delete $self->{ignore_handlers};
+			delete $self->{parameters};
+			$self->{parser}->release();
+
+			$self->{data} = [];
+			$self->{context} = [];
+
+			if ($err =~ /^\[XML::Rules\] return nothing/) {
+				return;
+			}
+
+			$err =~ s/at \S+Rules\.pm line \d+$//
+				and croak $err or die $err;
+		}
+	};
+
+	delete $self->{normal_handlers};
+	delete $self->{ignore_handlers};
+	$self->{parser}->release();
+
+	delete $self->{parameters};
+	my $data; # return the accumulated data, without keeping a copy inside the object
+	($data, $self->{data}) = ($self->{data}[0], undef);
+	if (!defined(wantarray()) or ! keys(%$data)) {
+		return;
+
+	} elsif (keys(%$data) == 1 and exists(${$data}{_content})) {
+		if (ref(${$data}{_content}) eq 'ARRAY' and @{${$data}{_content}} == 1) {
+			return ${${$data}{_content}}[0]
+		} else {
+			return ${$data}{_content}
+		}
+
+	} else {
+		return $data;
+	}
+}
+
+
+sub parsestring;
+*parsestring = \&parse;
+sub parse {
+	my $self = shift;
+	croak("This XML::Rules object may only be used as a filter!") if ($self->{style} eq 'filter');
+	$self->_run(@_);
+}
+
+sub parsefile {
+	my $self = shift;
+	croak("This XML::Rules object may only be used as a filter!") if ($self->{style} eq 'filter');
+	my $filename = shift;
+	open my $IN, '<', $filename or croak "Cannot open '$filename' for reading: $^E";
+	return $self->_run($IN, @_);
+}
+
+
+sub filterstring;
+*filterstring = \&filter;
+sub filter {
+	my $self = shift;
+	croak("This XML::Rules object may only be used as a parser!") unless ($self->{style} eq 'filter');
+
+	my $XML = shift;
+	$self->{FH} = shift || select(); # either passed or the selected filehandle
+	if (!ref($self->{FH})) {
+		if ($self->{FH} =~ /^main::(?:STDOUT|STDERR)$/) {
+			# yeah, select sometimes returns the name of the filehandle, not the filehandle itself. eg. "main::STDOUT"
+			no strict;
+			$self->{FH} = \*{$self->{FH}};
+		} else {
+			open my $FH, '>', $self->{FH} or croak(qq{Failed to open "$self->{FH}" for writing: $^E});
+			$self->{FH} = $FH;
+		}
+	} elsif (ref($self->{FH}) eq 'SCALAR') {
+		open my $FH, '>', $self->{FH};
+		$self->{FH} = $FH;
+	}
+	if ($self->{opt}{output_encoding}) {
+		print {$self->{FH}} qq{<?xml version="1.0" encoding="$self->{opt}{output_encoding}"?>\n};
+	} else {
+		print {$self->{FH}} qq{<?xml version="1.0"?>\n};
+	}
+	$self->_run($XML, @_);
+	print {$self->{FH}} "\n";
+	delete $self->{FH};
+}
+
+sub filterfile {
+	my $self = shift;
+	croak("This XML::Rules object may only be used as a parser!") unless ($self->{style} eq 'filter');
+
+	my $filename = shift;
+	open my $IN, '<', $filename or croak "Cannot open '$filename' for reading: $^E";
+
+	$self->{FH} = shift || select(); # either passed or the selected filehandle
+	if (!ref($self->{FH})) {
+		if ($self->{FH} =~ /^main::(?:STDOUT|STDERR)$/) {
+			# yeah, select sometimes returns the name of the filehandle, not the filehandle itself. eg. "main::STDOUT"
+			no strict;
+			$self->{FH} = \*{$self->{FH}};
+		} else {
+			open my $FH, '>', $self->{FH} or croak(qq{Failed to open "$self->{FH}" for writing: $^E});
+			$self->{FH} = $FH;
+		}
+	} elsif (ref($self->{FH}) eq 'SCALAR') {
+		open $self->{FH}, '>', $self->{FH};
+	}
+	if ($self->{opt}{output_encoding}) {
+		print {$self->{FH}} qq{<?xml version="1.0" encoding="$self->{opt}{output_encoding}"?>\n};
+	} else {
+		print {$self->{FH}} qq{<?xml version="1.0"?>\n};
+	}
+	$self->_run($IN, @_);
+	print {$self->{FH}} "\n";
+	delete $self->{FH};
+}
+
+sub _XMLDecl {
+	my $self = shift;
+	return sub {
+		my ( $Parser, $Version, $Encoding, $Standalone) = @_;
+		$self->{opt}{original_encoding} = $Encoding
+	}
+}
+
+=begin comment
+
+start tag
+	& 3 = 3 -> rtrim parent's _content
+	& 8 = 8 -> $ltrim = 1
+
+string content
+	$ltrim -> ltrim the string, if not completely whitespace set $ltrim  0
+
+end tag
+	& 8 = 8 -> rtrim own content
+	& 3 = 3 -> $ltrim = 1
+	empty_returned_content and & 3 in (1,2) -> rtrim parent content
+	empty_returned_content and & 3  = 2 -> $ltrim
+
+=end comment
+
+=cut
+
+sub _rtrim {
+	my ($self, $attr, $more) = @_;
+
+	if ($more) {
+		if (ref $attr->{_content}) {
+			if (!ref($attr->{_content}[-1])) {
+				$attr->{_content}[-1] =~ s/\s+$//s;
+				pop @{$attr->{_content}} if $attr->{_content}[-1] eq '';
+				delete $attr->{_content} unless @{$attr->{_content}};
+			}
+		} else {
+			$attr->{_content} =~ s/\s+$//s;
+			delete $attr->{_content} if $attr->{_content} eq '';
+		}
+	} else {
+		if (ref $attr->{_content}) {
+			if (!ref($attr->{_content}[-1]) and $attr->{_content}[-1] =~ /^\s*$/s) {
+				pop @{$attr->{_content}} ;
+				delete $attr->{_content} unless @{$attr->{_content}};
+			}
+		} else {
+			delete $attr->{_content} if $attr->{_content}  =~ /^\s*$/s;
+		}
+	}
+}
+
+sub _Start {
+	my $self = shift;
+	my $encode = $self->{opt}{encode};
+	my $output_encoding = $self->{opt}{output_encoding};
+	return sub {
+		my ( $Parser, $Element , %Attr) = @_;
+
+		if (($self->{opt}{stripspaces} & 3) == 3) {
+			#rtrim parent
+#print "rtrim parent content in _Start\n";
+			if ($self->{data}[-1] and $self->{data}[-1]{_content}) {
+				$self->_rtrim( $self->{data}[-1], ($self->{opt}{stripspaces} & 4));
+			}
+		}
+		if ($self->{opt}{stripspaces} & 8) {
+#print "ltrim own content in _Start\n";
+			push @{$self->{_ltrim}}, 2;
+		} else {
+			push @{$self->{_ltrim}}, 0;
+		}
+
+		if ($self->{namespaces}) {
+			my %restore;
+			if (exists $Attr{xmlns}) { # find the default namespace
+#print "Found a xmlns attribute in $Element!\n";
+				$restore{''} = $self->{xmlns_map}{''};
+				if (!exists($self->{namespaces}{ $Attr{xmlns} })) {
+					warn qq{Unexpected namespace "$Attr{xmlns}" found in the XML!\n} unless exists $self->{namespaces}{'*'};
+					delete $self->{xmlns_map}{''};
+					delete $restore{''} unless defined($restore{''});
+					delete($Attr{xmlns});
+				} else {
+					$self->{xmlns_map}{''} = $self->{namespaces}{ delete($Attr{xmlns}) };
+				}
+			}
+			foreach my $attr (keys %Attr) { # find the namespace aliases
+				next unless $attr =~ /^xmlns:(.*)$/;
+				$restore{$1} = $self->{xmlns_map}{$1};
+				if (!exists($self->{namespaces}{ $Attr{$attr} })) {
+					warn qq{Unexpected namespace "$Attr{$attr}" found in the XML!\n} unless exists $self->{namespaces}{'*'};
+					delete $self->{xmlns_map}{$1};
+					delete $restore{$1} unless defined($restore{$1});
+					delete($Attr{$attr});
+				} else {
+					$self->{xmlns_map}{$1} = $self->{namespaces}{ delete($Attr{$attr}) };
+				}
+			}
+			if (%restore) {
+				push @{$self->{xmlns_restore}}, \%restore;
+			} else {
+				push @{$self->{xmlns_restore}}, undef;
+			}
+
+			if (%{$self->{xmlns_map}}) {
+#print "About to map aliases for $Element\n";
+				# add or map the alias for the tag
+				if ($Element =~ /^([^:]+):(.*)$/) {
+#print "Mapping an alias $1 for tag $Element\n";
+					if (exists($self->{xmlns_map}{$1})) {
+						if ($self->{xmlns_map}{$1} eq '') {
+							$Element = $2 ;
+						} else {
+							$Element = $self->{xmlns_map}{$1} . ':' . $2 ;
+						}
+					}
+#print " -> $Element\n";
+				} elsif (defined($self->{xmlns_map}{''}) and $self->{xmlns_map}{''} ne '') { # no namespace alias in the tag and there's a default
+#print "Adding default alias $self->{xmlns_map}{''}:\n";
+					$Element = $self->{xmlns_map}{''} . ':' . $Element;
+#print " -> $Element\n";
+				}
+
+				# map the aliases for the attributes
+				foreach my $attr (keys %Attr) {
+					next unless $attr =~ /^([^:]+):(.*)$/; # there's an alias
+					next unless exists($self->{xmlns_map}{$1}); # and there's a mapping
+					if ($self->{xmlns_map}{$1} eq '') {
+						$Attr{$2} = delete($Attr{$attr}); # rename the attribute
+					} else {
+						$Attr{$self->{xmlns_map}{$1} . ':' . $2} = delete($Attr{$attr}); # rename the attribute
+					}
+				}
+			}
+		} # /of namespace handling
+
+
+		my ( $start_rule, $end_rule) = map {
+			if ($self->{$_}{$Element} and ref($self->{$_}{$Element}) ne 'ARRAY') {
+				$self->{$_}{$Element}
+			} else {
+				$self->_find_rule( $_, $Element, $self->{context})
+			}
+		} ( 'start_rules', 'rules');
+
+		if ($start_rule ne 'handle'
+		and (
+			!$start_rule
+			or $start_rule eq 'skip'
+			or !$start_rule->($Element,\%Attr, $self->{context}, $self->{data}, $self)
+			)
+		) {
+			# ignore the tag and the ones below
+			if (exists $self->{ignore_handlers}) {
+#print "SETHANDLERS!\n";
+				$Parser->setHandlers(@{$self->{ignore_handlers}})
+			} else {
+				$self->{ignore_handlers} = [
+					Start => _StartIgnore($self),
+					Char => undef,
+					End => _EndIgnore($self),
+				];
+#print "SETHANDLERS2\n";
+				$self->{normal_handlers} = [$Parser->setHandlers(@{$self->{ignore_handlers}})];
+			}
+			$self->{ignore_level}=1;
+
+		} else {
+			# process the tag and the ones below
+			if ($encode) {
+				foreach my $value (values %Attr) {
+					$value = Encode::encode( $encode, $value);
+				}
+			}
+
+			push @{$self->{context}}, $Element;
+			push @{$self->{data}}, \%Attr;
+			$self->{lastempty} = 0;
+
+			if ($self->{style} eq 'filter') {
+				$self->{in_interesting}++ if ref($end_rule) or $end_rule =~ /^=/s; # is this tag interesting?
+
+				if (! $self->{in_interesting}) { # it neither this tag not an acestor is interesting, just copy the tag
+#print "Start:R ".$Parser->recognized_string()."\n";
+#print "Start:O ".$Parser->original_string()."\n";
+#print "Start:R ".$Parser->recognized_string()."\n";
+#print "Start:O ".$Parser->original_string()."\n";
+					if (! $output_encoding) {
+						print {$self->{FH}} $Parser->recognized_string();
+					} elsif ($output_encoding eq $self->{opt}{original_encoding}) {
+						print {$self->{FH}} $Parser->original_string();
+					} else {
+						print {$self->{FH}} $self->toXML($Element, \%Attr, "don't close");
+					}
+				}
+			}
+
+		}
+	}
+}
+
+sub _find_rule {
+	my ($self, $type, $Element, $path) = @_;
+
+	if (exists($self->{$type.'_re'})) {
+		for(my $i = 0; $i < @{$self->{$type.'_re'}}; $i++) {
+			if ($Element =~ $self->{$type.'_re'}[$i]) {
+				$self->{$type}{$Element} = $self->{$type.'_re_code'}[$i];
+				last;
+			}
+		}
+	}
+	if (! exists $self->{$type}{$Element}) {
+		$self->{$type}{$Element} = $self->{$type}{_default};
+	}
+
+	if (ref $self->{$type}{$Element} eq 'ARRAY') {
+		$path = join( '/', @$path);
+		for(my $i=0; $i < $#{$self->{$type}{$Element}}; $i+=2) {
+			if ($path =~ $self->{$type}{$Element}[$i]) {
+				return $self->{$type}{$Element}[$i+1];
+			}
+		}
+		return $self->{$type}{$Element}[-1];
+	} else {
+		return $self->{$type}{$Element};
+	}
+}
+
+sub _Char {
+	my $self = shift;
+	my $encode = $self->{opt}{encode};
+	return sub {
+		my ( $Parser, $String) = @_;
+
+		if ($self->{style} eq 'filter' and ! $self->{in_interesting}) {
+			if (! $self->{opt}{output_encoding}) {
+				print {$self->{FH}} $Parser->recognized_string();
+			} elsif ($self->{opt}{output_encoding} eq $self->{opt}{original_encoding}) {
+				print {$self->{FH}} $Parser->original_string();
+			} else {
+				print {$self->{FH}} encode($self->{opt}{output_encoding}, $Parser->recognized_string());
+			}
+			return;
+		}
+
+		if ($encode) {
+			$String = Encode::encode( $encode, $String);
+		}
+
+		if ($self->{_ltrim}[-1]) {
+#print "ltrim in $self->{context}[-1] ($String)\n";
+			if ($self->{_ltrim}[-1] == 2) {
+				$String =~ s/^\s+//s;
+				return if $String eq '';
+			} else {
+				return if $String =~ /^\s*$/s;
+			}
+			$self->{_ltrim}[-1] = 0;
+#print "  ($String)\n";
+		}
+		$String =~ s/\s+/ /gs if ($self->{opt}{normalisespaces});
+
+		if (!exists $self->{data}[-1]{_content}) {
+			$self->{data}[-1]{_content} = $String;
+		} elsif (!ref $self->{data}[-1]{_content}) {
+			if ($self->{opt}{normalisespaces} and $self->{data}[-1]{_content} =~ /\s$/ and $String =~ /^\s/) {
+				$String =~ s/^\s+//s;
+			}
+			$self->{data}[-1]{_content} .= $String;
+		} else {
+			if (ref $self->{data}[-1]{_content}[-1]) {
+				push @{$self->{data}[-1]{_content}}, $String;
+			} else {
+				if ($self->{opt}{normalisespaces} and $self->{data}[-1]{_content}[-1] =~ /\s$/ and $String =~ /^\s/) {
+					$String =~ s/^\s+//s;
+				}
+				$self->{data}[-1]{_content}[-1] .= $String;
+			}
+		}
+	}
+}
+
+sub _End {
+	my $self = shift;
+	return sub {
+		my ( $Parser, $Element) = @_;
+		$Element = pop @{$self->{context}}; # the element name may have been mangled by XMLNS aliasing
+
+		if ($self->{opt}{stripspaces} & 8) {
+#print "rtrim own content\n";
+			if ($self->{data}[-1] and $self->{data}[-1]{_content}) {
+				$self->_rtrim( $self->{data}[-1], 1);
+			}
+		}
+		pop(@{$self->{_ltrim}});
+
+		if ($self->{namespaces}) {
+			if (my $restore = pop @{$self->{xmlns_restore}}) { # restore the old default namespace and/or alias mapping
+				while (my ($their, $our)  = each %$restore) {
+					if (defined($our)) {
+						$self->{xmlns_map}{$their} = $our;
+					} else {
+						delete $self->{xmlns_map}{$their};
+					}
+				}
+			}
+		}
+
+		my ($rule) = map {
+			if ($self->{$_}{$Element} and ref($self->{$_}{$Element}) ne 'ARRAY') {
+				$self->{$_}{$Element}
+			} else {
+				$self->_find_rule( $_, $Element, $self->{context})
+			}
+		} ('rules');
+
+		my $data = pop @{$self->{data}};
+
+		my @results;
+		if (ref $rule or $rule =~ /^=/s) {
+			if ($rule =~ /^==(.*)$/s) { # change the whole tag to a string
+				@results = ($1);
+			} elsif ($rule =~ /^=(.*)$/s) { # change the contents to a string
+				@results = ($Element => $1);
+			} else {
+				@results = $rule->($Element, $data, $self->{context}, $self->{data}, $self);
+			}
+
+			if ($self->{style} eq 'filter') {
+
+				$self->{in_interesting}--;
+				if (!$self->{in_interesting}) {
+					if (@{$self->{data}}) {
+						print {$self->{FH}} $self->escape_value($self->{data}[-1]{_content});
+						delete $self->{data}[-1]{_content};
+					}
+					my $base;
+					if ($self->{opt}{ident} ne '') {
+						$base = $self->{opt}{ident} x scalar(@{$self->{context}});
+					}
+					@results and $results[0] =~ s/^[\@%\+\*\.]//;
+					while (@results) {
+#use Data::Dumper;
+#print "\@results=".Dumper(\@results)."\n";
+						if (ref($results[0])) {
+							croak(ref($results[0]) . " not supported as the return value of a filter") unless ref($results[0]) eq 'ARRAY';
+							if (@{$results[0]} ==2 and ref($results[0][1]) eq 'HASH') {
+								print {$self->{FH}} $self->toXML(@{$results[0]}[0,1], 0, $self->{opt}{ident}, $base);
+							} else {
+								foreach my $item (@{$results[0]}) {
+									if (ref($item)) {
+										croak(ref($item) . " not supported in the return value of a filter") unless ref($item) eq 'ARRAY';
+										croak("Empty array not supported in the return value of a filter") unless @$item;
+										if (@$item <= 2) {
+											print {$self->{FH}} $self->toXML(@{$item}[0,1], 0, $self->{opt}{ident}, $base);
+										} else { # we suppose the 3rd and following elements are parameters to ->toXML()
+											print {$self->{FH}} $self->toXML(@$item);
+										}
+									} else {
+										print {$self->{FH}} $self->escape_value($item);
+									}
+								}
+							}
+							shift(@results);
+						} else {
+							if (@results == 1) {
+								print {$self->{FH}} $self->escape_value($results[0]);
+								@results = ();last;
+							} else {
+								print {$self->{FH}} $self->toXML(shift(@results), shift(@results), 0, $self->{opt}{ident}, $base);
+							}
+						}
+					}
+				}
+			}
+		} elsif ($self->{style} eq 'filter' and ! $self->{in_interesting}) {
+#print "End: \$Element=$Element; \$Parser->recognized_string()=".$Parser->recognized_string()."; \$Parser->original_string()=".$Parser->original_string()."\n";
+die "Unexpected \$data->{content}={$data->{_content}} in filter outside interesting nodes!\n" if $data->{_content} ne '';
+				if (! $self->{opt}{output_encoding}) {
+					print {$self->{FH}} $Parser->recognized_string();
+				} elsif ($self->{opt}{output_encoding} eq $self->{opt}{original_encoding}) {
+					print {$self->{FH}} $Parser->original_string();
+				} else {
+					print {$self->{FH}} encode($self->{opt}{output_encoding}, $Parser->recognized_string());
+				}
+#			print {$self->{FH}} $self->escape_value($data->{_content})."</$Element>";
+
+		} else { # a predefined rule
+
+			if ($rule =~ s/(?:^| )no xmlns$//) {
+				$Element =~ s/^\w+://;
+				$rule = 'as_is' if $rule eq '';
+			}
+
+			if ($rule eq '') {
+				@results = ();
+			} elsif ($rule eq 'content') {
+				@results = ($Element => $data->{_content});
+			} elsif ($rule eq 'content trim') {
+				s/^\s+//,s/\s+$// for ($data->{_content});
+				@results = ($Element => $data->{_content});
+			} elsif ($rule eq 'content array') {
+				@results = ('@'.$Element => $data->{_content});
+			} elsif ($rule eq 'as is') {
+				@results = ($Element => $data);
+			} elsif ($rule eq 'as is trim') {
+				s/^\s+//,s/\s+$// for ($data->{_content});
+				@results = ($Element => $data);
+			} elsif ($rule eq 'as array') {
+				@results = ('@'.$Element => $data);
+			} elsif ($rule eq 'as array trim') {
+				s/^\s+//,s/\s+$// for ($data->{_content});
+				@results = ('@'.$Element => $data);
+			} elsif ($rule eq 'no content') {
+				delete ${$data}{_content}; @results = ($Element => $data);
+			} elsif ($rule eq 'no content array' or $rule eq 'as array no content') {
+				delete ${$data}{_content}; @results = ('@' . $Element => $data);
+
+			} elsif ($rule eq 'pass') {
+				@results = (%$data);
+			} elsif ($rule eq 'pass trim') {
+				s/^\s+//,s/\s+$// for ($data->{_content});
+				@results = (%$data);
+			} elsif ($rule eq 'pass no content' or $rule eq 'pass without content') {
+				delete ${$data}{_content}; @results = (%$data);
+
+			} elsif ($rule eq 'raw') {
+				@results = [$Element => $data];
+
+			} elsif ($rule eq 'raw extended') {
+				@results = (':'.$Element => $data, [$Element => $data]);
+
+			} elsif ($rule eq 'raw extended array') {
+				@results = ('@:'.$Element => $data, [$Element => $data]);
+
+			} elsif ($rule =~ /^((?:no )?content )?by\s+(\S+)$/) {
+				my ($cnt,$attr) = ($1,$2);
+				if ($cnt eq 'no content ') {
+					delete $data->{_content};
+				}
+				if ($attr =~ /,/) {
+					my @attr = split /,/, $attr;
+					foreach (@attr) {
+						next unless exists ($data->{$_});
+						if ($cnt eq 'content ') {
+							@results = ($data->{$_} => $data->{_content})
+						} else {
+							@results = (delete $data->{$_} => $data)
+						}
+						last;
+					}
+				} else {
+					if ($cnt eq 'content ') {
+						@results = ($data->{$attr} => $data->{_content})
+					} else {
+						@results = (delete $data->{$attr} => $data);
+					}
+				}
+
+			} else {
+				croak "Unknown predefined rule '$rule'!";
+			}
+		}
+
+		if (! @results or (@results % 2 == 0) or $results[-1] eq '') {
+			if ($self->{opt}{stripspaces} & 3 and @{$self->{data}} and $self->{data}[-1]{_content}) { # stripping some spaces, it's not root and it did not return content
+#print "maybe stripping some spaces in $Element, it's not root and it did not return content\n";
+				if (($self->{opt}{stripspaces} & 3) < 3 and $self->{data}[-1]{_content}) {
+					# rtrim parent content
+#print "  yes, rtrim parent '$self->{data}[-1]{_content}'\n";
+					$self->_rtrim( $self->{data}[-1], ($self->{opt}{stripspaces} & 4));
+#print "  result '$self->{data}[-1]{_content}'\n";
+				}
+
+				$self->{_ltrim}[-1] = (($self->{opt}{stripspaces} & 4) ? 2 : 1)
+					if ($self->{opt}{stripspaces} & 3) == 2;
+			}
+		} else {
+			$self->{_ltrim}[-1] = 0;
+		}
+		if (($self->{opt}{stripspaces} & 3) == 3) {
+			$self->{_ltrim}[-1] = (($self->{opt}{stripspaces} & 4) ? 2 : 1);
+		}
+
+
+		return unless scalar(@results) or scalar(@results) == 1 and ($results[0] eq '' or !defined($results[0]));
+
+		@{$self->{data}} = ({}) unless @{$self->{data}}; # oops we are already closing the root tag! We do need there to be at least one hashref in $self->{data}
+
+		if (scalar(@results) % 2) {
+			# odd number of items, last is content
+			my $value = pop(@results);
+			_add_content( $self->{data}[-1], $value);
+		}
+
+		while (@results) {
+			my ($key, $value) = ( shift(@results), shift(@results));
+			if ($key eq '_content') {
+				_add_content( $self->{data}[-1], $value);
+			} elsif ($key =~ s/^\@//) {
+				if (exists($self->{data}[-1]{$key}) and ref($self->{data}[-1]{$key}) ne 'ARRAY') {
+					$self->{data}[-1]{$key} = [$self->{data}[-1]{$key}, $value];
+				} else {
+					push @{$self->{data}[-1]{$key}}, $value;
+				}
+			} elsif ($key =~ s/^\+//) {
+				if (exists($self->{data}[-1]{$key})) {
+					$self->{data}[-1]{$key} += $value;
+				} else {
+					$self->{data}[-1]{$key} = $value;
+				}
+			} elsif ($key =~ s/^\*//) {
+				if (exists($self->{data}[-1]{$key})) {
+					$self->{data}[-1]{$key} *= $value;
+				} else {
+					$self->{data}[-1]{$key} = $value;
+				}
+			} elsif ($key =~ s/^\.//) {
+				if (exists($self->{data}[-1]{$key})) {
+					$self->{data}[-1]{$key} .= $value;
+				} else {
+					$self->{data}[-1]{$key} = $value;
+				}
+			} elsif ($key =~ s/^\%//) {
+				if (exists($self->{data}[-1]{$key})) {
+					if (ref($value) eq 'HASH') {
+						%{$self->{data}[-1]{$key}} = (%{$self->{data}[-1]{$key}}, %$value);
+					} elsif (ref($value) eq 'ARRAY') {
+						%{$self->{data}[-1]{$key}} = (%{$self->{data}[-1]{$key}}, @$value);
+					} else {
+						croak "The value of the rule return \%$key must be a hash or array ref!";
+					}
+				} else {
+					if (ref($value) eq 'HASH') {
+						$self->{data}[-1]{$key} = $value;
+					} elsif (ref($value) eq 'ARRAY') {
+						$self->{data}[-1]{$key} = {@$value};
+					} else {
+						croak "The value of the rule return \%$key must be a hash or array ref!";
+					}
+				}
+			} else {
+				warn "The attribute '$key' already exists for tag $self->{context}[-1].\n  old value: $self->{data}[-1]{$key}\n  new value: $value\n"
+					if ($self->{opt}{warnoverwrite} and exists $self->{data}[-1]{$key} and $self->{data}[-1]{$key} ne $value);
+				$self->{data}[-1]{$key} = $value;
+			}
+		}
+	}
+}
+
+sub _StartIgnore {
+	my ($self) = shift;
+	return sub {
+		$self->{ignore_level}++
+	}
+}
+
+sub _EndIgnore {
+	my ($self) = shift;
+	return sub {
+		return if --$self->{ignore_level};
+
+		$self->{parser}->setHandlers(@{$self->{normal_handlers}})
+	}
+}
+
+sub _add_content {
+	my ($hash, $value) = @_;
+	if (ref($value)) {
+		if (ref($hash->{_content})) {
+			# both are refs, push to @_content
+			push @{$hash->{_content}}, $value;
+		} elsif (exists($hash->{_content})) {
+			# result is ref, _content is not -> convert to an arrayref containing old _content and result
+			$hash->{_content} = [ $hash->{_content}, $value]
+		} else {
+			# result is ref, _content is not present
+			$hash->{_content} = [ $value]
+		}
+	} else {
+		if (ref($hash->{_content})) {
+			# _content is an arrayref, value is a string
+			if (ref $hash->{_content}[-1]) {
+				# the last element is a ref -> push
+				push @{$hash->{_content}}, $value;
+			} else {
+				# the last element is a string -> concatenate
+				$hash->{_content}[-1] .= $value;
+			}
+		} else {
+			# neither is ref, concatenate
+			$hash->{_content} .= $value;
+		}
+	}
+}
+
+=head1 METHODS
+
+=head2 parse
+
+	$parser->parse( $string [, $parameters]);
+	$parser->parse( $IOhandle [, $parameters]);
+
+Parses the XML in the string or reads and parses the XML from the opened IO handle,
+executes the rules as it encounters the closing tags and returns the resulting structure.
+
+The scalar or reference passed as the second parameter to the parse() method is assigned to
+$parser->{parameters} for the parsing of the file or string. Once the XML is parsed the key is
+deleted. This means that the $parser does not retain a reference to the $parameters after the parsing.
+
+=head2 parsestring
+
+	$parser->parsestring( $string [, $parameters]);
+
+Just an alias to ->parse().
+
+=head2 parsefile
+
+	$parser->parsefile( $filename [, $parameters]);
+
+Opens the specified file and parses the XML and executes the rules as it encounters
+the closing tags and returns the resulting structure.
+
+
+=head2 filter
+
+	$parser->filter( $string);
+	$parser->filter( $string, $OutputIOhandle [, $parameters]);
+	$parser->filter( $InputIOhandle, $OutputIOhandle [, $parameters]);
+	$parser->filter( $string, $OutputFilename [, $parameters]);
+	$parser->filter( $InputIOhandle, $OutputFilename [, $parameters]);
+	$parser->filter( $string, $StringReference [, $parameters]);
+	$parser->filter( $InputIOhandle, $StringReference [, $parameters]);
+
+Parses the XML in the string or reads and parses the XML from the opened IO handle,
+copies the tags that do not have a subroutine rule specified and do not occure under such a tag,
+executes the specified rules and prints the results to select()ed filehandle, $OutputFilename or
+$OutputIOhandle or stores them in the scalar referenced by $StringReference.
+
+The scalar or reference passed as the third parameter to the filter() method is assigned to
+$parser->{parameters} for the parsing of the file or string. Once the XML is parsed the key is
+deleted. This means that the $parser does not retain a reference to the $parameters after the parsing.
+
+=head2 filterstring
+
+	$parser->filterstring( ...);
+
+Just an alias to ->filter().
+
+=head2 filterfile
+
+	$parser->filterfile( $filename, $OutputIOhandle [, $parameters]);
+	$parser->filterfile( $filename, $OutputFilename [, $parameters]);
+
+Parses the XML in the specified file, copies the tags that do not have a subroutine rule specified
+and do not occure under such a tag, executes the specified rules and prints the results to select()ed
+filehandle, $OutputFilename or $OutputIOhandle or stores them in the scalar
+referenced by $StringReference.
+
+The scalar or reference passed as the third parameter to the filter() method is assigned to
+$parser->{parameters} for the parsing of the file or string. Once the XML is parsed the key is
+deleted. This means that the $parser does not retain a reference to the $parameters after the parsing.
+
+=cut
+
+sub escape_value {
+	my($self, $data, $level) = @_;
+
+	return '' unless(defined($data) and $data ne '');
+
+	if ($self->{opt}{output_encoding} ne $self->{opt}{encode}) {
+		$data = Encode::decode( $self->{opt}{encode}, $data) if $self->{opt}{encode};
+		$data = Encode::encode( $self->{opt}{output_encoding}, $data) if $self->{opt}{output_encoding};
+	}
+
+	$data =~ s/&/&amp;/sg;
+	$data =~ s/</&lt;/sg;
+	$data =~ s/>/&gt;/sg;
+	$data =~ s/"/&quot;/sg;
+
+	$level = $self->{opt}->{numericescape} unless defined $level;
+	return $data unless $level;
+
+	return $self->_numeric_escape($data, $level);
+}
+
+sub _numeric_escape {
+  my($self, $data, $level) = @_;
+
+  use utf8; # required for 5.6
+
+  if($self->{opt}->{numericescape} eq '2') {
+    $data =~ s/([^\x00-\x7F])/'&#' . ord($1) . ';'/gse;
+  }
+  else {
+    $data =~ s/([^\x00-\xFF])/'&#' . ord($1) . ';'/gse;
+  }
+
+  return $data;
+}
+
+=head2 escape_value
+
+	$parser->escape_value( $data [, $numericescape])
+
+This method escapes the $data for inclusion in XML, the $numericescape may be 0, 1 or 2
+and controls whether to convert 'high' (non ASCII) characters to XML entities.
+
+0 - default: no numeric escaping (OK if you're writing out UTF8)
+
+1 - only characters above 0xFF are escaped (ie: characters in the 0x80-FF range are not escaped), possibly useful with ISO8859-1 output
+
+2 - all characters above 0x7F are escaped (good for plain ASCII output)
+
+You can also specify the default value in the constructor
+
+	my $parser = XML::Rules->new(
+		...
+		NumericEscape => 2,
+	);
+
+=cut
+
+sub ToXML;*ToXML=\&toXML;
+sub toXML {
+	my ($self, $tag, $attrs, $no_close, $ident, $base) = @_;
+
+	my $prefix = (defined ($ident) ? "\n$base" : '');
+
+	$attrs = undef if (ref $attrs eq 'HASH' and ! %{$attrs}); # ->toXML( $tagname, {}, ...)
+
+	if ($tag eq '') {
+		if (! ref($attrs)) { # ->toXML( '', $string_content, ...)
+			return $self->escape_value($attrs);
+		} elsif (ref($attrs) eq 'ARRAY') {
+			if (@$attrs) {
+				return join( '', map {
+					if (!ref($_)) {
+						$self->escape_value($_)
+					} elsif (ref($_) eq 'ARRAY' and @$_ == 2) {
+						$self->toXML($_->[0], $_->[1])
+					} else {
+						croak "The content in XML::Rules->ToXML( '', here) must be a string or an arrayref containing strings and two element arrayrefs!";
+					}
+				} @$attrs);
+			} else {
+				return "<$attrs/>"
+			}
+		}
+	}
+
+	if (! ref($attrs)) { # ->toXML( $tagname, $string_content, ...)
+		if ($no_close) {
+			return "<$tag>" . $self->escape_value($attrs);
+		} elsif (! defined $attrs) {
+			return "<$tag/>";
+		} else {
+			return "<$tag>" . $self->escape_value($attrs) . "</$tag>";
+		}
+	} elsif (ref($attrs) eq 'ARRAY') {
+		return join( $prefix, map $self->toXML($tag, $_, 0, $ident, $base), @$attrs);
+	}
+
+
+	my $content = $attrs->{_content};
+	my $result = "<$tag";
+	my $subtags = '';
+	foreach my $key (sort keys %$attrs) {
+		next if $key =~ /^:/ or $key eq '_content';
+		if (ref $attrs->{$key}) {
+			if (ref $attrs->{$key} eq 'ARRAY') {
+				if (@{$attrs->{$key}}) {
+					foreach my $subtag (@{$attrs->{$key}}) {
+						$subtags .= $prefix . $ident . $self->toXML($key, $subtag, 0, $ident, $base.$ident);
+					}
+				} else {
+					$subtags .= $prefix . $ident . "<$key/>";
+				}
+			} elsif (ref $attrs->{$key} eq 'HASH') {
+				$subtags .= $prefix . $ident . $self->toXML($key, $attrs->{$key}, 0, $ident, $base.$ident)
+			} else {
+				croak(ref($attrs->{$key}) . " attributes not supported in XML::Rules->toXML()!");
+			}
+		} else {
+			$result .= qq{ $key="} . $self->escape_value($attrs->{$key}) . qq{"};
+		}
+	}
+	if (! defined $content and $subtags eq '') {
+		if ($no_close) {
+			return $result.">";
+		} else {
+			return $result."/>";
+		}
+
+	} elsif (!ref($content)) { # content is a string, not an array of strings and subtags
+		if ($no_close) {
+			return "$result>$subtags" . $self->escape_value($content);
+		} elsif ($content eq '' and $subtags ne '') {
+			return "$result>$subtags$prefix</$tag>";
+		} else {
+			return "$result>$subtags" . $self->escape_value($content) ."</$tag>";
+		}
+
+	} elsif (ref($content) eq 'ARRAY') {
+		$result .= ">$subtags";
+		foreach my $snippet (@$content) {
+			if (!ref($snippet)) {
+				$result .= $self->escape_value($snippet);
+			} elsif (ref($snippet) eq 'ARRAY') {
+				if (@$snippet == 2) {
+					$result .= $self->toXML($snippet->[0], $snippet->[1]);
+				} else {
+					croak("Arrays in _content must be in format [\$tagname => \\\%attrs, ...] in XML::Rules->toXML()!");
+				}
+			} else {
+				croak(ref($snippet) . " not supported in _content in XML::Rules->toXML()!");
+			}
+		}
+		if ($no_close) {
+			return $result;
+		} else {
+			return $result."</$tag>";
+		}
+	} else {
+		croak(ref($content) . " _content not supported in XML::Rules->toXML()!");
+	}
+}
+
+sub parentsToXML {
+	my ($self, $level) = @_;
+	my $tag_names = $self->{context};
+	my $tag_attrs = $self->{data};
+
+	$level = scalar(@$tag_names) unless $level;
+
+	my $result = '';
+	for (my $i = -1; -$i <= $level; $i--) {
+		$result = $self->toXML( ${$tag_names}[$i], ${$tag_attrs}[$i], 1) . $result;
+	}
+	return $result;
+}
+
+sub closeParentsToXML {
+	my ($self, $level) = @_;
+	my $tag_names = $self->{context};
+
+	if ($level) {
+		return '</' . join( '></', (reverse(@{$tag_names}))[0..$level-1]) . '>';
+	} else {
+		return '</' . join( '></', reverse(@$tag_names)) . '>';
+	}
+}
+
+=head2 toXML / ToXML
+
+	$xml = $parser->toXML( $tagname, \%attrs[, $do_not_close, $ident, $base])
+
+You may use this method to convert the datastructures created by parsing the XML into the XML format.
+Not all data structures may be printed! I'll add more docs later, for now please do experiment.
+
+The $ident and $base, if defined, turn on and control the pretty-printing. The $ident specifies the character(s)
+used for one level of identation, the base contains the identation of the current tag. That is if you want to include the data inside of
+
+	<data>
+		<some>
+			<subtag>$here</subtag>
+		</some>
+	</data>
+
+you will call
+
+	$parser->toXML( $tagname, \%attrs, 0, "\t", "\t\t\t");
+
+The method does NOT validate that the $ident and $base are whitespace only, but of course if it's not you end up with invalid
+XML. Newlines are added only before the start tag and (if the tag has only child tags and no content) before the closing tag,
+but not after the closing tag! Newlines are added even if the $ident is an empty string.
+
+=head2 parentsToXML
+
+	$xml = $parser->parentsToXML( [$level])
+
+Prints all or only the topmost $level ancestor tags, including the attributes and content (parsed so far),
+but without the closing tags. You may use this to print the header of the file you are parsing,
+followed by calling toXML() on a structure you build and then by closeParentsToXML() to close
+the tags left opened by parentsToXML(). You most likely want to use the style => 'filter' option
+for the constructor instead.
+
+=head2 closeParentsToXML
+
+	$xml = $parser->closeParentsToXML( [$level])
+
+Prints the closing tags for all or the topmost $level ancestor tags of the one currently processed.
+
+=head2 paths2rules
+
+	my $parser = XML::Rules->new(
+		rules => paths2rules {
+			'/root/subtag/tag' => sub { ...},
+			'/root/othertag/tag' => sub {...},
+			'tag' => sub{ ... the default code for this tag ...},
+			...
+		}
+	);
+
+This helper function converts a hash of "somewhat xpath-like" paths and subs/rules into the format required by the module.
+Due to backwards compatibility and efficiency I can't directly support paths in the rules and the direct syntax for their
+specification is a bit awkward. So if you need the paths and not the regexps, you may use this helper instead of:
+
+	my $parser = XML::Rules->new(
+		rules => {
+			'tag' => [
+				'/root/subtag' => sub { ...},
+				'/root/othertag' => sub {...},
+				sub{ ... the default code for this tag ...},
+			],
+			...
+		}
+	);
+
+=cut
+
+sub paths2rules {
+	my ($paths) = @_;
+
+	my %rules;
+	while ( my ($tag, $val) = each %$paths) {
+
+		if ($tag =~ m{^(.*)/(.*)$}) {
+			my ($path, $tagname) = ($1, $2);
+
+			if (exists $rules{$tagname} and ref($rules{$tagname}) eq 'ARRAY') {
+				if (@{$rules{$tagname}} % 2) {
+					push @{$rules{$tagname}}, $path, $val;
+				} else {
+					splice @{$rules{$tagname}}, -1, 0, $path, $val;
+				}
+			} else {
+				$rules{$tagname} = [ $path => $val]
+			}
+
+		} elsif (exists $rules{$tag} and ref($rules{$tag}) eq 'ARRAY') {
+			push @{$rules{$tag}}, $val;
+		} else {
+			$rules{$tag} = $val
+		}
+	}
+
+	return \%rules;
+}
+
+=head2 return_nothing
+
+Stop parsing the XML, forget any data we already have and return from the $parser->parse().
+This is only supposed to be used within rules and may be called both as a method and as
+an ordinary function (it's not exported).
+
+=head2 skip_rest
+
+Stop parsing the XML and return whatever data we already have from the $parser->parse().
+The rules for the currently opened tags are evaluated as if the XML contained all
+the closing tags in the right order.
+
+These two work via raising an exception, the exception is caught within the $parser->parse() and do not propagate outside.
+It's also safe to raise any other exception within the rules, the exception will be caught as well, the internal state of the $parser object
+is cleaned and the exception is rethrown.
+
+=head2 inferRulesFromExample
+
+	Dumper(XML::Rules::inferRulesFromExample( $fileOrXML, $fileOrXML, $fileOrXML, ...)
+	Dumper(XML::Rules->inferRulesFromExample( $fileOrXML, $fileOrXML, $fileOrXML, ...)
+	Dumper($parser->inferRulesFromExample( $fileOrXML, $fileOrXML, $fileOrXML, ...)
+
+The subroutine parses the listed files and infers the rules that would produce the minimal, but complete datastructure.
+It finds out what tags may be repeated, whether they contain text content, attributes etc. You may want to give
+the subroutine several examples to make sure it knows about all possibilities. You should use this once and store
+the generated rules in your script or even take this as the basis of a more specific set of rules.
+
+=cut
+
+sub inferRulesFromExample {
+	shift(@_) if $_[0] eq 'XML::Rules' or ref($_[0]);
+	my @files = @_;
+
+	my %rules;
+
+	my $parser = XML::Rules->new(
+		namespaces => { '*' => ''},
+		rules => {
+			_default => sub {
+				my ($tag, $attrs, $context, $parent_data, $parser) = @_;
+				my $repeated = (exists $parent_data->[-1] and exists $parent_data->[-1]{$tag});
+				my $has_content = (exists $attrs->{_content});
+				my $has_children = grep ref($_) eq 'HASH', values %$attrs;
+				my $has_attr = grep {$_ ne '_content' and !ref($attrs->{$_})} keys %$attrs;
+
+				my $rule = do {
+					if ($repeated) {
+						if ($has_content) {
+							if ($has_attr or $has_children) {
+								'as array'
+							} else {
+								'content array'
+							}
+						} else {
+							if ($has_attr or $has_children) {
+								'as array no content'
+							} else {
+								'content array'
+							}
+						}
+					} else {
+						if ($has_content) {
+							if ($has_attr or $has_children) {
+								'as is'
+							} else {
+								'content'
+							}
+						} else {
+							if ($has_attr or $has_children) {
+								'no content'
+							} else {
+								'content'
+							}
+						}
+					}
+				};
+
+				if (not exists $rules{$tag}) {
+					$rules{$tag} = $rule
+				} elsif($rules{$tag} ne $rule) {
+					# we've already seen the tag and it had different type
+					if ($rules{$tag} eq 'raw extended array') {
+					} elsif ($rule eq 'raw extended array') {
+						$rules{$tag} = 'raw extended array';
+					} elsif ($rules{$tag} eq 'raw extended' and $rule =~ /array/
+						or $rule eq 'raw extended' and $rules{$tag} =~ /array/) {
+						$rules{$tag} = 'raw extended array'
+					} elsif ($rules{$tag} eq 'as array' or $rule eq 'as array') {
+						$rules{$tag} = 'as array'
+					} elsif ($rules{$tag} eq 'content array' and $rule eq 'content'
+						or $rule eq 'content array' and $rules{$tag} eq 'content') {
+						$rules{$tag} = 'content array'
+					} elsif ($rules{$tag} eq 'content array' and $rule eq 'as array no content'
+						or $rule eq 'content array' and $rules{$tag} eq 'as array no content') {
+						$rules{$tag} = 'as array'
+					} elsif ($rules{$tag} eq 'content array' and $rule eq 'as is'
+						or $rule eq 'content array' and $rules{$tag} eq 'as is') {
+						$rules{$tag} = 'as array'
+					} elsif ($rules{$tag} eq 'content array' and $rule eq 'no content'
+						or $rule eq 'content array' and $rules{$tag} eq 'no content') {
+						$rules{$tag} = 'as array'
+					} elsif ($rules{$tag} eq 'as array no content' and $rule eq 'as is'
+						or $rule eq 'as array no content' and $rules{$tag} eq 'as is') {
+						$rules{$tag} = 'as array'
+					} elsif ($rules{$tag} eq 'as array no content' and $rule eq 'content'
+						or $rule eq 'as array no content' and $rules{$tag} eq 'content') {
+						$rules{$tag} = 'as array'
+					} elsif ($rules{$tag} eq 'as array no content' and $rule eq 'no content'
+						or $rule eq 'as array no content' and $rules{$tag} eq 'no content') {
+						$rules{$tag} = 'as array no content'
+					} elsif ($rules{$tag} eq 'as is' and ($rule eq 'no content' or $rule eq 'content')
+						or $rule eq 'as is' and ($rules{$tag} eq 'no content' or $rules{$tag} eq 'content')) {
+						$rules{$tag} = 'as is'
+					} elsif ($rules{$tag} eq 'content' and $rule eq 'no content'
+						or $rule eq 'content' and $rules{$tag} eq 'no content') {
+						$rules{$tag} = 'as is'
+					} else {
+						die "Unexpected combination of rules: old=$rules{$tag}, new=$rule for tag $tag\n";
+					}
+				}
+
+				if ($has_content and $has_children) { # the tag contains both text content and subtags!, need to use the raw extended rules
+					foreach my $child (grep ref($attrs->{$_}) eq 'HASH', keys %$attrs) {
+						next if $rules{$child} =~ /^raw extended/;
+						if ($rules{$child} =~ /array/) {
+							$rules{$child} = 'raw extended array'
+						} else {
+							$rules{$child} = 'raw extended'
+						}
+					}
+				}
+				return $tag => {};
+			}
+		},
+		stripspaces => 7,
+	);
+
+	for (@files) {
+		eval {
+			if (! ref($_) and $_ !~ /\n/ and $_ !~ /^\s*</) {
+				$parser->parsefile($_);
+			} else {
+				$parser->parse($_);
+			}
+		} or croak "Error parsing $_: $@\n";
+	}
+
+	my %short_rules;
+	foreach my $tag (sort keys %rules) {
+		push @{$short_rules{$rules{$tag}}}, $tag
+	}
+
+	foreach my $tags (values %short_rules) {
+		$tags = join ',', @$tags;
+	}
+	%short_rules = reverse %short_rules;
+
+	return \%short_rules;
+}
+
+=head2 inferRulesFromDTD
+
+	Dumper(XML::Rules::inferRulesFromDTD( $DTDfile, [$enableExtended]))
+	Dumper(XML::Rules->inferRulesFromDTD( $DTDfile, [$enableExtended]))
+	Dumper($parser->inferRulesFromDTD( $DTDfile, [$enableExtended]))
+
+The subroutine parses the DTD and infers the rules that would produce the minimal, but complete datastructure.
+It finds out what tags may be repeated, whether they contain text content, attributes etc. You may use this
+each time you are about to parse the XML, once and store the generated rules in your script or even take this
+as the basis of a more specific set of rules.
+
+With the second parameter set to a true value, the tags included in a mixed content will use the "raw extended"
+or "raw extended array" types instead of just "raw". This makes sure the tag data both stay at the right place in
+the content and are accessible easily from the parent tag's atrribute hash.
+
+This subroutine requires the XML::DTDParser module!
+
+=cut
+
+sub inferRulesFromDTD {
+	require XML::DTDParser;
+
+	my ($DTDfile, $enable_extended) = @_;
+
+	my $DTD = XML::DTDParser::ParseDTDFile($DTDfile);
+
+	my $has_mixed = 0;
+	foreach my $tag (values %$DTD) {
+		$tag->{is_mixed} = (($tag->{content} and $tag->{children}) ? 1 : 0)
+		 and $has_mixed = 1;
+	}
+
+	my %settings;
+	foreach my $tagname (keys %$DTD) {
+		my $tag = $DTD->{$tagname};
+
+		my $repeated = ($tag->{option} =~ /^[+*]$/ ? 1 : 0);
+		my $has_content = $tag->{content};
+
+		my $in_mixed = grep {$DTD->{$_}{is_mixed}} @{$tag->{parent}};
+
+		if ($in_mixed) {
+			if ($enable_extended) {
+				if ($repeated) {
+					$settings{$tagname} = "raw extended array"
+				} else {
+					$settings{$tagname} = "raw extended"
+				}
+			} else {
+				$settings{$tagname} = "raw"
+			}
+		} else {
+			if (exists $DTD->{attributes} or exists $tag->{children}) {
+				my @ids ;
+				if (exists $DTD->{attributes}) {
+					@ids = grep {$DTD->{attributes}{$_}[0] eq 'ID' and $DTD->{attributes}{$_}[0] eq '#REQUIRED'} keys %{$DTD->{attributes}};
+				}
+				if (scalar(@ids) == 1) {
+					if ($has_content) {
+						$settings{$tagname} = "by $ids[0]"
+					} else {
+						$settings{$tagname} = "no content by $ids[0]"
+					}
+				} else {
+					if ($has_content) {
+						if ($repeated) {
+							$settings{$tagname} = "as array"
+						} else {
+							$settings{$tagname} = "as is"
+						}
+					} else {
+						if ($repeated) {
+							$settings{$tagname} = "as array no content"
+						} else {
+							$settings{$tagname} = "no content"
+						}
+					}
+				}
+			} elsif ($repeated) {
+				$settings{$tagname} = "content array"
+			} else {
+				$settings{$tagname} = "content array"
+			}
+		}
+	}
+
+#	use Data::Dumper;
+#	print Dumper(\%settings);
+
+	my %compressed;
+	{
+		my %tmp;
+		while (my ($tag, $option) = each %settings) {
+			push @{$tmp{$option}}, $tag;
+		}
+
+		while (my ($option, $tags) = each %tmp) {
+			$compressed{join ',', @$tags} = $option
+		}
+	}
+
+	if ($has_mixed) {
+		$compressed{"#stripspaces"} = 0;
+	} else {
+		$compressed{"#stripspaces"} = 7;
+	}
+
+	return \%compressed;
+}
+
+=head1 Properties
+
+=head2 parameters
+
+You can pass a parameter (scalar or reference) to the parse...() or filter...() methods, this parameter
+is later available to the rules as $parser->{parameters}. The module will never use this parameter for
+any other purpose so you are free to use it for any purposes provided that you expect it to be reset by
+each call to parse...() or filter...() first to the passed value and then, after the parsing is complete, to undef.
+
+=head2 pad
+
+The $parser->{pad} key is specificaly reserved by the module as a place where the module users can
+store their data. The module doesn't and will not use this key in any way, doesn't set or reset it under any
+circumstances. If you need to share some data between the rules and do not want to use the structure built
+by applying the rules you are free to use this key.
+
+You should refrain from modifying or accessing other properties of the XML::Rules object!
+
+=head1 Namespace support
+
+By default the module doesn't handle namespaces in any way, it doesn't check for
+xmlns or xmlns:alias attributes and it doesn't strip or mangle the namespace aliases
+in tag or attribute names. This means that if you know for sure what namespace
+aliases will be used you can set up rules for tags including the aliases and unless
+someone decides to use a different alias or makes use of the default namespace
+change your script will work.
+
+If you do specify any namespace to alias mapping in the constructor it does
+start processing the namespace stuff. The xmlns and xmlns:alias attributes
+are stripped from the datastructures and the aliases are transformed from
+whatever the XML author decided to use to whatever your namespace mapping
+specifies. Aliases are also added to all tags that belong to a default namespace.
+
+Assuming the constructor parameters contain
+
+	namespaces => {
+		'http://my.namespaces.com/foo' => 'foo',
+		'http://my.namespaces.com/bar' => 'bar',
+	}
+
+and the XML looks like this:
+
+	<root>
+		<Foo xmlns="http://my.namespaces.com/foo">
+			<subFoo>Hello world</subfoo>
+		</Foo>
+		<other xmlns:b="http://my.namespaces.com/bar">
+			<b:pub>
+				<b:name>NaRuzku</b:name>
+				<b:address>at any crossroads</b:address>
+				<b:desc>Fakt <b>desnej</b> pajzl.</b:desc>
+			</b:pub>
+		</other>
+	</root>
+
+then the rules wil be called as if the XML looked like this:
+
+	<root>
+		<foo:Foo>
+			<foo:subFoo>Hello world</foo:subfoo>
+		</foo:Foo>
+		<other>
+			<bar:pub>
+				<bar:name>NaRuzku</bar:name>
+				<bar:address>at any crossroads</bar:address>
+				<bar:desc>Fakt <b>desnej</b> pajzl.</bar:desc>
+			</bar:pub>
+		</other>
+	</root>
+
+
+This means that the namespace handling will only normalize the aliases used.
+
+It is possible to specify an empty alias, so eg. in case you are processing a SOAP XML
+and know the tags defined by SOAP do not colide with the tags in the enclosed XML
+you may simplify the parsing by removing all namespace aliases.
+
+If the XML references a namespace not present in the map you will get a warning
+and the alias used for that namespace will be left intact! If you do not want to get the warnings specify
+a namespace with URI "*".
+
+
+=head1 HOW TO USE
+
+You may view the module either as a XML::Simple on steriods and use it to build a data structure
+similar to the one produced by XML::Simple with the added benefit of being able
+to specify what tags or attributes to ignore, when to take just the content, what to store as an array etc.
+
+Or you could view it as yet another event based XML parser that differs from all the others only in one thing.
+It stores the data for you so that you do not have to use globals or closures and wonder where to attach
+the snippet of data you just received onto the structure you are building.
+
+You can use it in a way similar to XML::Twig with simplify(), specify the rules to transform the lower
+level tags into a XML::Simple like (simplify()ed) structure and then handle the structure in the rule for
+the tag(s) you'd specify in XML::Twig's twig_roots.
+
+=head1 Unrelated tricks
+
+If you need to parse a XML file without the top-most tag (something that each and any sane person would allow,
+but the XML comitee did not), you can parse
+
+  <!DOCTYPE doc [<!ENTITY real_doc SYSTEM "$the_file_name">]><doc>&real_doc;</doc>
+
+instead.
+
+=head1 AUTHOR
+
+Jan Krynicky, C<< <Jenda at CPAN.org> >>
+
+=head1 BUGS
+
+Please report any bugs or feature requests to
+C<bug-xml-rules at rt.cpan.org>, or through the web interface at
+L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=XML-Rules>.
+I will be notified, and then you'll automatically be notified of progress on
+your bug as I make changes.
+
+=head1 SUPPORT
+
+You can find documentation for this module with the perldoc command.
+
+    perldoc XML::Rules
+
+You can also look for information at:
+
+=over 4
+
+=item * AnnoCPAN: Annotated CPAN documentation
+
+L<http://annocpan.org/dist/XML-Rules>
+
+=item * CPAN Ratings
+
+L<http://cpanratings.perl.org/d/XML-Rules>
+
+=item * RT: CPAN's request tracker
+
+L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=XML-Rules>
+
+=item * Search CPAN
+
+L<http://search.cpan.org/dist/XML-Rules>
+
+=item * PerlMonks
+
+Please see L<http://www.perlmonks.org/?node_id=581313> or
+L<http://www.perlmonks.org/?node=XML::Rules> for discussion.
+
+=back
+
+=head1 SEE ALSO
+
+L<XML::Twig>, L<XML::LibXML>, L<XML::Pastor>
+
+=head1 ACKNOWLEDGEMENTS
+
+The escape_value() method is taken with minor changes from XML::Simple.
+
+=head1 COPYRIGHT & LICENSE
+
+Copyright 2006-2007 Jan Krynicky, all rights reserved.
+
+This program is free software; you can redistribute it and/or modify it
+under the same terms as Perl itself.
+
+=cut
+
+1; # End of XML::Rules
Index: main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/perllib/plugins/SimpleRDFMetadataPlugin.pm
===================================================================
--- main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/perllib/plugins/SimpleRDFMetadataPlugin.pm	(revision 30446)
+++ main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/perllib/plugins/SimpleRDFMetadataPlugin.pm	(revision 30446)
@@ -0,0 +1,241 @@
+###########################################################################
+#
+# SimpleRDFMetadataPlugin.pm --
+# A component of the Greenstone digital library software
+# from the New Zealand Digital Library Project at the 
+# University of Waikato, New Zealand.
+#
+# Copyright (C) 2006 New Zealand Digital Library Project
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+###########################################################################
+
+# SimpleRDFMetadataPlugin process metadata contained in RDF description tags
+
+
+package SimpleRDFMetadataPlugin;
+
+use strict;
+no strict 'refs';
+use BasePlugin;
+use util;
+use metadatautil;
+
+use MetadataRead;
+
+sub BEGIN {
+    @SimpleRDFMetadataPlugin::ISA = ('MetadataRead', 'BasePlugin');
+    unshift (@INC, "$ENV{'GSDLHOME'}/perllib/cpan");
+}
+
+use XMLParser;
+use XML::Rules;
+
+my $arguments = [
+      { 'name' => "process_exp",
+	'desc' => "{BasePlugin.process_exp}",
+	'type' => "regexp",
+	'reqd' => "no",
+	'deft' => &get_default_process_exp() }
+
+];
+
+my $options = { 'name'     => "SimpleRDFMetadataPlugin",
+		'desc'     => "{SimpleRDFMetadataPlugin.desc}",
+		'abstract' => "no",
+		'inherits' => "yes",
+		'args'     => $arguments };
+
+my ($self);
+
+my @rules = 
+    ( 'rdf:Description' => \&rdf_description,
+      '_default'        => \&rdf_default );
+
+
+
+sub new {
+    my ($class) = shift (@_);
+    my ($pluginlist,$inputargs,$hashArgOptLists) = @_;
+    push(@$pluginlist, $class);
+
+    push(@{$hashArgOptLists->{"ArgList"}},@{$arguments});
+    push(@{$hashArgOptLists->{"OptList"}},$options);
+
+    $self = new BasePlugin($pluginlist, $inputargs, $hashArgOptLists);
+
+    if ($self->{'info_only'}) {
+	# don't worry about any options or initialisations etc
+	return bless $self, $class;
+    }
+	
+    # create XML::Rules Parser object for parsing metadata.xml files
+    my $parser = XML::Rules->new(rules => \@rules);
+
+
+    $self->{'parser'} = $parser;
+    $self->{'in_filename'} = 0;
+    
+    
+    return bless $self, $class;
+}
+
+
+sub get_default_process_exp
+{
+    return q^.*\.rdf$^;
+}
+
+
+sub metadata_read
+{
+    my $self = shift (@_);
+    my ($pluginfo, $base_dir, $file, $block_hash, $extrametakeys, $extrametadata,
+$processor, $maxdocs, $gli) = @_;
+
+    my $filename = &util::filename_cat($base_dir, $file);
+    my $process_exp = $self->{'process_exp'};
+
+    if ($filename !~ /$process_exp/ || !-f $filename) {
+        return undef;
+    }
+
+    my $outhandle = $self->{'outhandle'};
+    
+    print STDERR "\n<Processing n='$file' p='SimpleRDFMetadataPlugin'>\n" if ($gli);
+    print $outhandle "SimpleRDFMetadataPlugin: processing $file\n" if ($self->{'verbosity'})> 1;
+
+    # add the file to the block list so that it won't be processed in
+    # read, as we will do all we can with it here
+    &util::block_filename($block_hash,$filename);
+    $self->{'metadataref'} = $extrametadata;
+    $self->{'metakeysref'} = $extrametakeys;
+    
+    eval {
+	$self->{'saved_metadata'} = {};
+	$self->{'saved_metadata_count'} = 0;
+
+	$self->{'parser'}->parsefile($filename);
+    };
+
+    if ($@) {
+	my $plugin_name = ref ($self);
+	print $outhandle "$plugin_name failed to process $file ($@)\n";
+	
+	return -1; #error
+    }
+
+    return 1;
+
+}
+
+
+sub file_block_read {
+    my $self = shift (@_);
+    my ($pluginfo, $base_dir, $file, $block_hash, $metadata, $gli) = @_;
+	
+    my $filename_full_path = &util::filename_cat($base_dir, $file);
+    return undef unless $self->can_process_this_file($filename_full_path);    
+
+	if ($ENV{'GSDLOS'} =~ m/^windows$/) {
+		
+		my $lower_drive = $filename_full_path;
+		$lower_drive =~ s/^([A-Z]):/\l$1:/i;
+		
+		my $upper_drive = $filename_full_path;
+		$upper_drive =~ s/^([A-Z]):/\u$1:/i;
+		
+		$block_hash->{'metadata_files'}->{$lower_drive} = 1;
+		$block_hash->{'metadata_files'}->{$upper_drive} = 1;		
+	}
+	else {
+		$block_hash->{'metadata_files'}->{$filename_full_path} = 1;
+	}
+
+    return 1;
+}
+
+
+sub rdf_description
+{
+
+    my ($tagname, $attrHash, $contextArray, $parentDataArray, $parser) = @_;
+
+    my $target = $attrHash->{'rdf:about'};
+    if ($target eq ".") {
+	$target = ".*";
+    }
+
+    my $file_metadata = $self->{'metadataref'}->{$target};
+    my $saved_metadata = $self->{'saved_metadata'};
+    if (!defined $file_metadata) {
+	$self->{'metadataref'}->{$target} = $saved_metadata;
+	    
+	# not had target before
+	push (@{$self->{'metakeysref'}}, $target);
+    }
+    else {
+	&metadatautil::combine_metadata_structures($file_metadata,$saved_metadata);
+    }
+
+    my $outhandle = $self->{'outhandle'};
+    print $outhandle "SimpleRDFMetadataPlugin associated ";
+    print $outhandle $self->{'saved_metadata_count'};
+    print $outhandle " piece(s) of metadata with $target\n";
+    
+    $self->{'saved_metadata'} = {};
+    $self->{'saved_metadata_count'} = 0;
+
+}
+
+sub rdf_default
+{
+
+    my ($tagname, $attrHash, $contextArray, $parentDataArray, $parser) = @_;
+
+    my $num_enclosing_nodes = scalar(@$contextArray);
+    if ($num_enclosing_nodes>0) {
+
+	my $immediate_parent = $contextArray->[$num_enclosing_nodes-1];
+	return if ($immediate_parent ne "rdf:Description");
+	
+	my ($md_set,$md_name) = ($tagname =~ m/^(\w+):(\w+)/);
+	my $md_content = $attrHash->{'_content'};
+
+	if (defined $md_content) {
+
+	    my $full_md_name = "$md_set.$md_name";
+	    &metadatautil::store_saved_metadata($self,$full_md_name,
+						$md_content, 0);
+
+	    if ($full_md_name eq "mp.title") {
+		my $sort_by_title = $md_content;
+		$sort_by_title =~ s/^\s*(The|Die|Das|Der|Le|La|Les)\s+//i;
+		my ($initial_letter) = ($sort_by_title =~ m/([A-Z])/i);
+
+		&metadatautil::store_saved_metadata($self,"mp.titleInitialLetter",
+						    $initial_letter, 0);
+	    }
+
+	    $self->{'saved_metadata_count'}++;
+	}
+    }
+
+}
+
+
+
+1;
Index: main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/annotate.js
===================================================================
--- main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/annotate.js	(revision 30446)
+++ main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/annotate.js	(revision 30446)
@@ -0,0 +1,293 @@
+
+function Annotate(httpImagesMacro)
+{
+  var httpImages = httpImagesMacro;
+
+  var numAnnotations = 0;
+
+  var username = null;
+
+  this.getNumAnnotations = function() 
+  {
+      return numAnnotations;
+  }
+
+  this.setUsername = function(cgiUsername)
+  {
+      username = cgiUsername;
+  }
+
+  this.getUsername = function()
+  {
+      return username;
+  }
+
+  this.createAnnotation = function(xleft,ytop,xwidth,yheight,text)
+  {
+      // start new annotation
+      var newAI = document.createElement("div");
+      newAI.setAttribute("class","annotationNote");
+      if (expeditee) {
+          newAI.setAttribute("onmouseout", "javascript:annotateLoseFocus(this)");
+      }
+
+      //newAI.style.position   = "absolute";
+      //newAI.style.visibility = "visible";
+      //newAI.style.zIndex     = "2";
+      //newAI.style.background = "rgba(255,200,200,0.7)";
+
+      if (xwidth) {
+          newAI.style.width     = xwidth + "px";
+      }
+
+      if (yheight) {
+          newAI.style.height     = yheight + "px";
+      }
+      else {
+          newAI.style.height     = "auto";
+      }
+
+      //newAI.style.borderStyle = "solid";
+      //newAI.style.borderColor = "black";
+
+      newAI.style.padding      = "1px";
+      newAI.style.paddingRight = "6px";
+
+
+      var annotate_x_org = xleft;
+      var annotate_y_org = ytop;
+  
+      if (document.all) {
+        newAI.style.pixelLeft = annotate_x_org
+        newAI.style.pixelTop  = annotate_y_org;
+      }
+      else if (document.getElementById) {
+        newAI.style.left = annotate_x_org + 'px';
+        newAI.style.top  = annotate_y_org + 'px';
+      }
+
+
+      var tableElem  = document.createElement("table");
+      var trElem     = document.createElement("tr");
+
+      var tdTextElem = document.createElement("td");
+      var tdDecElem  = document.createElement("td");
+
+      var editableElem = document.createElement("span");
+      if (expeditee) {
+          editableElem.setAttribute("onmouseover","javascript:annotateGainFocus(this)");
+          editableElem.setAttribute("onmousemove","javascript:annotateGainFocus(this)");
+      }
+      //else {
+      // tableElem.setAttribute("onmousedown","javascript:return false;");
+      // tableElem.setAttribute("onmouseup",  "javascript:return false;");
+      // }
+
+      var annotation = (username!=null) ? username+"-annotation" : "annotation";
+
+      editableElem.setAttribute("id","annotateItem" + numAnnotations);
+      editableElem.setAttribute("class","editable-metadata");
+      editableElem.setAttribute("docoid",musicStand.getDocOID());
+      editableElem.setAttribute("metaname",annotation);
+      editableElem.setAttribute("metapos",numAnnotations);
+
+      editableElem.style.position     = "relative";
+
+      if (text == "") {
+          text = "&nbsp;"
+      }
+      editableElem.innerHTML = text;
+
+      tdTextElem.setAttribute("onmousedown","javascript:return annotateMouseDown(this,event);");
+      tdTextElem.setAttribute("onmouseup",  "javascript:return annotateMouseUp(this,event);");
+
+      var closeElem = document.createElement("div");
+      closeElem.onmouseup=closeAnnotation;
+
+      closeElem.style.position = "absolute";
+      closeElem.style.top      = "0px";
+      closeElem.style.right    = "0px";
+      closeElem.innerHTML = '<img src="'+httpImages+'/window-close.gif">';
+
+      var resizeElem = document.createElement("div");
+
+      resizeElem.setAttribute("onmousedown","javascript:return startResizeAnnotation(this,event);");
+      resizeElem.setAttribute("onmouseup",  "javascript:return stopResizeAnnotation(this,event);");
+
+      resizeElem.style.position = "absolute";
+      resizeElem.style.bottom   = "0px";
+      resizeElem.style.right    = "0px";
+      resizeElem.innerHTML = '<img src="'+httpImages+'/resizer.gif">';
+
+      tdTextElem.appendChild(editableElem);
+      tdDecElem.appendChild(closeElem);
+      tdDecElem.appendChild(resizeElem);
+      trElem.appendChild(tdTextElem);
+      trElem.appendChild(tdDecElem);
+      tableElem.appendChild(trElem);
+      newAI.appendChild(tableElem);
+
+      numAnnotations++;
+
+      return newAI;
+  }
+
+
+  this.saveAnnotation = function(annotateWrapper,editedElem) 
+  {
+       var docoid = editedElem.getAttribute("docoid");
+        
+       if (gsdefined(docoid)) {
+           var metaname = editedElem.getAttribute("metaname");
+           var metapos  = editedElem.getAttribute("metapos");
+           var metavalue= editedElem.innerHTML;
+        
+           var metavalue = metavalue.replace(/&nbsp;/g, " ");
+        
+           gsapi.setDocumentMetadata(docoid,metaname,metapos,metavalue);
+           // gsapi.setImportMetadata(docoid,metaname,metapos,metavalue);
+        
+	   // Store co-ord + width and height
+	   var ax_org = parseInt(annotateWrapper.style.left);
+	   var ay_org = parseInt(annotateWrapper.style.top);
+	   var ax_dim = parseInt(annotateWrapper.style.width);
+	   var ay_dim = parseInt(annotateWrapper.style.height);
+
+	   var scaleFactor = musicStand.getScaleFactor();
+	   ax_org /= scaleFactor;
+	   ay_org /= scaleFactor;
+
+	   var rectHash = { "left": ax_org, "top": ay_org };
+
+	   if (ay_dim) {
+
+	       if (!ax_dim) {
+		   // switch to width and deliberately leave height 
+		   // underdefined
+	           //ax_dim = parseInt(editedElem.offsetWidth) +4;
+	           ax_dim = parseInt(annotateWrapper.offsetWidth)-10;
+	       }
+	       else {
+  	           rectHash.height  = ay_dim;	           
+	       }
+	   }
+
+	   if (ax_dim) {
+	       rectHash.width  = ax_dim;
+	   }
+
+	   var rectHashStr = JSON.stringify(rectHash);
+
+	   //alert("rectHashStr = " + rectHashStr);
+
+	   var metaname = (username!=null) ? username+"-rectpos" : "rectpos";
+
+           gsapi.setDocumentMetadata(docoid,metaname,metapos,rectHashStr);
+           // gsapi.setImportMetadata(docoid,metaname,metapos,rectHashStr);
+
+       	 }
+
+      return true;
+  }
+
+  this.clearAnnotations = function()
+  {
+	  var annotateCanvasElem = document.getElementById("annotateCanvas");
+	  annotateCanvasElem.innerHTML = null;
+	  numAnnotations = 0;
+  }
+
+  this.loadAnnotation = function(docoid,metapos)
+  {
+      var annotationMetaname = "annotation";
+      var rectposMetaname    = "rectpos";
+      if (username!=null) {
+          annotationMetaname = username + "-" + annotationMetaname;
+	  rectposMetaname    = username + "-" + rectposMetaname;
+      }
+
+      var annotateText = gsapi.getDocumentMetadata(docoid,annotationMetaname,metapos);
+      var annotateRect = gsapi.getDocumentMetadata(docoid,rectposMetaname,metapos);
+
+      //alert("annotateRect = " + annotateRect);
+
+      // Non-existent annotation rectangle has somehow got into the database      
+      if (annotateRect == "") { return; }
+
+      var annotateHash = JSON.parse(annotateRect);
+
+      var xleft   = annotateHash.left;
+      var ytop    = annotateHash.top;
+      var xwidth  = annotateHash.width;
+      var yheight = annotateHash.height;
+      
+      var scaleFactor = musicStand.getScaleFactor();
+      xleft *= scaleFactor;
+      ytop  *= scaleFactor;
+
+      var newAI = this.createAnnotation(xleft,ytop,xwidth,yheight,annotateText);
+
+      var annotateCanvasElem = document.getElementById("annotateCanvas");
+      annotateCanvasElem.appendChild(newAI);
+  }
+
+  this.loadAnnotations = function(docoid)
+  {
+      numAnnotations = 0;
+      
+      var metaname = (username!=null) ? username+"-numAnnotations" : "numAnnotations";
+
+      var newNumAnnotations = gsapi.getLiveMetadata(docoid,metaname);
+
+      //alert("load: newNumAnnotations = " + newNumAnnotations);
+
+      for (var a=0; a<newNumAnnotations; a++) {
+          this.loadAnnotation(docoid,a);
+      }
+  }
+
+
+  this.removeAnnotation = function(annotateCanvas,removeMetapos)
+  {
+      var annotateDivs = annotateCanvas.childNodes;
+      //var numAnnotations = annotateDivs.length;
+
+      //alert("num annotations = " + numAnnotations + " removeMetapos = " + removeMetapos);
+
+      for (var a=0; a<numAnnotations; a++) {
+          var annotateDiv = annotateDivs[a];
+
+          var editableElems = getElementsByClass("editable-",annotateDiv);
+          var editableElem = editableElems[0];
+
+          var metapos = editableElem.getAttribute("metapos");
+
+          if (metapos>removeMetapos) {
+              editableElem.setAttribute("metapos",metapos-1);
+          }
+      }
+
+      if (annotateCanvas != null) {
+          var removeElem = annotateDivs[removeMetapos];
+          annotateCanvas.removeChild(removeElem);
+      }
+
+
+      var docoid = musicStand.getDocOID();
+
+      var annotationMetaname     = "annotation";
+      var rectposMetaname        = "rectpos";
+      var numAnnotationsMetaname = "numAnnotations";
+
+      if (username!=null) {
+          annotationMetaname     = username + "-" + annotationMetaname;
+          rectposMetaname        = username + "-" + rectposMetaname;
+          numAnnotationsMetaname = username + "-" + numAnnotationsMetaname;
+      }
+
+      gsapi.removeDocumentMetadata(docoid,annotationMetaname,removeMetapos);
+      gsapi.removeDocumentMetadata(docoid,rectposMetaname,removeMetapos);
+      numAnnotations--;
+      gsapi.setLiveMetadata(docoid,numAnnotationsMetaname,numAnnotations);
+  }
+}
Index: main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/gsajaxapi.js
===================================================================
--- main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/gsajaxapi.js	(revision 30446)
+++ main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/gsajaxapi.js	(revision 30446)
@@ -0,0 +1,249 @@
+
+function GSAjaxAPI(gwcgi,collect) 
+{
+    var gwcgi_   = gwcgi;
+    var collect_ = collect;
+
+    this.apiURL = function(apiProg)
+    {
+        //get the location of the cgi program
+        splitpos = gwcgi_.lastIndexOf("/");
+
+        var mdserver;
+        if (splitpos >= 0) {
+            mdserver = gwcgi.substring(0,(splitpos+1)) + apiProg;
+        }
+        else {
+          mdserver = apiProg;
+        }
+
+       return mdserver;
+    }
+
+    this.metadataserverURL = function()
+    {
+        return this.apiURL("metadata-server.pl");
+    }
+
+
+    this.urlGetAsync = function(url,locid)
+    {
+       var xmlHttp;
+       try {
+         // Firefox, Opera 8.0+, Safari
+         xmlHttp=new XMLHttpRequest();
+       }
+       catch (e) {
+         // Internet Explorer
+         try {
+           xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
+         }
+         catch (e) {
+           try {
+             xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
+           }
+           catch (e) {
+             alert("Your browser does not support AJAX!");
+             return false;
+           }
+         }
+       }
+    
+       xmlHttp.onreadystatechange=function() {
+         if(xmlHttp.readyState==4) {
+           if (locelem != null) {
+             var locelem = document.getElementById(locid);
+    
+             locelem.innerHTML = xmlHttp.responseText;
+           }
+         }
+       }
+    
+       xmlHttp.open("GET",url,true);
+       xmlHttp.send(null);
+    }
+    
+        
+    this.urlGetSync = function(url)
+    {
+	// alert("url = " + url);
+
+       var xmlHttp;
+       try {
+         // Firefox, Opera 8.0+, Safari
+         xmlHttp=new XMLHttpRequest();
+       }
+       catch (e) {
+         // Internet Explorer
+         try {
+           xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
+         }
+         catch (e) {
+           try {
+             xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
+           }
+           catch (e) {
+             alert("Your browser does not support AJAX!");
+             return false;
+           }
+         }
+       }
+    
+       xmlHttp.open("GET",url,false);
+       xmlHttp.send(null);
+
+       // alert("response = '" + xmlHttp.responseText + "'");
+    
+       return xmlHttp.responseText;
+    }
+    
+    
+    this.setLiveMetadata = function(id,metaname,metavalue)
+    {
+        var mdserver = this.metadataserverURL();
+    
+        var url = mdserver + "?a=set-live-metadata";
+        url += "&c="+collect_;
+        url += "&d="+id;
+        url += "&metaname=" + metaname;
+        url += "&metavalue=" + metavalue;
+
+	//alert("url = " + url);
+
+        this.urlGetSync(url);
+    }
+    
+    
+    this.setDocumentMetadata = function(docid,metaname,metapos,metavalue)
+    {
+	// Allow for three param call to function, where metapos is missed out
+        if (metavalue==null) {
+	    // 3 param case
+	    metavalue = metapos;
+	    metapos = null;
+	}
+        var mdserver = this.metadataserverURL();
+    
+        var url = mdserver + "?a=set-metadata";
+        url += "&c="+collect_;
+        url += "&d="+docid;
+        url += "&metaname=" + metaname;
+        if (metapos!=null) {
+            url += "&metapos=" + metapos;
+        }
+        url += "&metavalue=" + metavalue;
+
+	// alert("url = " + url);
+    
+        this.urlGetSync(url);
+    }
+
+    this.setImportMetadata = function(docid,metaname,metapos,metavalue)
+    {
+	// Allow for three param call to function, where metapos is missed out
+        if (metavalue==null) {
+	    // 3 param case
+	    metavalue = metapos;
+	    metapos = null;
+	}
+        var mdserver = this.metadataserverURL();
+    
+        var url = mdserver + "?a=set-import-metadata";
+        url += "&c="+collect_;
+        url += "&d="+docid;
+        url += "&metaname=" + metaname;
+        if (metapos!=null) {
+            url += "&metapos=" + metapos;
+        }
+        url += "&metavalue=" + metavalue;
+
+	// alert("url = " + url);
+    
+        this.urlGetSync(url);
+    }
+
+    this.documentReindex = function(docid)
+    {
+        var mdserver = this.metadataserverURL();
+    
+        var url = mdserver + "?a=reindex-document";
+        url += "&c="+collect_;
+        url += "&d="+docid;
+
+	// alert("url = " + url);
+    
+        this.urlGetSync(url);
+    }
+    
+    this.getLiveMetadata = function(id,metaname)
+    {
+        var mdserver = this.metadataserverURL();
+    
+        var url = mdserver + "?a=get-live-metadata";
+        url += "&c="+collect_;
+        url += "&d="+id;
+        url += "&metaname=" + metaname;
+
+	//alert("url = " + url);    
+
+        var metavalue = this.urlGetSync(url);
+    
+        //alert("metavalue = " + metavalue);
+
+        return metavalue;
+    }
+    
+    this.getDocumentMetadata = function(docoid,metaname,metapos)
+    {
+        var mdserver = this.metadataserverURL();
+    
+        var url = mdserver + "?a=get-metadata";
+        url += "&c="+collect_;
+        url += "&d="+docoid;
+        url += "&metaname=" + metaname;
+        if (metapos!=null) {
+            url += "&metapos=" + metapos;
+        }
+
+        return this.urlGetSync(url);
+    }
+
+
+
+    
+    this.removeLiveMetadata = function(id,metaname)
+    {
+        var mdserver = this.metadataserverURL();
+    
+        var url = mdserver + "?a=remove-live-metadata";
+        url += "&c="+collect_;
+        url += "&d="+id;
+        url += "&metaname=" + metaname;
+
+	//alert("url = " + url);
+
+        this.urlGetSync(url);
+    }
+    
+    
+    this.removeDocumentMetadata = function(docid,metaname,metapos)
+    {
+        var mdserver = this.metadataserverURL();
+    
+        var url = mdserver + "?a=remove-metadata";
+        url += "&c="+collect_;
+        url += "&d="+docid;
+        url += "&metaname=" + metaname;
+        if (metapos!=null) {
+            url += "&metapos=" + metapos;
+        }
+
+	//alert("url = " + url);
+    
+        this.urlGetSync(url);
+    }
+
+
+    return true;
+
+}
Index: main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/musicstand-main.js
===================================================================
--- main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/musicstand-main.js	(revision 30446)
+++ main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/musicstand-main.js	(revision 30446)
@@ -0,0 +1,244 @@
+
+var cgiGotoPage; 
+if (gs.cgiParams["gp"]) {
+    cgiGotoPage = gs.cgiParams["gp"];
+}
+else {
+    cgiGotoPage = 1;
+}
+
+
+var musicStand 
+    = new MusicStand(httpdocument, gs.cgiParams["c"], gs.cgiParams["d"], gs.documentMetadata["assocfilepath"],
+		     gs.cgiParams["numPages"], cgiGotoPage, 
+		     gs.cgiParams["pageWidth"], gs.cgiParams["pageHeight"],
+		     gs.cgiParams["scaleFactor"]);
+
+musicStand.setStyleColors("_postitbgcol_","_postitselcol_");
+
+musicStand.setPagePrefix(gs.cgiParams["pagePrefix"]);
+musicStand.setPageSuffix(gs.cgiParams["pageSuffix"]);
+
+
+
+function getElementsByClass(searchClassPrefix,node,tag) {
+    
+    var classElements = new Array();
+    if ( node == null )
+	node = document;
+    if ( tag == null )
+	tag = '*';
+    
+    if (node.getElementsByTagName) {
+	var els = node.getElementsByTagName(tag);
+	
+  	var elsLen = els.length;
+	var pattern = new RegExp('(^|\\s)'+searchClassPrefix);
+	for (var i = 0, j = 0; i < elsLen; i++) {
+	    if ( pattern.test(els[i].className) ) {
+		classElements[j] = els[i];
+		j++;
+	    }
+	}
+    }
+    return classElements;
+}
+
+
+
+var dotsTimer = null;
+var dotsDelta = 200;
+
+function dotsAnim(numDots)
+{
+  var dots = [ "", ".", "..", "..." ];
+
+  var dotSpan = document.getElementById('loadingdots');
+  dotSpan.innerHTML = "loading " + dots[numDots];
+
+  var nextNumDots = (numDots+1) %4;
+  dotsTimer = setTimeout("dotsAnim("+nextNumDots+")",dotsDelta);
+}
+
+
+function bodyLoaded()
+{
+  // load page 1
+  var thisPageImg = document.getElementById("thispageimg");
+
+  var thisPageUrl = musicStand.httpnextanim(gs.cgiParams["pagePrefix"],gs.cgiParams["pageSuffix"],musicStand.getPageNum());
+
+  var thisImg = document.createElement('img');
+  thisImg.onload = function (evt) {
+      //var annotateCanvasElem = document.getElementById("annotateCanvas");
+      //annotateCanvasElem.style.display = "none";
+
+      //annotate.loadAnnotations(musicStand.getDocOID());
+
+      var thisLoading = document.getElementById("loading");
+      thisLoading.style.display = "none";
+      if (dotsTimer != null) {
+        clearTimeout(dotsTimer);
+      }
+      thisPageImg.src = thisImg.src;
+
+      //annotateCanvasElem.style.display = "block";
+  }
+
+  // alert("url = " + thisPageUrl);
+
+  thisImg.src = thisPageUrl;
+  // thisPageImg.src = thisPageUrl;
+
+  // setup page 2 as next page
+  var nextPageImg = document.getElementById("nextpageimg");
+  var nextPageUrl = musicStand.httpnextanim(gs.cgiParams["pagePrefix"],gs.cgiParams["pageSuffix"],musicStand.getPageNum()+1);
+
+  var nextImg = document.createElement('img');
+  //nextImg.onload = function (evt) {
+  //nextPageImg.onload = function (evt) {
+  //    
+  //}
+  nextPageImg.src = nextPageUrl;
+
+  // some browsers clear clip rectangle with new image => set it to what we need
+  var nextpagediv = document.getElementById("nextpagediv");
+  nextpagediv.style.clip = "rect(0px, "+gs.cgiParams["pageWidth"]+"px, "+gs.cgiParams["pageHeight"]+"px, "+gs.cgiParams["pageWidth"]+"px)";
+
+  var prevpagediv = document.getElementById("prevpagediv");
+  prevpagediv.style.clip = "rect(0px, "+gs.cgiParams["pageWidth"]+"px, "+gs.cgiParams["pageHeight"]+"px, "+gs.cgiParams["pageWidth"]+"px)";
+
+  var animedgebleed = document.getElementById("animedgebleed");
+  animedgebleed.style.clip = "rect(0px, "+gs.cgiParams["pageWidth"]+"px, "+gs.cgiParams["pageHeight"]+"px, "+gs.cgiParams["pageWidth"]+"px)";
+
+  // no previous page to set up
+
+  // start loading dots
+  dotsTimer = setTimeout("dotsAnim(0)",dotsDelta);
+
+
+  var thispage = document.getElementById("thispage");
+
+  ////YAHOO.util.Event.addListener("thispage", 'mouseover', trackMouse);
+  //// YAHOO.util.Event.addListener(document, 'mousemove', trackMouse);
+
+  //de.events.addMouseMoveHandler(trackMouse);
+
+  //// de.events.prependMouseUpHandler(musicStand.pageMenu);
+
+  ////YAHOO.util.Event.addListener(document, 'keydown', keyPress);
+
+  //de.events.prependKeyPressHandler(keyPress);
+}
+
+
+var sliderMoving = false;
+
+var prevOnMouseMove = null;
+var prevOnMouseUp   = null;
+
+function dragSlider(evt)
+{
+    evt = evt || window.event;
+
+    evt.returnValue = false;
+    if (evt.preventDefault) evt.preventDefault();
+
+    sliderMoving = true;
+    moveSlider(evt);
+
+    prevOnMouseMove = document.onmousemove;
+    prevOnMouseUp   = document.onmouseup;
+
+    document.onmousemove = moveSlider;
+    document.onmouseup = releaseSlider;
+}
+
+
+
+function moveSlider(evt)
+{
+    if (!sliderMoving) return;
+
+    evt = evt || window.event;
+
+    evt.returnValue = false;
+    if (evt.preventDefault) evt.preventDefault();
+
+    var mousePos = getMouseCoords(evt);
+
+    var sliderContainer = document.getElementById('slidercontainer');
+    var sliderContainerYTop = getAbsoluteTop(sliderContainer);
+    var sliderContainerHeight = getRectHeight(sliderContainer) -1;
+
+    var slider = document.getElementById('sliderpos');
+    var sliderHeight = getRectHeight(slider);
+    
+    var halfSliderHeight = sliderHeight/2;
+    var newSliderTop = (mousePos.y - sliderContainerYTop) - halfSliderHeight;
+
+    if ((newSliderTop >= 0) 
+        && (newSliderTop < (sliderContainerHeight-halfSliderHeight))) {
+        slider.style.top = newSliderTop + "px";
+        var speedBreak = newSliderTop;
+	musicStand.setSpeedBreak(speedBreak);
+
+	var trackabove = document.getElementById('slidertrackabove');
+	trackabove.style.height = speedBreak + "px";
+
+	var trackbelow = document.getElementById('slidertrackbelow');
+	trackbelow.style.top = speedBreak + "px";
+	trackbelow.style.height = (gs.cgiParams["pageHeight"] - speedBreak) + "px";
+
+    }
+
+}
+
+
+function releaseSlider(evt)
+{
+    if (!sliderMoving) return;
+
+    document.onmousemove = prevOnMouseMove;
+    document.onmouseup = prevOnMouseUp;
+
+    sliderMoving = false;  
+
+    var slider = document.getElementById('sliderpos');
+    var sliderposTop = parseInt(slider.style.top);
+
+    if (sliderposTop>0) {
+        sliderposTop /= musicStand.getScaleFactor();
+    }
+
+
+    var docid = musicStand.getDocRoot() + "." + musicStand.getPageNum(); 
+
+    var username = musicStand.getUsername();
+    var metaname = (username!=null) ? username + "-sliderposTop" : "sliderposTop";
+    //gsapi.setLiveMetadata(docid,metaname,sliderposTop);
+    //alert("Need to set slider");
+}
+
+
+function updateSlider(sliderposTop)
+{
+    if (sliderposTop>0) {
+        sliderposTop *= musicStand.getScaleFactor();
+
+    }
+    var speedBreak = sliderposTop;
+    musicStand.setSpeedBreak(speedBreak);
+
+    var sliderpos = document.getElementById('sliderpos');
+    sliderpos.style.top = speedBreak + "px";
+    sliderpos.style.left = "-8px";
+
+    var trackabove = document.getElementById('slidertrackabove');
+    trackabove.style.height = speedBreak + "px";
+
+    var trackbelow = document.getElementById('slidertrackbelow');
+    trackbelow.style.top = speedBreak + "px";
+    trackbelow.style.height = (gs.cgiParams["pageHeight"] - speedBreak) + "px";
+}
+
Index: main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/musicstand-open.js
===================================================================
--- main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/musicstand-open.js	(revision 30446)
+++ main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/musicstand-open.js	(revision 30446)
@@ -0,0 +1,76 @@
+
+  var GUITopGap = 135;
+  var GUIBotGap =  30;
+  var GUILeftRightGap = 80;
+
+  function openMusicStand(docid,pagePrefix,pageSuffix,numPages,maxPageWidth,maxPageHeight)
+  {
+
+    var screenWidth; 
+    var screenHeight;
+
+    var widthRatio;
+    var heightRatio;
+    
+    var ratio;
+
+    var pageWidth;
+    var pageHeight;
+
+    var musicStandWidth;
+    var musicStandHeight;
+
+
+    if (orientation == "landscape") {
+        screenWidth = screen.height - GUILeftRightGap; // leave some wiggle room
+        screenHeight = screen.width - GUITopGap - GUIBotGap; // leave some wiggle room
+
+
+        widthRatio = screenWidth / maxPageWidth;
+        heightRatio = screenHeight / maxPageHeight;
+    
+        ratio = (widthRatio<heightRatio) ? widthRatio : heightRatio;
+
+        pageHeight = Math.round(maxPageWidth * ratio);
+        pageWidth = Math.round(maxPageHeight * ratio);
+
+        musicStandWidth = pageWidth + GUILeftRightGap;
+        musicStandHeight = pageHeight + GUITopGap + GUIBotGap;
+    
+    }
+    else {
+        screenWidth = screen.width - GUILeftRightGap; // leave some wiggle room
+        screenHeight = screen.height - GUITopGap - GUIBotGap; // leave some wiggle room
+
+        widthRatio = screenWidth / maxPageWidth;
+        heightRatio = screenHeight / maxPageHeight;
+    
+        ratio = (widthRatio<heightRatio) ? widthRatio : heightRatio;
+
+        pageWidth = Math.round(maxPageWidth * ratio);
+        pageHeight = Math.round(maxPageHeight * ratio);
+
+        musicStandWidth = pageWidth + GUILeftRightGap;
+        musicStandHeight = pageHeight + GUITopGap + GUIBotGap;
+
+    }
+
+
+    //var url = "_httpdocument_&d=" + docid + "&view=simple";
+    var url = "?a=d&ed=1&book=off&c="+gs.cgiParams["c"]+"&d=" + docid + "&excerptid=gs-document-text&view=simple";
+    var url = httpdocument + "&d=" + docid + "&excerptid=gs-document-text&view=simple";
+    url += "&pagePrefix="+pagePrefix;
+    url += "&pageSuffix="+pageSuffix;
+    url += "&numPages="+numPages;
+    url += "&pageWidth="+pageWidth+"&pageHeight="+pageHeight;
+    url += "&scaleFactor="+ratio;
+
+
+    var options = 'toolbar=0,menubar=0,location=0,directories=0,scrollbars=0,status=1';
+    options += ',width='+musicStandWidth+',height='+musicStandHeight;
+
+    window.open(url, 'musicstand', options);
+
+    return false;
+  }
+
Index: main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/musicstand-util.js
===================================================================
--- main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/musicstand-util.js	(revision 30446)
+++ main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/musicstand-util.js	(revision 30446)
@@ -0,0 +1,366 @@
+
+var orientation = "portrait";
+
+var httpdocument = gs.xsltParams.library_name + "?a=d&ed=1&book=off&site="+gs.xsltParams.site_name+"&c="+gs.cgiParams["c"];
+
+
+function getElement(elem_str)
+{
+  var elem;
+  if (document.all) {
+    elem = eval("document.all."+elem_str);
+  }
+  else if (document.getElementById) {
+    elem = document.getElementById(elem_str);
+  }
+  else if (document.layers) {
+    elem = eval("document."+elem_str);
+  }
+
+  return elem;
+}
+
+
+function setVisibility(id,val)
+{
+    if (document.layers) {
+        if (val == 'hidden')  { val = 'hide' }
+        if (val == 'visible') { val = 'show' }
+	document.layers[id].visibility = val;
+    }
+    else if (document.all) {
+	document.all[id].style.visibility = val;
+    }
+    else if (document.getElementById) {
+	document.getElementById(id).style.visibility = val;
+    }
+}
+
+function getVisibility(id)
+{
+    var val;
+
+    if (document.layers) {
+	val = document.layers[id].visibility;
+        if (val == 'hide') { val = 'hidden' }
+        if (val == 'show') { val = 'visible' }
+    }
+    else if (document.all) {
+	val = document.all[id].style.visibility;
+    }
+    else if (document.getElementById) {
+	val = document.getElementById(id).style.visibility;
+    }
+}
+
+function makeVisible(id)
+{
+    setVisibility(id,'visible');
+}
+
+function makeInvisible(id)
+{
+    setVisibility(id,'hidden');
+}
+
+function toggleVisibility(id)
+{
+    var curr_vista = getVisibility(id);
+    var new_vista = (curr_vista == 'hidden') ? 'visible' : 'hidden'
+    setVisibility(id,new_vista);
+}
+
+
+function setDisplay(id,val)
+{
+    if (document.layers) {
+	document.layers[id].display = val;
+    }
+    else if (document.all) {
+	document.all[id].style.display = val;
+    }
+    else if (document.getElementById) {
+	document.getElementById(id).style.display = val;
+    }
+}
+
+function getDisplay(id)
+{
+    var val;
+
+    if (document.layers) {
+	val = document.layers[id].display;
+    }
+    else if (document.all) {
+	val = document.all[id].style.display;
+    }
+    else if (document.getElementById) {
+	val = document.getElementById(id).style.display;
+    }
+}
+
+function displayBlock(id)
+{
+    setDisplay(id,'block');
+}
+
+function displayInline(id)
+{
+    setDisplay(id,'inline');
+}
+
+function displayNone(id)
+{
+    setDisplay(id,'none');
+}
+
+function toggleDisplay(id)
+{
+    var curr_vista = getDisplay(id);
+    var new_vista = (curr_vista == 'block') ? 'none' : 'block'
+    displayBlock(id,new_vista);
+}
+
+
+
+function getAbsoluteLeft(el) {
+    xPos = el.offsetLeft;
+    tempEl = el.offsetParent;
+    while (tempEl != null) {
+        xPos += tempEl.offsetLeft;
+        tempEl = tempEl.offsetParent;
+    }
+    return xPos;
+}
+
+function getAbsoluteTop(el) {
+    yPos = el.offsetTop;
+    tempEl = el.offsetParent;
+    while (tempEl != null) {
+        yPos += tempEl.offsetTop;
+        tempEl = tempEl.offsetParent;
+    }
+    return yPos;
+}
+
+
+
+function get_rect_xl(el)
+{
+  var xl;
+
+  if (document.all) {
+    xl = el.style.pixelLeft;
+  }
+  else if (document.getElementById) {
+    xl = parseInt(el.style.left);
+  }
+  else if (document.layers) {
+    xl = el.left;
+  }
+  
+  return xl;
+}
+
+function get_rect_yt(el)
+{
+  var yt;
+
+  if (document.all) {
+    yt = el.style.pixelTop;
+  }
+  else if (document.getElementById) {
+    yt = parseInt(el.style.top);
+  }
+  else if (document.layers) {
+    yt = el.top;
+  }
+  
+  return yt;
+}
+
+function getRectWidth(el)
+{
+  if (typeof(el) == "string") {
+    el = getElement(el);
+  }
+
+  var width;
+
+  if (document.all) {
+    width = parseInt(el.style.width);
+  }
+  else if (document.getElementById) {
+    width = parseInt(el.style.width);
+  }
+  else if (document.layers) {
+    width = el.clip.width; 
+  }
+
+  return width;
+}
+
+function getRectHeight(el)
+{
+  if (typeof(el) == "string") {
+    el = getElement(el);
+  }
+
+
+  var height;
+
+  if (document.all) {
+    height = parseInt(el.style.height);
+  }
+  else if (document.getElementById) {
+    height = parseInt(el.style.height);
+  }
+  else if (document.layers) {
+    height = el.clip.height; 
+  }
+
+  return height;
+}
+
+function get_rect_xr(el)
+{
+  var xr;
+ 
+  xr = get_rect_xl(el) + get_rect_width(el) -1;
+
+  return xr;
+}
+
+function get_rect_yb(el)
+{
+  var yb;
+ 
+  yb = get_rect_yt(el) + get_rect_height(el) -1;
+
+  return yb;
+}
+
+
+function set_rect_xl(el,xl)
+{
+  if (document.all) {
+    el.style.pixelLeft = xl;
+  }
+  else if (document.getElementById) {
+    el.style.left = xl + "px";
+  }
+  else if (document.layers) {
+    el.left = xl + "px";
+  }
+}
+
+function set_rect_yt(el,yt)
+{
+  if (document.all) {
+    el.style.pixelTop = yt;
+  }
+  else if (document.getElementById) {
+    el.style.top = yt + "px";
+  }
+  else if (document.layers) {
+    el.top = yt + "px";
+  }
+}
+
+function set_rect_width(el,width)
+{
+  if (document.all) {
+    el.style.width = width;
+  }
+  else if (document.getElementById) {
+    el.style.width = width;
+  }
+  else if (document.layers) {
+    el.width = width;
+  }
+}
+
+function set_rect_height(el,height)
+{
+  if (document.all) {
+    el.style.height = height;
+  }
+  else if (document.getElementById) {
+    el.style.height = height;
+  }
+  else if (document.layers) {
+    el.height = height;
+  }
+}
+
+
+
+function getMouseCoords(evt)
+{
+  var mouse = new Object();
+
+  if (!evt) var evt = window.event;
+
+  if (evt.pageX || evt.pageY) {
+    mouse.x = evt.pageX;
+    mouse.y = evt.pageY;
+  }
+  else if (evt.clientX || evt.clientY) {
+    mouse.x = evt.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;
+    mouse.y = evt.clientY + document.body.scrollTop + document.documentElement.scrollTop;
+
+  }
+
+  return mouse;
+}
+
+
+function clip_to_rect(mouse, xl,yt,xr,yb) 
+{
+  if (mouse.x < xl) {
+    mouse.x = xl; 
+  }
+  else if (mouse.x > xr) {
+    mouse.x = xr; 
+  }
+
+  if (mouse.y < yt) {
+    mouse.y = yt; 
+  }
+  else if (mouse.y > yb) {
+    mouse.y = yb; 
+  }
+}
+
+function draw_graphic(gr,x_org,y_org)
+{
+  if (document.all) {
+    gr.style.pixelLeft = x_org;
+    gr.style.pixelTop  = y_org;
+    gr.style.visibility = 'visible';
+  }
+  else if (document.getElementById) {
+    gr.style.left = x_org + 'px';
+    gr.style.top  = y_org + 'px';
+    gr.style.visibility = 'visible';
+  }
+  else if (document.layers) {
+    gr.left = x_org;
+    gr.top  = y_org;
+    gr.visibility = 'show';
+  }
+}
+
+function hide_graphic(gr)
+{
+  if (document.all) {
+    gr.style.visibility = 'hidden';
+  }
+  else if (document.getElementById) {
+    gr.style.visibility = 'hidden';
+  }
+  else if (document.layers) {
+    gr.visibility = 'hide';
+  }
+}
+
Index: main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/musicstand.js
===================================================================
--- main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/musicstand.js	(revision 30446)
+++ main/trunk/model-sites-dev/mozarts-laptop/collect/digital-music-stand/script/musicstand.js	(revision 30446)
@@ -0,0 +1,480 @@
+
+function MusicStand(httpdoc,cgiargc,docoid,thisOID,cgiNumPages,cgiGotoPage,
+		    cgiPageWidth,cgiPageHeight,cgiScaleFactor)
+{
+
+  var httpdocument = httpdoc;
+  var collect      = cgiargc;
+  var site         = gs.xsltParams.site_name;
+    
+  var docid   = docoid;
+  var _cutpos = docid.indexOf(".");
+  var docRoot = (_cutpos>0) ? docid.substr(0,_cutpos) : docid;
+
+  var assocDir = thisOID;
+
+  var totalPageCount = cgiNumPages;
+  var speedBreak = 500;
+  var pageXDim = cgiPageWidth;
+  var pageYDim = cgiPageHeight;
+  var scaleFactor = cgiScaleFactor;
+
+  var topVal    = 0;
+  var rightVal  = pageXDim;
+  var bottomVal = 0;
+  var leftVal   = 0;
+
+  var pageNum = cgiGotoPage;
+
+  var pageAnimTimer;
+
+  var cgiPrefix;
+  var cgiSuffix;
+
+  var postitBgCol  = "rgba(255,200,200,0.7)";
+  var postitSelCol = "rgba(128,0,0,0.7)";
+
+  var username = null;
+
+  imageserverURL = function()
+  {
+      //return gsapi.apiURL("image-server.pl");
+      return "cgi-bin/image-server.pl";
+  }
+
+  this.setStyleColors = function(bg,sel)
+  {
+    postitBgCol = bg;
+    postitSelCol = sel;
+  }
+
+
+  this.setUsername = function(cgiUsername)
+  {
+    username = cgiUsername;
+  }
+
+  this.getUsername = function()
+  {
+      return username;
+  }
+
+  this.getScaleFactor = function() 
+  {
+      return scaleFactor;
+  }
+
+  this.getPageNum = function() 
+  {
+      return pageNum;
+  }
+
+  this.getDocRoot = function()
+  {
+      return docRoot;
+  }
+
+  this.getDocOID = function()
+  {
+      return docid;
+  }
+
+  this.getSpeedBreak = function() 
+  {
+      return speedBreak;
+  }
+
+  this.setSpeedBreak = function(newSpeedBreak) 
+  {
+      speedBreak = newSpeedBreak;
+  }
+
+
+  this.setPagePrefix = function(p)
+  {
+      cgiPrefix = p;
+  }
+
+  this.setPageSuffix = function(s)
+  {
+      cgiSuffix = s;
+  }
+
+
+  this.docwritePrevPageNum = function()
+  {
+      document.write(pageNum-1);
+  }
+
+  this.activatePrevPageNum = function()
+  {
+      if (pageNum>1) { 
+          displayInline('prevpagespan');
+      }
+      else {
+          displayNone('prevpagespan');
+      }
+  }
+
+
+  this.docwriteOptOfPages = function()
+  {
+      if (totalPageCount>1) {
+        document.write(' of ' + totalPageCount + ' pages');
+      }
+  }
+
+  this.docwriteNextPageNum = function()
+  {
+      document.write(pageNum+1);
+  }
+
+  this.activateNextPageNum = function()
+  {
+      if (pageNum < totalPageCount) { 
+          displayInline('nextpagespan');
+      }
+      else {
+          displayNone('nextpagespan');
+      }
+  }
+
+  delayedShowStatus = function(mess)
+  {
+    window.status = mess; 
+  }
+
+  this.showStatus = function(mess)
+  {
+    window.status = mess; 
+
+    // NS6 series of browsers set URL after doing event
+    // => have a delayed version that sets the status bar
+    setTimeout("delayedShowStatus('"+mess+"')",10);
+
+    return true;
+  }
+
+
+  pageAnimPrivate = function(direction,pagePrefix,pageSuffix) 
+  {
+	var imagediv = (direction>0) ? 'nextpagediv' : 'prevpagediv';
+        var imagelayer = document.getElementById(imagediv)
+        var bleedlayer = document.getElementById('animedgebleed')
+
+	var deltaY;
+	var deltaTime;
+
+	if (bottomVal<speedBreak) {
+	  deltaY = 2;
+	  deltaTime = 10;
+	}
+	else {
+	  deltaY = 1;
+	  deltaTime = 30;
+	}
+
+	if(bottomVal < pageYDim) {	
+		bottomVal += deltaY;
+		imagelayer.style.clip="rect("+topVal+"px "+rightVal+"px "+bottomVal+"px "+leftVal+"px)"
+		bleedlayer.style.clip="rect("+topVal+"px "+rightVal+"px "+(bottomVal+2)+"px "+leftVal+"px)"
+		var callPageAnim = "pageAnimPrivate("+direction+",'"+pagePrefix+"','"+pageSuffix+"')";
+		pageAnimTimer = setTimeout(callPageAnim,deltaTime)
+	}
+	else {
+
+	  // finished => update the image that is the current page
+	  var thisimg = document.getElementById('thispageimg')
+	  var nextimg = document.getElementById('nextpageimg')
+	  var previmg = document.getElementById('prevpageimg')
+	  
+	  if (direction>0) {
+	    if (pageNum<totalPageCount) {
+	        pageNum++;
+		previmg.src = thisimg.src;
+  	        thisimg.src = nextimg.src;
+
+		resetValues(); // reset clip rectangles
+
+  	        var nextSrc = httpnextanimPrivate(pagePrefix,pageSuffix,pageNum+1);
+	        nextimg.src = nextSrc;
+
+	        var nextspan = document.getElementById('nextpagespan');
+
+		// update page numbers displayed for next and prev
+	        var nextval = document.getElementById('nextpageval');
+		if (pageNum<totalPageCount) {
+		    nextval.innerHTML = (pageNum+1);
+		    displayInline('nextpagespan');
+		}
+		else {
+		    nextval.innerHTML = "";
+		    displayNone('nextpagespan');
+		}
+
+	        var prevval = document.getElementById('prevpageval');
+		prevval.innerHTML = (pageNum-1);
+
+		displayInline('prevpagespan');
+	    }
+	  }
+	  else {
+	    // previous page
+	    if (pageNum>0) {
+	        pageNum--;
+		nextimg.src = thisimg.src;
+  	        thisimg.src = previmg.src;
+
+		resetValues(); // reset clip rectangles
+
+  	        var prevSrc = httpnextanimPrivate(pagePrefix,pageSuffix,pageNum-1);
+	        previmg.src = prevSrc;
+
+		// update page numbers displayed for next and prev
+	        var nextval = document.getElementById('nextpageval');
+		nextval.innerHTML = (pageNum+1);
+
+		displayInline('nextpagespan');
+	        //var nextspan = document.getElementById('nextpagespan');
+		//nextspan.style.display = "block";
+
+	        var prevspan = document.getElementById('prevpagespan');
+
+	        var prevval = document.getElementById('prevpageval');
+		if (pageNum>1) {
+		    prevval.innerHTML = (pageNum-1);
+		    displayInline('prevpagespan');
+		}
+		else {
+		    prevval.innerHTML = "";
+		    displayNone('prevpagespan');
+		}
+	    }
+	  }
+
+	  // update docid member variable (pageNum reflect new page value)
+          docid = docRoot + "." + pageNum;
+
+/*
+	  // remove any existing annotations
+	  annotate.clearAnnotations();
+
+          //var annotateCanvasElem = document.getElementById("annotateCanvas");
+          //annotateCanvasElem.style.display = "none";
+
+	  // load in new ones for this page
+	  annotate.loadAnnotations(docid);
+
+          //annotateCanvasElem.style.display = "block";
+*/
+
+	  // update slide position (pageNum already changed)
+
+
+	  var username = musicStand.getUsername();
+	  var metaval;
+
+	  if (username != null) {
+	      // try of user specific one, if it exists
+	      var metaname = username + "-sliderposTop";
+	      metaval  = gsapi.getLiveMetadata(docid,metaname);
+	      if (metaval == "") {
+	          // fallback to looking up non-user specific one
+	          metaval  = gsapi.getLiveMetadata(docid,"sliderposTop");
+	      }
+	  }
+	  else {
+      	      //metaval  = gsapi.getLiveMetadata(docid,"sliderposTop");
+      	      metaval  = 700; // ******** hack
+	  }
+	  var sliderposTop = parseInt(metaval);
+
+	  updateSlider(sliderposTop);
+
+	}
+  }
+
+  cancelPageAnimPrivate = function() {
+      clearTimeout(pageAnimTimer);
+      resetValues();
+  }
+
+  this.cancelPageAnim = function() {
+      cancelPageAnimPrivate();
+  }
+
+  this.pageAnim = function(direction,pagePrefix,pageSuffix) 
+  {
+      pageAnimPrivate(direction,pagePrefix,pageSuffix);
+  }
+
+  httpnextanimPrivate = function(pagePrefix,pageSuffix,nextPageNum)
+  {
+    var imgserver = imageserverURL();
+
+    var screenWidth = screen.width;
+    var screenHeight = screen.height;
+
+    nextPageNum--; // filenames use values one less that pageNum
+
+    var url = imgserver + "?a=fit-screen"
+    url += "&c="+collect;
+    url += "&site="+site;
+    url += "&pageWidth="+pageXDim;
+    url += "&pageHeight="+pageYDim;
+    url += "&assocDir=" + assocDir;
+    url += "&assocFile=" + pagePrefix;
+
+
+    if (totalPageCount>1) {
+      url += "-" + nextPageNum;
+    }
+    url += pageSuffix;
+
+    if (orientation == "landscape") {
+        url += "&orientation=landscape";
+    }
+
+    return url;
+  }
+
+  this.httpnextanim = function(pagePrefix,pageSuffix,nextPageNum)
+  {
+      return httpnextanimPrivate(pagePrefix,pageSuffix,nextPageNum);
+  }
+
+  nextPageAnimPrivate = function(pagePrefix,pageSuffix) 
+  {
+      // set up next page
+
+      if (pageNum<totalPageCount) {
+          //saveAnnotations();
+          pageAnimPrivate(1,pagePrefix,pageSuffix);
+      }
+  }
+
+  this.nextPageAnim = function(pagePrefix,pageSuffix) 
+  {
+      nextPageAnimPrivate(pagePrefix,pageSuffix);
+  }
+
+  prevPageAnimPrivate = function(pagePrefix,pageSuffix) 
+  {
+      // set up next page
+
+      if (pageNum>1) {
+          //saveAnnotations();
+          pageAnimPrivate(-1,pagePrefix,pageSuffix);
+      }
+  }
+
+  this.prevPageAnim = function(pagePrefix,pageSuffix) 
+  {
+      prevPageAnimPrivate(pagePrefix,pageSuffix);
+  }
+
+  this.nextOrPrevPageEventLRMouse = function(evt,pagePrefix,pageSuffix) 
+  {
+      if (!evt) var evt = window.event;
+
+      var rightclick = false;
+      if (evt.which) rightclick = (evt.which == 3);
+      else if (evt.button) rightclick = (evt.button == 2);
+
+      var leftclick = false;
+      if (evt.which) leftclick = (evt.which == 1);
+      else if (evt.button) leftclick = (evt.button == 1);
+
+      if (rightclick) { 
+          this.nextPageAnim(pagePrefix,pageSuffix); 
+      }
+      else if (leftclick) { 
+          this.prevPageAnim(pagePrefix,pageSuffix); 
+      }
+
+
+      return false;
+  }
+
+
+  var numClicks = 0;
+  var clicksTimer = null;
+
+  this.nextOrPrevPageEvent = function(evt,pagePrefix,pageSuffix) 
+  //this.pageMenu = function(e)
+  {
+      //var pagePrefix = cgiPrefix;
+      //var pageSuffix = cgiSuffix;
+
+      if (clicksTimer!=null) {
+        clearTimeout(clicksTimer);
+      }
+
+      var callPageAction = 'pageAction("'+pagePrefix+'","'+pageSuffix+'")';
+      clicksTimer = setTimeout(callPageAction,1000);
+
+      numClicks = (numClicks % 3) + 1;
+
+      var menu = document.getElementById("pagemenu");
+      menu.style.visibility = "visible";
+
+      for (var i=1; i<=3; i++) {
+          var menuItem = document.getElementById("pagemenu"+i);
+	  if (i==numClicks) {
+	    menuItem.style.backgroundColor = postitSelCol;
+	  }
+	  else {
+	    menuItem.style.backgroundColor = postitBgCol;
+	  }
+      }
+      
+      return false;
+  }
+  
+  pageAction = function(pagePrefix,pageSuffix)
+  {
+      var menu = document.getElementById("pagemenu");
+      menu.style.visibility = "hidden";
+
+      var keepState = numClicks;
+
+      clicksTimer = null;
+      numClicks = 0;
+
+      if (keepState==1) {
+        cancelPageAnimPrivate();
+      }
+      else if (keepState==2) {
+          nextPageAnimPrivate(pagePrefix,pageSuffix); 
+      }
+      else if (keepState==3) { 
+          prevPageAnimPrivate(pagePrefix,pageSuffix); 
+      }
+
+  }
+
+  this.hidePageMenu = function(elem,event)
+  {
+    elem.style.visibility="hidden";
+    //de.cursor.setCursorAtXY(mouseX,mouseY);
+  }
+
+
+  resetValues = function() 
+  {
+      var nextlayer = document.getElementById('nextpagediv')
+      var prevlayer = document.getElementById('prevpagediv')
+      var bleedlayer = document.getElementById('animedgebleed')
+
+      topVal=0;
+      rightVal=pageXDim;
+      bottomVal=0;
+      leftVal=0
+
+      var startingClip = "rect("+topVal+"px "+rightVal+"px "+bottomVal+"px "+leftVal+"px)";
+
+      nextlayer.style.clip=startingClip;
+      prevlayer.style.clip=startingClip;
+      bleedlayer.style.clip=startingClip;
+  }
+}
