
<!DOCTYPE html
  PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
   <head>
      <title>Documentation for citationstyle - citationstyle.xsd - Element info</title>
      <meta http-equiv="Content-Type" content="text/xml; charset=iso-8859-1"/>
      <style type="text/css">
/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* More-configurable styles */

/******** General ********/
         
/* Document body */
body {
   color: Black;
   background-color: White;
   font-family: Arial, sans-serif;
   font-size: 10pt;
}
                  
/* Horizontal rules */
hr {
   color: black;
}
/* Document title */
h1 {
   font-size: 18pt;
   letter-spacing: 2px;
   border-bottom: 1px #ccc solid;
   padding-top: 5px;
   padding-bottom: 5px;
}
/* Main section headers */
h2 {
   font-size: 14pt;
   letter-spacing: 1px;
}
/* Sub-section headers */
h3, h3 a, h3 span {
   font-size: 12pt;
   font-weight: bold;
   color: black;
}
/* Table displaying the properties of the schema components or the
   schema document itself */
table.properties th, table.properties th a {
   color: black;
   background-color: #F99; /* Pink */
}
table.properties td {
   background-color: #eee; /* Gray */
}

img{
 border: 0;
}         

/********* Documentation style *************/
p.documentation {
   color:black;
   font-style:italic;
         background-color: #EEEEFF;
         border: 1px solid #DDDDFF;
         padding-top: 1px;
         margin-right: 30px;
         margin-top: 1px;
}

         
/******** Table of Contents Section ********/

/* Controls for switching between printing and viewing modes */
div#printerControls {
   color: #963; /* Orange-brown */
}
/* Controls that can collapse or expand all XML Instance
   Representation and Schema Component Representation boxes */
div#globalControls {
   border: 2px solid #999;
}


/******** Schema Document Properties Section ********/

/* Table displaying the namespaces declared in the schema */
table.namespaces th {
   background-color: #ccc;
}
table.namespaces td {
   background-color: #eee;
}
/* Target namespace of the schema */
span.targetNS {
   color: #06C;
   font-weight: bold;
}


/******** Schema Components' Sections ********/

/* Name of schema component */
.name {
   color: #F93; /* Orange */
}

/* Hierarchy table */
table.hierarchy {
   border: 2px solid #999; /* Gray */
}

/* XML Instance Representation table */
div.sample div.contents {
   border: 1px dashed black;
}


/* Schema Component Representation table */
div.schemaComponent div.contents {
   border: 2px black solid;
}


/******** Glossary Section ********/

/* Glossary Terms */
.glossaryTerm {
   color: #036; /* Blue */
}


/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* Printer-version styles */

@media print {

/* Ensures that controls are hidden when printing */
div#printerControls {
   visibility: hidden;
}
div#globalControls {
   visibility: hidden;
}
#legend {
   display: none;
}
#legendTOC {
   display: none;
}
#glossary {
   display: none;
}
#glossaryTOC {
   display: none;
}

}

/* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ */
/* Base styles */

/******** General ********/

/* Unordered lists */
ul {
   margin-left: 1.5em;
   margin-bottom: 0em;
}
/* Tables */
table {
   margin-top: 10px;
   margin-bottom: 10px;
   margin-left: 2px;
   margin-right: 2px;
}
table th, table td {
   font-size: 10pt;
   vertical-align: top;
   padding-top: 3px;
   padding-bottom: 3px;
   padding-left: 10px;
   padding-right: 10px;
}
table th {
   font-weight: bold;
   text-align: left;
}
/* Table displaying the properties of the schema components or the
   schema document itself */
table.properties {
   width: 90%;
}
table.properties th {
   width: 30%;
}
/* Boxes that can make its content appear and disappear*/
div.box {
   margin: 1em;
}
   /* Box caption */
div.box span.caption {
   font-weight: bold;
}
   /* Button to open and close the box */
div.box input.control {
   width: 1.4em;
   height: 1.4em;
   text-align: center;
   vertical-align: middle;
   font-size: 11pt;
}
   /* Box contents */
div.box div.contents {
   margin-top: 3px;
}


/******** Table of Contents Section ********/

/* Controls for switching between printing and viewing modes */
div#printerControls {
   white-space: nowrap;
   font-weight: bold;
   padding: 5px;
   margin: 5px;
}
/* Controls that can collapse or expand all XML Instance
   Representation and Schema Component Representation boxes */
div#globalControls {
   padding: 10px;
   margin: 5px;
}


/******** Schema Document Properties Section ********/

/* Table displaying the namespaces declared in the schema */
table.namespaces th {
}
table.namespaces td {
}
/* Target namespace of the schema */
span.targetNS {
}


/******** Schema Components' Sections ********/

/* Name of schema component */
.name {
}

/* Hierarchy table */
table.hierarchy {
   width: 90%;
}
table.hierarchy th {
   font-weight: normal;
   font-style: italic;
   width: 20%;
}
table.hierarchy th, table.hierarchy td {
   padding: 5px;
}

/* XML Instance Representation table */
div.sample {
   width: 90%;
}
div.sample div.contents {
   padding: 5px;
   font-family: Courier New, sans-serif;
   font-size: 10pt;
}
   /* Normal elements and attributes */
div.sample div.contents, div.sample div.contents a {
   color: black;
}
   /* Group Headers */
div.sample div.contents .group, div.sample div.contents .group a {
   color: #999; /* Light gray */
}
   /* Type Information */
div.sample div.contents .type, div.sample div.contents .type a {
   color: #999; /* Light gray */
}
   /* Occurrence Information */
div.sample div.contents .occurs, div.sample div.contents .occurs a {
   color: #999; /* Light gray */
}
   /* Fixed values */
div.sample div.contents .fixed {
   color: #063; /* Green */
   font-weight: bold;
}
   /* Simple type constraints */
div.sample div.contents .constraint, div.sample div.contents .constraint a {
   color: #999; /* Light gray */
}
   /* Elements and attributes inherited from base type */
div.sample div.contents .inherited, div.sample div.contents .inherited a {
   color: #666; /* Dark gray */
}
   /* Elements and attributes added to or changed from base type */
div.sample div.contents .newFields {
   font-weight: bold;
}
   /* Other type of information */
div.sample div.contents .other, div.sample div.contents .other a {
   color: #369; /* Blue */
   font-style: italic;
}
   /* Link to open up window displaying documentation */
div.sample div.contents a.documentation {
   text-decoration: none;
   padding-left: 3px;
   padding-right: 3px;
   padding-top: 0px;
   padding-bottom: 0px;
   font-weight: bold;
   font-size: 11pt;
   background-color: #FFD;
   color: #069;
}
   /* Invert colors when hovering over link to open up window 
      displaying documentation */
div.sample div.contents a.documentation:hover {
   color: #FFD;
   background-color: #069;
}

/* Schema Component Representation table */
div.schemaComponent {
   width: 90%;
}
div.schemaComponent div.contents {
   font-family: Courier New, sans-serif;
   font-size: 10pt;
   padding: 5px;
}
   /* Syntax characters */
div.schemaComponent div.contents {
   color: #00f; /* blue */
}
   /* Element and attribute tags */
div.schemaComponent div.contents .scTag {
   color: #933; /* maroon */
}
   /* Element and attribute content */
div.schemaComponent div.contents .scContent, div.schemaComponent div.contents .scContent a {
   color: black;
   font-weight: bold;
}
   /* Comments */
div.schemaComponent div.contents .comment {
   color: #999; /* Light gray */
}

/******** Legend Section ********/

div#legend table, div#legend div {
   margin-bottom: 3px;
}
div#legend div.hint {
   color: #999; /* Light gray */
   width: 90%;
   margin-left: 1em;
   margin-bottom: 2em;
}


/******** Glossary Section ********/

/* Glossary Terms */
.glossaryTerm {
   font-weight: bold;
}

/********* Details *************/
.detailsToc {
  color: #666; /* Light gray */
}

.details {
  color: #666; /* Light gray */
  text-decoration:none;
}

/******** Footer ********/

.footer {
   font-size: 8pt;
}
</style>
      <script type="text/javascript">
<!--
          
         
/**
 * Counter of documentation windows
 * Used to give each window a unique name
 */
var windowCount = 0;
         
/**
 * Opens up a window displaying the documentation
 * of a schema component in the XML Instance
 * Representation table.
 * 
 * @param compDesc      Description of schema component 
 * @param compName      Name of schema component 
 * @param docTextArray Array containing the paragraphs 
 *                           of the new document
 */
function viewDocumentation(compDesc, compName, docTextArray) {
  var width = 400;
  var height = 200;
  var locX = 100;
  var locY = 200;

  /* Generate content */
  var actualText = "<html>";
  actualText += "<head><title>";
  actualText += compDesc;
  if (compName != '') {
     actualText += ": " + compName;
  }
  actualText += "</title></head>";
  actualText += "<body bgcolor=\"#FFFFEE\">";
  // Title
  actualText += "<p style=\"font-family: Arial, sans-serif; font-size: 12pt; font-weight: bold; letter-spacing:1px;\">";
  actualText += compDesc;
  if (compName != '') {
     actualText += ": <span style=\"color:#006699\">" + compName + "</span>";
  }
  actualText += "</p>";
  // Documentation
  var idx;
  for (idx = 0; idx < docTextArray.length; idx++) {
     actualText += "<p style=\"font-family: Arial, sans-serif; font-size: 10pt;\">" + docTextArray[idx] + "</p>";
  }
  // Link to close window
  actualText += "<a href=\"javascript:void(0)\" onclick=\"window.close();\" style=\"font-family: Arial, sans-serif; font-size: 8pt;\">Close</a>";
  actualText += "</body></html>";

  /* Display window */
  windowCount++;
  var docWindow = window.open("", "documentation"+windowCount, "toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable,alwaysRaised,dependent,titlebar=no,width="+width+",height="+height+",screenX="+locX+",left="+locX+",screenY="+locY+",top="+locY);
  docWindow.document.write(actualText);
}         
      
// -->
</script>
   </head>
   <body>
      <h1>
         <a name="top">Documentation for citationstyle</a>
      </h1>
      <h3>Element: <a name="h-573506543" class="name">info</a>
      </h3>
      <h4>
         <a href="citationstyle.xsd.html" class="details">[Table of contents]</a>
      </h4>
      <table class="properties">
         <tr>
            <th>Name</th>
            <td>info</td>
         </tr>
         <tr>
            <th>Used by (from the same schema document)</th>
            <td>Model Group <b>
                  <a href="citationstyle.xsd.html_h475404411.html">CitationStyle.author-year</a>
               </b>, Model Group <b>
                  <a href="citationstyle.xsd.html_h1689383140.html">CitationStyle.note-bib</a>
               </b>, Model Group <b>
                  <a href="citationstyle.xsd.html_h10824003.html">CitationStyle.note-nobib</a>
               </b>, Model Group <b>
                  <a href="citationstyle.xsd.html_h-1557154675.html">CitationStyle.number</a>
               </b>, Model Group <b>
                  <a href="citationstyle.xsd.html_h1758216420.html">CitationStyle.citekey</a>
               </b>
            </td>
         </tr>
         <tr>
            <th>Type</th>
            <td>Locally-defined complex type</td>
         </tr>
         <tr>
            <th>
               <a title="Look up 'Nillable' in glossary"
                  href="citationstyle.xsd.html#term_Nillable">Nillable</a>
            </th>
            <td>no</td>
         </tr>
         <tr>
            <th>
               <a title="Look up 'Abstract' in glossary"
                  href="citationstyle.xsd.html#term_Abstract">Abstract</a>
            </th>
            <td>no</td>
         </tr>
      </table>
      <div class="sample box">
         <div>
            <input type="button" id="h-573506543_logicalDiagram_button" class="control"
                   onclick="switchState('h-573506543_logicalDiagram'); return false;"
                   style="display: none"/> 
            <span class="caption">Logical Diagram</span>
         </div>
         <div id="h-573506543_logicalDiagram" class="contents">
            <img usemap="#h-1445998571" src="schemaDiagrams/h-1445998571.png"/>
            <!--
            Map ref: file:/test/rng//schemaDiagrams/h-1445998571.map--><map name="h-1445998571">
               <area shape="rect" alt="h1022589956" coords="292,65,498,135"
                     href="citationstyle.xsd.html_h1022589956.html#h1022589956"/>

               <area shape="rect" alt="h508166011" coords="292,145,498,215"
                     href="citationstyle.xsd.html_h508166011.html#h508166011"/>

               <area shape="rect" alt="h-1547229547" coords="292,225,498,295"
                     href="citationstyle.xsd.html_h-1547229547.html#h-1547229547"/>

               <area shape="rect" alt="h-1606128594" coords="292,305,498,360"
                     href="citationstyle.xsd.html_h-1606128594.html#h-1606128594"/>

               <area shape="rect" alt="h-476665193" coords="292,370,498,425"
                     href="citationstyle.xsd.html_h-476665193.html#h-476665193"/>

               <area shape="rect" alt="h-32682758" coords="292,435,498,505"
                     href="citationstyle.xsd.html_h-32682758.html#h-32682758"/>

               <area shape="rect" alt="h374252917" coords="292,515,498,570"
                     href="citationstyle.xsd.html_h374252917.html#h374252917"/>

               <area shape="rect" alt="h2063517359" coords="292,580,498,635"
                     href="citationstyle.xsd.html_h2063517359.html#h2063517359"/>

               <area shape="rect" alt="h-601754121" coords="292,645,498,715"
                     href="citationstyle.xsd.html_h-601754121.html#h-601754121"/>

               <area shape="rect" alt="h-129865927" coords="292,725,498,795"
                     href="citationstyle.xsd.html_h-129865927.html#h-129865927"/>

            </map>
         </div>
         <script type="text/javascript">
<!--
          setState('h-573506543_logicalDiagram', false);
// -->
</script>
      </div>
      <div class="sample box">
         <div>
            <input type="button" id="h-573506543_xibox_button" class="control"
                   onclick="switchState('h-573506543_xibox'); return false;"
                   style="display: none"/> 
            <span class="caption">XML Instance Representation</span>
         </div>
         <div id="h-573506543_xibox" class="contents">
            <div style="margin-left: 0em">&lt;<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:info&gt; <br/>
               <div style="margin-left: 1.5em">&lt;<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:title&gt; <span class="type">
                     <a href="citationstyle.xsd.html#ns_xs" title="Find out namespace of 'xs' prefix">xs</a>:string</span> &lt;/<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:title&gt; <span class="occurs">[1]</span>
               </div>
               <div style="margin-left: 1.5em">&lt;<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;title-short&#34; element declaration."
                     href="citationstyle.xsd.html_h1022589956.html">title-short</a>&gt; ... &lt;/<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;title-short&#34; element declaration."
                     href="citationstyle.xsd.html_h1022589956.html">title-short</a>&gt; <span class="occurs">[0..1]</span>
               </div>
               <div style="margin-left: 1.5em">&lt;<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;edition&#34; element declaration."
                     href="citationstyle.xsd.html_h508166011.html">edition</a>&gt; ... &lt;/<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;edition&#34; element declaration."
                     href="citationstyle.xsd.html_h508166011.html">edition</a>&gt; <span class="occurs">[0..1]</span>
               </div>
               <div style="margin-left: 1.5em">&lt;<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;version&#34; element declaration."
                     href="citationstyle.xsd.html_h-1547229547.html">version</a>&gt; ... &lt;/<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;version&#34; element declaration."
                     href="citationstyle.xsd.html_h-1547229547.html">version</a>&gt; <span class="occurs">[0..1]</span>
               </div>
               <div style="margin-left: 1.5em">&lt;<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;author&#34; element declaration."
                     href="citationstyle.xsd.html_h-1606128594.html">author</a>&gt; ... &lt;/<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;author&#34; element declaration."
                     href="citationstyle.xsd.html_h-1606128594.html">author</a>&gt; <span class="occurs">[0..1]</span>
               </div>
               <div style="margin-left: 1.5em">&lt;<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;dateCreated&#34; element declaration."
                     href="citationstyle.xsd.html_h-476665193.html">dateCreated</a>&gt; ... &lt;/<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;dateCreated&#34; element declaration."
                     href="citationstyle.xsd.html_h-476665193.html">dateCreated</a>&gt; <span class="occurs">[1]</span>
               </div>
               <div style="margin-left: 1.5em">&lt;<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;dateModified&#34; element declaration."
                     href="citationstyle.xsd.html_h-32682758.html">dateModified</a>&gt; ... &lt;/<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;dateModified&#34; element declaration."
                     href="citationstyle.xsd.html_h-32682758.html">dateModified</a>&gt; <span class="occurs">[0..*]</span>
               </div>
               <div style="margin-left: 1.5em">&lt;<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;sources&#34; element declaration."
                     href="citationstyle.xsd.html_h374252917.html">sources</a>&gt; ... &lt;/<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;sources&#34; element declaration."
                     href="citationstyle.xsd.html_h374252917.html">sources</a>&gt; <span class="occurs">[0..1]</span>
               </div>
               <div style="margin-left: 1.5em">&lt;<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;basedOn&#34; element declaration."
                     href="citationstyle.xsd.html_h2063517359.html">basedOn</a>&gt; ... &lt;/<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;basedOn&#34; element declaration."
                     href="citationstyle.xsd.html_h2063517359.html">basedOn</a>&gt; <span class="occurs">[0..1]</span>
               </div>
               <div style="margin-left: 1.5em">&lt;<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;field&#34; element declaration."
                     href="citationstyle.xsd.html_h-601754121.html">field</a>&gt; ... &lt;/<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;field&#34; element declaration."
                     href="citationstyle.xsd.html_h-601754121.html">field</a>&gt; <span class="occurs">[0..*]</span>
               </div>
               <div style="margin-left: 1.5em">&lt;<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;description&#34; element declaration."
                     href="citationstyle.xsd.html_h-129865927.html">description</a>&gt; ... &lt;/<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;description&#34; element declaration."
                     href="citationstyle.xsd.html_h-129865927.html">description</a>&gt; <span class="occurs">[0..1]</span>
               </div>&lt;/<a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:info&gt;</div>
         </div>
         <script type="text/javascript">
<!--
          setState('h-573506543_xibox', true);
// -->
</script>
      </div>
      <div class="sample box">
         <div>
            <input type="button" id="h-573506543_diagram_button" class="control"
                   onclick="switchState('h-573506543_diagram'); return false;"
                   style="display: none"/> 
            <span class="caption">Diagram</span>
         </div>
         <div id="h-573506543_diagram" class="contents">
            <img usemap="#h1843770143" src="schemaDiagrams/h1843770143.png"/>
            <!--
            Map ref: file:/test/rng//schemaDiagrams/h1843770143.map--><map name="h1843770143">
               <area shape="rect" alt="h1513967320" coords="235,0,381,26"
                     href="citationstyle.xsd.html_h1513967320.html#h1513967320"/>

               <area shape="rect" alt="h1022589956" coords="235,36,364,76"
                     href="citationstyle.xsd.html_h1022589956.html#h1022589956"/>

               <area shape="rect" alt="h508166011" coords="235,86,346,126"
                     href="citationstyle.xsd.html_h508166011.html#h508166011"/>

               <area shape="rect" alt="h-1547229547" coords="235,136,348,176"
                     href="citationstyle.xsd.html_h-1547229547.html#h-1547229547"/>

               <area shape="rect" alt="h-1606128594" coords="235,186,344,226"
                     href="citationstyle.xsd.html_h-1606128594.html#h-1606128594"/>

               <area shape="rect" alt="h-476665193" coords="235,236,379,261"
                     href="citationstyle.xsd.html_h-476665193.html#h-476665193"/>

               <area shape="rect" alt="h-32682758" coords="235,271,383,311"
                     href="citationstyle.xsd.html_h-32682758.html#h-32682758"/>

               <area shape="rect" alt="h374252917" coords="235,321,351,361"
                     href="citationstyle.xsd.html_h374252917.html#h374252917"/>

               <area shape="rect" alt="h2063517359" coords="235,371,359,411"
                     href="citationstyle.xsd.html_h2063517359.html#h2063517359"/>

               <area shape="rect" alt="h-601754121" coords="235,421,332,461"
                     href="citationstyle.xsd.html_h-601754121.html#h-601754121"/>

               <area shape="rect" alt="h-129865927" coords="235,471,371,511"
                     href="citationstyle.xsd.html_h-129865927.html#h-129865927"/>

            </map>
         </div>
         <script type="text/javascript">
<!--
          setState('h-573506543_diagram', true);
// -->
</script>
      </div>
      <div class="schemaComponent box">
         <div>
            <input type="button" id="h-573506543_scbox_button" class="control"
                   onclick="switchState('h-573506543_scbox'); return false;"
                   style="display: none"/> 
            <span class="caption">Schema Component Representation</span>
         </div>
         <div id="h-573506543_scbox" class="contents">
            <div style="margin-left: 0em">&lt;<span class="scTag">xs:element</span> 
               <span class="scTag">name</span>="<span class="scContent">info</span>"&gt;<div style="margin-left: 1.5em">&lt;<span class="scTag">xs:complexType</span>&gt;<div style="margin-left: 1.5em">&lt;<span class="scTag">xs:sequence</span>&gt;<div style="margin-left: 1.5em">&lt;<span class="scTag">xs:group</span> 
                        <span class="scTag">ref</span>="<span class="scContent">
                           <a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;Info.Title&#34; group definition."
                              href="citationstyle.xsd.html_h1513967320.html">Info.Title</a>
                        </span>"/&gt;</div>
                     <div style="margin-left: 1.5em">&lt;<span class="scTag">xs:element</span> 
                        <span class="scTag">ref</span>="<span class="scContent">
                           <a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;title-short&#34; element declaration."
                              href="citationstyle.xsd.html_h1022589956.html">title-short</a>
                        </span>" <span class="scTag">minOccurs</span>="<span class="scContent">0</span>"/&gt;</div>
                     <div style="margin-left: 1.5em">&lt;<span class="scTag">xs:element</span> 
                        <span class="scTag">ref</span>="<span class="scContent">
                           <a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;edition&#34; element declaration."
                              href="citationstyle.xsd.html_h508166011.html">edition</a>
                        </span>" <span class="scTag">minOccurs</span>="<span class="scContent">0</span>"/&gt;</div>
                     <div style="margin-left: 1.5em">&lt;<span class="scTag">xs:element</span> 
                        <span class="scTag">ref</span>="<span class="scContent">
                           <a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;version&#34; element declaration."
                              href="citationstyle.xsd.html_h-1547229547.html">version</a>
                        </span>" <span class="scTag">minOccurs</span>="<span class="scContent">0</span>"/&gt;</div>
                     <div style="margin-left: 1.5em">&lt;<span class="scTag">xs:element</span> 
                        <span class="scTag">ref</span>="<span class="scContent">
                           <a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;author&#34; element declaration."
                              href="citationstyle.xsd.html_h-1606128594.html">author</a>
                        </span>" <span class="scTag">minOccurs</span>="<span class="scContent">0</span>"/&gt;</div>
                     <div style="margin-left: 1.5em">&lt;<span class="scTag">xs:element</span> 
                        <span class="scTag">ref</span>="<span class="scContent">
                           <a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;dateCreated&#34; element declaration."
                              href="citationstyle.xsd.html_h-476665193.html">dateCreated</a>
                        </span>"/&gt;</div>
                     <div style="margin-left: 1.5em">&lt;<span class="scTag">xs:element</span> 
                        <span class="scTag">ref</span>="<span class="scContent">
                           <a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;dateModified&#34; element declaration."
                              href="citationstyle.xsd.html_h-32682758.html">dateModified</a>
                        </span>" <span class="scTag">minOccurs</span>="<span class="scContent">0</span>" <span class="scTag">maxOccurs</span>="<span class="scContent">unbounded</span>"/&gt;</div>
                     <div style="margin-left: 1.5em">&lt;<span class="scTag">xs:element</span> 
                        <span class="scTag">ref</span>="<span class="scContent">
                           <a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;sources&#34; element declaration."
                              href="citationstyle.xsd.html_h374252917.html">sources</a>
                        </span>" <span class="scTag">minOccurs</span>="<span class="scContent">0</span>"/&gt;</div>
                     <div style="margin-left: 1.5em">&lt;<span class="scTag">xs:element</span> 
                        <span class="scTag">ref</span>="<span class="scContent">
                           <a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;basedOn&#34; element declaration."
                              href="citationstyle.xsd.html_h2063517359.html">basedOn</a>
                        </span>" <span class="scTag">minOccurs</span>="<span class="scContent">0</span>"/&gt;</div>
                     <div style="margin-left: 1.5em">&lt;<span class="scTag">xs:element</span> 
                        <span class="scTag">ref</span>="<span class="scContent">
                           <a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;field&#34; element declaration."
                              href="citationstyle.xsd.html_h-601754121.html">field</a>
                        </span>" <span class="scTag">minOccurs</span>="<span class="scContent">0</span>" <span class="scTag">maxOccurs</span>="<span class="scContent">unbounded</span>"/&gt;</div>
                     <div style="margin-left: 1.5em">&lt;<span class="scTag">xs:element</span> 
                        <span class="scTag">ref</span>="<span class="scContent">
                           <a href="citationstyle.xsd.html#ns_cs" title="Find out namespace of 'cs' prefix">cs</a>:<a title="Jump to &#34;description&#34; element declaration."
                              href="citationstyle.xsd.html_h-129865927.html">description</a>
                        </span>" <span class="scTag">minOccurs</span>="<span class="scContent">0</span>"/&gt;</div>&lt;/<span class="scTag">xs:sequence</span>&gt;</div>&lt;/<span class="scTag">xs:complexType</span>&gt;</div>&lt;/<span class="scTag">xs:element</span>&gt;</div>
         </div>
         <script type="text/javascript">
<!--
          setState('h-573506543_scbox', false);
// -->
</script>
      </div>
      <hr/>
      <p class="footer">Generated by <a href="http://www.oxygenxml.com">&lt;oXygen/&gt; XML Editor</a> using a modified version of <a href="http://titanium.dstc.edu.au/xml/xs3p">xs3p</a> that adds schema diagrams and chunking support. Last modified: <script type="text/javascript">
<!--
          document.write(document.lastModified);
// -->
</script>
      </p>
   </body>
</html>