/** * 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; }
/** * 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; }
/** * 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; }