/**
  * Format XML for single DC element.
  * @param $propertyName string
  * @param $value array
  * @param $multilingual boolean optional
  */
 function formatElement($propertyName, $values, $multilingual = false)
 {
     if (!is_array($values)) {
         $values = array($values);
     }
     // Translate the property name to XML syntax.
     $openingElement = str_replace(array('[@', ']'), array(' ', ''), $propertyName);
     $closingElement = String::regexp_replace('/\\[@.*/', '', $propertyName);
     // Create the actual XML entry.
     $response = '';
     foreach ($values as $key => $value) {
         if ($multilingual) {
             $key = str_replace('_', '-', $key);
             assert(is_array($value));
             foreach ($value as $subValue) {
                 if ($key == METADATA_DESCRIPTION_UNKNOWN_LOCALE) {
                     $response .= "\t<{$openingElement}>" . OAIUtils::prepOutput($subValue) . "</{$closingElement}>\n";
                 } else {
                     $response .= "\t<{$openingElement} xml:lang=\"{$key}\">" . OAIUtils::prepOutput($subValue) . "</{$closingElement}>\n";
                 }
             }
         } else {
             assert(is_scalar($value));
             $response .= "\t<{$openingElement}>" . OAIUtils::prepOutput($value) . "</{$closingElement}>\n";
         }
     }
     return $response;
 }
 /**
  * Format XML for single RFC 1807 element.
  * @param $name string
  * @param $value mixed
  */
 function formatElement($name, $value)
 {
     if (!is_array($value)) {
         $value = array($value);
     }
     $response = '';
     foreach ($value as $v) {
         $response .= "\t<{$name}>" . OAIUtils::prepOutput($v) . "</{$name}>\n";
     }
     return $response;
 }
 /**
  * Format XML for single MARC21 element.
  * @param $tag string
  * @param $ind1 string
  * @param $ind2 string
  * @param $code string
  * @param $value mixed
  */
 function formatElement($tag, $ind1, $ind2, $code, $value)
 {
     if (!is_array($value)) {
         $value = array($value);
     }
     $response = '';
     foreach ($value as $v) {
         $response .= "\t<datafield tag=\"{$tag}\" ind1=\"{$ind1}\" ind2=\"{$ind2}\">\n" . "\t\t<subfield code=\"{$code}\">" . OAIUtils::prepOutput($v) . "</subfield>\n" . "\t</datafield>\n";
     }
     return $response;
 }
 /**
  * Format XML for single MARC element.
  * @param $id string
  * @param $i1 string
  * @param $i2 string
  * @param $label string
  * @param $value mixed
  */
 function formatElement($id, $i1, $i2, $label, $value)
 {
     if (!is_array($value)) {
         $value = array($value);
     }
     $response = '';
     foreach ($value as $v) {
         $response .= "\t<varfield id=\"{$id}\" i1=\"{$i1}\" i2=\"{$i2}\">\n" . "\t\t<subfield label=\"{$label}\">" . OAIUtils::prepOutput($v) . "</subfield>\n" . "\t</varfield>\n";
     }
     return $response;
 }
示例#5
0
 /**
  * Output OAI response.
  * @param $response string text of response message.
  * @param $printParams boolean display request parameters
  */
 function response($response, $printParams = true)
 {
     header('Content-Type: text/xml');
     echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" . "<?xml-stylesheet type=\"text/xsl\" href=\"" . PKPRequest::getBaseUrl() . "/lib/pkp/xml/oai2.xsl\" ?>\n" . "<OAI-PMH xmlns=\"http://www.openarchives.org/OAI/2.0/\"\n" . "\txmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" . "\txsi:schemaLocation=\"http://www.openarchives.org/OAI/2.0/\n" . "\t\thttp://www.openarchives.org/OAI/2.0/OAI-PMH.xsd\">\n" . "\t<responseDate>" . OAIUtils::UTCDate() . "</responseDate>\n" . "\t<request";
     // print request params, if applicable
     if ($printParams) {
         foreach ($this->params as $k => $v) {
             echo " {$k}=\"" . OAIUtils::prepOutput($v) . "\"";
         }
     }
     echo ">" . OAIUtils::prepOutput($this->config->baseUrl) . "</request>\n" . $response . "</OAI-PMH>\n";
 }
 /**
  * Format XML for single DC element.
  * @param $name string
  * @param $value mixed
  * @param $multilingual boolean optional
  */
 function formatElement($name, $value, $multilingual = false, $attribs = array())
 {
     if (!is_array($value)) {
         $value = array($value);
     }
     $attribText = '';
     foreach ($attribs as $n => $v) {
         $attribText .= " {$n}=\"" . htmlspecialchars($v) . "\"";
     }
     $response = '';
     foreach ($value as $key => $v) {
         $key = str_replace('_', '-', $key);
         if (!$multilingual) {
             $response .= "\t<dc:{$name}{$attribText}>" . OAIUtils::prepOutput($v) . "</dc:{$name}>\n";
         } else {
             if (is_array($v)) {
                 foreach ($v as $subV) {
                     $response .= "\t<dc:{$name} xml:lang=\"{$key}\">" . OAIUtils::prepOutput($subV) . "</dc:{$name}>\n";
                 }
             } else {
                 $response .= "\t<dc:{$name} xml:lang=\"{$key}\">" . OAIUtils::prepOutput($v) . "</dc:{$name}>\n";
             }
         }
     }
     return $response;
 }
示例#7
0
 /**
  * Format XML for single DC element.
  * @param $name string
  * @param $value mixed
  * @param $multilingual boolean optional
  */
 function formatElement($name, $value, $multilingual = false)
 {
     if (!is_array($value)) {
         $value = array($value);
     }
     $response = '';
     foreach ($value as $key => $v) {
         $key = str_replace('_', '-', $key);
         if (!$multilingual) {
             $response .= "\t<dc:{$name}>" . OAIUtils::prepOutput($v) . "</dc:{$name}>\n";
         } else {
             if (is_array($v)) {
                 foreach ($v as $subV) {
                     $response .= "\t<dc:{$name} xml:lang=\"{$key}\">" . OAIUtils::prepOutput($subV) . "</dc:{$name}>\n";
                 }
             } else {
                 $response .= "\t<dc:{$name} xml:lang=\"{$key}\">" . OAIUtils::prepOutput($v) . "</dc:{$name}>\n";
             }
         }
     }
     return $response;
 }