#include <math.h>
SkinParser::SkinParser( intf_thread_t *pIntf, const string &rFileName,
- const string &rPath, bool useDTD, BuilderData *pData ):
- XMLParser( pIntf, rFileName, useDTD ), m_path( rPath), m_pData(pData),
- m_ownData(pData == NULL), m_xOffset( 0 ), m_yOffset( 0 )
+ const string &rPath, BuilderData *pData ):
+ XMLParser( pIntf, rFileName ), m_path( rPath ), m_pData( pData ),
+ m_ownData( pData == NULL ), m_xOffset( 0 ), m_yOffset( 0 )
{
// Make sure the data is allocated
if( m_pData == NULL )
OSFactory *pFactory = OSFactory::instance( getIntf() );
string fullPath = m_path + pFactory->getDirSeparator() + attr["file"];
msg_Dbg( getIntf(), "opening included XML file: %s", fullPath.c_str() );
- // FIXME: We do not use the DTD to validate the included XML file,
- // as the parser seems to dislike it otherwise...
- SkinParser subParser( getIntf(), fullPath.c_str(), m_path, false, m_pData );
+ SkinParser subParser( getIntf(), fullPath.c_str(), m_path, m_pData );
subParser.parse();
}
};
SkinParser( intf_thread_t *pIntf, const string &rFileName,
- const string &rPath, bool useDTD = true,
- BuilderData *pData = NULL );
+ const string &rPath, BuilderData *pData = NULL );
virtual ~SkinParser();
const BuilderData &getData() const { return *m_pData; }
# include <sys/stat.h>
#endif
-XMLParser::XMLParser( intf_thread_t *pIntf, const string &rFileName,
- bool useDTD ):
- SkinObject( pIntf )
+XMLParser::XMLParser( intf_thread_t *pIntf, const string &rFileName )
+ : SkinObject( pIntf ), m_pXML( NULL ), m_pReader( NULL ), m_pStream( NULL )
{
- m_pReader = NULL;
- m_pStream = NULL;
-
- if( useDTD )
+ m_pXML = xml_Create( pIntf );
+ if( !m_pXML )
{
- m_pXML = xml_Create( pIntf );
- if( m_pXML )
- LoadCatalog();
- else
- msg_Err( getIntf(), "DTD not supported" );
+ msg_Err( getIntf(), "cannot initialize xml" );
+ return;
}
- else
- m_pXML = NULL;
+
+ LoadCatalog();
char* psz_uri = make_URI( rFileName.c_str(), NULL );
m_pStream = stream_UrlNew( pIntf, psz_uri );
free( psz_uri );
-
if( !m_pStream )
{
msg_Err( getIntf(), "failed to open %s for reading",
rFileName.c_str() );
- m_pReader = NULL;
return;
}
+
m_pReader = xml_ReaderCreate( m_pXML, m_pStream );
if( !m_pReader )
{
return;
}
- if( m_pXML )
- xml_ReaderUseDTD( m_pReader );
+ xml_ReaderUseDTD( m_pReader );
}
if( it == resPath.end() )
{
// Ok, try the default one
- xml_CatalogLoad( m_pXML, 0 );
+ xml_CatalogLoad( m_pXML, NULL );
}
for( it = resPath.begin(); it != resPath.end(); ++it )
class XMLParser: public SkinObject
{
public:
- XMLParser( intf_thread_t *pIntf, const string &rFileName,
- bool useDTD = true );
+ XMLParser( intf_thread_t *pIntf, const string &rFileName );
virtual ~XMLParser();
/// Parse the file. Returns true on success