Source for file t2xmlchk.php
Documentation is available at t2xmlchk.php
* Check XML files intended to be used with Translation2
* @category Internationalization
* @author Olivier Guilyardi <ylf@xung.org>
* @copyright 2004-2007 Olivier Guilyardi
* @license http://www.debian.org/misc/bsd.license BSD License (3 Clause)
* @version CVS: $Id: t2xmlchk.php,v 1.5 2007/10/29 21:10:02 quipo Exp $
* @link http://pear.php.net/package/Translation2
//error_reporting (E_ALL);
exit ("Sorry, this script will only run under PHP4 (that is: not PHP5)\n");
echo "t2xmlchk checks and validates XML files intended to be used with \n" .
"the Translation2 internationalization package.\n" .
"Usage: t2xmlchk <xml filename>\n";
require_once 'Translation2/Container/xml.php';
require_once 'XML/DTD/XmlValidator.php';
if (!$xml_file = $argv[1 ]) {
echo "ERROR : No xml filename provided\n\n";
echo " ERROR : No such file : \"$xml_file\"\n\n";
$validator = & new XML_DTD_XmlValidator ();
$fp = fopen($dtd_file, 'w');
echo "Performing DTD validation... ";
$test = $validator->isValid ($dtd_file, $xml_file);
exit ("FAILED : " . $validator->getMessage () . "\n");
echo "Unserializing... ";
$unserializer = &new XML_Unserializer (array ('keyAttribute' => $keyAttr));
if (PEAR ::isError ($status = $unserializer->unserialize($xml_file, true ))) {
exit ("FAILED : " . $status->getMessage () . "\n");
$data = $unserializer->getUnserializedData ();
// This should be done by XML_DTD :
echo "Checking lang IDs... ";
foreach ($data['languages'] as $lang => $spec) {
exit (" FAILED : Found lang duplicate for \"$lang\"\n" );
echo "Checking string duplicates... ";
foreach ($data['pages'] as $pagename => $pagedata) {
foreach ($pagedata as $stringname => $stringvalues) {
exit (" FAILED : found duplicate in page \"$pagename\" for string \"stringname\"\n" );
// This should be done by XML_DTD :
echo "Checking lang IDREFs... ";
foreach ($data['pages'] as $pagename => $pagedata) {
foreach ($pagedata as $stringname => $stringvalues) {
foreach ($stringvalues as $lang => $translation) {
exit (" FAILED : Unknow lang \"$lang\" in page \"$pagename\" at string \"$stringname\"\n" );
echo "Checking translation duplicates... ";
foreach ($data['pages'] as $pagename => $pagedata) {
foreach ($pagedata as $stringname => $stringvalues) {
foreach ($stringvalues as $lang => $translation) {
exit (" FAILED : found duplicate in page \"$pagename\" for string \"stringname\" with lang \"$lang\"\n" );
Documentation generated on Tue, 06 May 2008 06:00:40 -0400 by phpDocumentor 1.4.0. PEAR Logo Copyright © PHP Group 2004.
|