libxml++: xmlpp::DtdValidator Class Reference

XML DTD validator. More...

#include <libxml++/validators/dtdvalidator.h>

Inheritance diagram for xmlpp::DtdValidator:

Public Member Functions

 DtdValidator ()
 
 DtdValidator (const std::string& filename)
 Create a validator and parse an external subset (DTD file) immediately. More...

 
 DtdValidator (const ustring& external, const ustring& system)
 Create a validator and parse an external subset (DTD file) immediately. More...

 
 DtdValidator (Dtd* dtd, bool take_ownership)
 Create a validator. More...

 
 ~DtdValidator () override
 
Dtdget_dtd () noexcept
 Get the parsed DTD. More...

 
const Dtdget_dtd () const noexcept
 Get the parsed DTD. More...

 
 operator bool () const noexcept override
 Test whether a DTD has been parsed. More...

 
void parse_file (const std::string& filename) override
 Parse an external subset (DTD file). More...

 
void parse_memory (const ustring& contents) override
 Parse a DTD from a string. More...

 
void parse_stream (std::istream& in)
 Parse a DTD from a stream. More...

 
void parse_subset (const ustring& external, const ustring& system)
 Parse an external subset (DTD file). More...

 
void set_dtd (Dtd* dtd, bool take_ownership)
 Set a DTD. More...

 
void validate (const Document* document) override
 Validate a document, using a previously parsed DTD. More...

 
- Public Member Functions inherited from xmlpp::Validator
 Validator () noexcept
 
 ~Validator () override
 

Protected Member Functions

void initialize_context () override
 
void release_underlying () override
 
- Protected Member Functions inherited from xmlpp::Validator
virtual void check_for_exception ()
 
virtual void check_for_validity_messages ()
 
virtual void handle_exception ()
 To be called in an exception handler. More...

 
virtual void on_validity_error (const ustring& message)
 
virtual void on_validity_warning (const ustring& message)
 
- Protected Member Functions inherited from xmlpp::NonCopyable
 NonCopyable () noexcept
 
 NonCopyable (const NonCopyable&)=delete
 
 NonCopyable (NonCopyable&&)=delete
 
virtual ~NonCopyable ()
 
NonCopyableoperator= (const NonCopyable&)=delete
 
NonCopyableoperator= (NonCopyable&&)=delete
 

Additional Inherited Members

- Static Protected Member Functions inherited from xmlpp::Validator
static void callback_validity_error (void* ctx, const char* msg,...)
 
static void callback_validity_warning (void* ctx, const char* msg,...)
 
- Protected Attributes inherited from xmlpp::Validator
std::unique_ptr< exceptionexception_
 
ustring validate_error_
 
ustring validate_warning_
 

Detailed Description

XML DTD validator.

DTD = Document Type Definition

Constructor & Destructor Documentation

xmlpp::DtdValidator::DtdValidator ( )
xmlpp::DtdValidator::DtdValidator ( const std::string filename)
explicit

Create a validator and parse an external subset (DTD file) immediately.

Parameters
filenameThe URL of the DTD.
Exceptions
xmlpp::parse_error
xmlpp::DtdValidator::DtdValidator ( const ustring external,
const ustring system 
)
explicit

Create a validator and parse an external subset (DTD file) immediately.

Parameters
externalThe external ID of the DTD.
systemThe URL of the DTD.
Exceptions
xmlpp::parse_error
xmlpp::DtdValidator::DtdValidator ( Dtd dtd,
bool  take_ownership 
)
explicit

Create a validator.

Since libxml++ 3.0:
Parameters
dtdA pointer to the DTD to use when validating XML documents.
take_ownershipIf true, the validator takes ownership of the DTD. The caller must not delete it.

If false, the validator does not take ownership of the DTD. The caller must guarantee that the DTD exists as long as the validator keeps a pointer to it. The caller is responsible for deleting the DTD when it's no longer needed.
xmlpp::DtdValidator::~DtdValidator ( )
override

Member Function Documentation

Dtd* xmlpp::DtdValidator::get_dtd ( )
noexcept

Get the parsed DTD.

Returns
A pointer to the parsed DTD, or nullptr.
const Dtd* xmlpp::DtdValidator::get_dtd ( ) const
noexcept

Get the parsed DTD.

Returns
A pointer to the parsed DTD, or nullptr.
void xmlpp::DtdValidator::initialize_context ( )
overrideprotectedvirtual

Reimplemented from xmlpp::Validator.

xmlpp::DtdValidator::operator bool ( ) const
explicitoverridevirtualnoexcept

Test whether a DTD has been parsed.

For instance

if (validator)
do_something();

Implements xmlpp::Validator.

void xmlpp::DtdValidator::parse_file ( const std::string filename)
overridevirtual

Parse an external subset (DTD file).

If the validator already contains a DTD, that DTD is deleted.

Parameters
filenameThe URL of the DTD.
Exceptions
xmlpp::parse_error

Implements xmlpp::Validator.

void xmlpp::DtdValidator::parse_memory ( const ustring contents)
overridevirtual

Parse a DTD from a string.

If the validator already contains a DTD, that DTD is deleted.

Parameters
contentsThe DTD as a string.
Exceptions
xmlpp::parse_error

Implements xmlpp::Validator.

void xmlpp::DtdValidator::parse_stream ( std::istream in)

Parse a DTD from a stream.

If the validator already contains a DTD, that DTD is deleted.

Parameters
inThe stream.
Exceptions
xmlpp::parse_error
void xmlpp::DtdValidator::parse_subset ( const ustring external,
const ustring system 
)

Parse an external subset (DTD file).

If the validator already contains a DTD, that DTD is deleted.

Parameters
externalThe external ID of the DTD.
systemThe URL of the DTD.
Exceptions
xmlpp::parse_error
void xmlpp::DtdValidator::release_underlying ( )
overrideprotectedvirtual

Reimplemented from xmlpp::Validator.

void xmlpp::DtdValidator::set_dtd ( Dtd dtd,
bool  take_ownership 
)

Set a DTD.

If the validator already contains a DTD, that DTD is released (deleted if the validator owns the DTD).

Parameters
dtdA pointer to the DTD to use when validating XML documents.
take_ownershipIf true, the validator takes ownership of the DTD. The caller must not delete it.

If false, the validator does not take ownership of the DTD. The caller must guarantee that the DTD exists as long as the validator keeps a pointer to it. The caller is responsible for deleting the DTD when it's no longer needed.
void xmlpp::DtdValidator::validate ( const Document document)
overridevirtual

Validate a document, using a previously parsed DTD.

The internal subset (if present) is de-coupled (i.e. not used), which could give problems if ID or IDREF is present.

Parameters
documentPointer to the document.
Exceptions
xmlpp::internal_error
xmlpp::validity_error

Implements xmlpp::Validator.