---
name: "XMLTV::ValidateFile"
section: "3pm"
platform: "linux"
package: "libxmltv-perl"
version: "1.4.0-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/XMLTV::ValidateFile"
---

# XMLTV::ValidateFile(3pm)

Validates an XMLTV file

## NAME

XMLTV::ValidateFile - Validates an XMLTV file

## DESCRIPTION

Utility library that validates that a file is correct according to http://wiki.xmltv.org/index.php/XMLTVFormat.

## EXPORTED FUNCTIONS

All these functions are exported on demand.

- LoadDtd

  Load the xmltv dtd. Takes a single parameter which is the name of the xmltv dtd file.

  LoadDtd must be called before ValidateFile can be called.

- ValidateFile

  Validate that a file is valid according to the XMLTV dtd and try to check that it contains valid information. ValidateFile takes a filename as parameter and optionally also a day and an offset and prints error messages to STDERR.

  ValidateFile returns a list of errors that it found with the file. Each error takes the form of a keyword:

  ValidateFile checks the following:

  - notwell

    The file is not well-formed XML.

  - notvalid

    The file does not follow the XMLTV DTD.

  - invalidid

    An xmltvid does not look like a proper id, i.e. it does not match /^\[-a-zA-Z0-9\]+(\\.\[-a-zA-Z0-9\]+)+$/.

  - duplicateid

    More than one channel-entry found for a channelid.

  - unknownid

    No channel-entry found for a channelid that is used in a programme-entry.

  - noprogrammes

    No programme entries were found in the file.

  - emptytitle

    A programme entry with an empty or missing title was found.

  - emptydescription

    A programme entry with an empty desc-element was found. The desc-element shall be omitted if there is no description.

  - badstart

    A programme entry with an invalid start-time was found.

  - badstop

    A programme entry with an invalid stop-time was found.

  - badepisode

    A programme entry with an invalid episode number was found.

  - missingtimezone

    The start/stop time for a programme entry does not include a timezone.

  - invalidtimezone

    The start/stop time for a programme entry contains an invalid timezone.

  - badiso8859

    The file is encoded in iso-8859 but contains characters that have no meaning in iso-8859 (or are control characters). If it's iso-8859-1 (aka Latin 1) it might be some characters in windows-1252 encoding.

  - badutf8

    The file is encoded in utf-8 but contains characters that look strange. 1) Mis-encoded single characters represented with \[EF\]\[BF\]\[BD\] bytes 2) Mis-encoded single characters represented with \[C3\]\[AF\]\[C2\]\[BF\]\[C2\]\[BD\] bytes 3) Mis-encoded single characters in range \[C2\]\[80-9F\]

  - badentity

    The file contains one or more undefined XML entities.

  If no errors are found, an empty list is returned.

## BUGS

It is currently necessary to specify the path to the xmltv dtd-file. This should not be necessary.

## COPYRIGHT

Copyright (C) 2006 Mattias Holmlund.

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., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
