mirror of
https://github.com/xiaoyifang/goldendict-ng.git
synced 2024-11-27 23:34:06 +00:00
Xdxf: Fix empty tags conversion
This commit is contained in:
parent
ab7df09bee
commit
ab6b1f62ef
56
xdxf2html.cc
56
xdxf2html.cc
|
@ -107,6 +107,10 @@ string convert( string const & in, DICT_TYPE type, map < string, string > const
|
||||||
// We build a dom representation of the given xml, then do some transforms
|
// We build a dom representation of the given xml, then do some transforms
|
||||||
QDomDocument dd;
|
QDomDocument dd;
|
||||||
|
|
||||||
|
// Empty element which will be removed after
|
||||||
|
// We will insert it to other empty elements to avoid output ones in <xxx/> form
|
||||||
|
QDomElement fakeElement = dd.createElement( "b" );
|
||||||
|
|
||||||
QString errorStr;
|
QString errorStr;
|
||||||
int errorLine, errorColumn;
|
int errorLine, errorColumn;
|
||||||
|
|
||||||
|
@ -136,6 +140,9 @@ string convert( string const & in, DICT_TYPE type, map < string, string > const
|
||||||
{
|
{
|
||||||
QDomElement el = nodes.at( 0 ).toElement();
|
QDomElement el = nodes.at( 0 ).toElement();
|
||||||
|
|
||||||
|
if( el.text().isEmpty() && el.childNodes().isEmpty() )
|
||||||
|
el.appendChild( fakeElement );
|
||||||
|
|
||||||
el.setTagName( "span" );
|
el.setTagName( "span" );
|
||||||
if( isLogicalFormat )
|
if( isLogicalFormat )
|
||||||
el.setAttribute( "class", "xdxf_ex" );
|
el.setAttribute( "class", "xdxf_ex" );
|
||||||
|
@ -149,6 +156,9 @@ string convert( string const & in, DICT_TYPE type, map < string, string > const
|
||||||
{
|
{
|
||||||
QDomElement el = nodes.at( 0 ).toElement();
|
QDomElement el = nodes.at( 0 ).toElement();
|
||||||
|
|
||||||
|
if( el.text().isEmpty() && el.childNodes().isEmpty() )
|
||||||
|
el.appendChild( fakeElement );
|
||||||
|
|
||||||
el.setTagName( "span" );
|
el.setTagName( "span" );
|
||||||
el.setAttribute( "class", "xdxf_ex_markd" );
|
el.setAttribute( "class", "xdxf_ex_markd" );
|
||||||
}
|
}
|
||||||
|
@ -162,6 +172,9 @@ string convert( string const & in, DICT_TYPE type, map < string, string > const
|
||||||
{
|
{
|
||||||
QDomElement el = nodes.at( 0 ).toElement();
|
QDomElement el = nodes.at( 0 ).toElement();
|
||||||
|
|
||||||
|
if( el.text().isEmpty() && el.childNodes().isEmpty() )
|
||||||
|
el.appendChild( fakeElement );
|
||||||
|
|
||||||
if( type == STARDICT )
|
if( type == STARDICT )
|
||||||
{
|
{
|
||||||
el.setTagName( "span" );
|
el.setTagName( "span" );
|
||||||
|
@ -279,6 +292,9 @@ string convert( string const & in, DICT_TYPE type, map < string, string > const
|
||||||
{
|
{
|
||||||
QDomElement el = nodes.at( 0 ).toElement();
|
QDomElement el = nodes.at( 0 ).toElement();
|
||||||
|
|
||||||
|
if( el.text().isEmpty() && el.childNodes().isEmpty() )
|
||||||
|
el.appendChild( fakeElement );
|
||||||
|
|
||||||
el.setTagName( "span" );
|
el.setTagName( "span" );
|
||||||
el.setAttribute( "class", "xdxf_opt" );
|
el.setAttribute( "class", "xdxf_opt" );
|
||||||
}
|
}
|
||||||
|
@ -289,6 +305,9 @@ string convert( string const & in, DICT_TYPE type, map < string, string > const
|
||||||
{
|
{
|
||||||
QDomElement el = nodes.at( 0 ).toElement();
|
QDomElement el = nodes.at( 0 ).toElement();
|
||||||
|
|
||||||
|
if( el.text().isEmpty() && el.childNodes().isEmpty() )
|
||||||
|
el.appendChild( fakeElement );
|
||||||
|
|
||||||
el.setTagName( "a" );
|
el.setTagName( "a" );
|
||||||
el.setAttribute( "href", QString( "bword:" ) + el.text() );
|
el.setAttribute( "href", QString( "bword:" ) + el.text() );
|
||||||
el.setAttribute( "class", "xdxf_kref" );
|
el.setAttribute( "class", "xdxf_kref" );
|
||||||
|
@ -310,6 +329,9 @@ string convert( string const & in, DICT_TYPE type, map < string, string > const
|
||||||
{
|
{
|
||||||
QDomElement el = nodes.at( 0 ).toElement();
|
QDomElement el = nodes.at( 0 ).toElement();
|
||||||
|
|
||||||
|
if( el.text().isEmpty() && el.childNodes().isEmpty() )
|
||||||
|
el.appendChild( fakeElement );
|
||||||
|
|
||||||
QString ref = el.attribute( "href" );
|
QString ref = el.attribute( "href" );
|
||||||
if( ref.isEmpty() )
|
if( ref.isEmpty() )
|
||||||
ref = el.text();
|
ref = el.text();
|
||||||
|
@ -328,6 +350,9 @@ string convert( string const & in, DICT_TYPE type, map < string, string > const
|
||||||
{
|
{
|
||||||
QDomElement el = nodes.at( 0 ).toElement();
|
QDomElement el = nodes.at( 0 ).toElement();
|
||||||
|
|
||||||
|
if( el.text().isEmpty() && el.childNodes().isEmpty() )
|
||||||
|
el.appendChild( fakeElement );
|
||||||
|
|
||||||
el.setTagName( "span" );
|
el.setTagName( "span" );
|
||||||
el.setAttribute( "class", "xdxf_abbr" );
|
el.setAttribute( "class", "xdxf_abbr" );
|
||||||
if( type == XDXF && pAbrv != NULL )
|
if( type == XDXF && pAbrv != NULL )
|
||||||
|
@ -379,6 +404,9 @@ string convert( string const & in, DICT_TYPE type, map < string, string > const
|
||||||
{
|
{
|
||||||
QDomElement el = nodes.at( 0 ).toElement();
|
QDomElement el = nodes.at( 0 ).toElement();
|
||||||
|
|
||||||
|
if( el.text().isEmpty() && el.childNodes().isEmpty() )
|
||||||
|
el.appendChild( fakeElement );
|
||||||
|
|
||||||
el.setTagName( "span" );
|
el.setTagName( "span" );
|
||||||
el.setAttribute( "class", "xdxf_dtrn" );
|
el.setAttribute( "class", "xdxf_dtrn" );
|
||||||
}
|
}
|
||||||
|
@ -389,6 +417,9 @@ string convert( string const & in, DICT_TYPE type, map < string, string > const
|
||||||
{
|
{
|
||||||
QDomElement el = nodes.at( 0 ).toElement();
|
QDomElement el = nodes.at( 0 ).toElement();
|
||||||
|
|
||||||
|
if( el.text().isEmpty() && el.childNodes().isEmpty() )
|
||||||
|
el.appendChild( fakeElement );
|
||||||
|
|
||||||
el.setTagName( "span" );
|
el.setTagName( "span" );
|
||||||
|
|
||||||
if ( el.hasAttribute( "c" ) )
|
if ( el.hasAttribute( "c" ) )
|
||||||
|
@ -406,6 +437,9 @@ string convert( string const & in, DICT_TYPE type, map < string, string > const
|
||||||
{
|
{
|
||||||
QDomElement el = nodes.at( 0 ).toElement();
|
QDomElement el = nodes.at( 0 ).toElement();
|
||||||
|
|
||||||
|
if( el.text().isEmpty() && el.childNodes().isEmpty() )
|
||||||
|
el.appendChild( fakeElement );
|
||||||
|
|
||||||
el.setTagName( "span" );
|
el.setTagName( "span" );
|
||||||
if( isLogicalFormat )
|
if( isLogicalFormat )
|
||||||
el.setAttribute( "class", "xdxf_co" );
|
el.setAttribute( "class", "xdxf_co" );
|
||||||
|
@ -419,6 +453,9 @@ string convert( string const & in, DICT_TYPE type, map < string, string > const
|
||||||
{
|
{
|
||||||
QDomElement el = nodes.at( 0 ).toElement();
|
QDomElement el = nodes.at( 0 ).toElement();
|
||||||
|
|
||||||
|
if( el.text().isEmpty() && el.childNodes().isEmpty() )
|
||||||
|
el.appendChild( fakeElement );
|
||||||
|
|
||||||
el.setTagName( "span" );
|
el.setTagName( "span" );
|
||||||
if( isLogicalFormat )
|
if( isLogicalFormat )
|
||||||
el.setAttribute( "class", "xdxf_gr" );
|
el.setAttribute( "class", "xdxf_gr" );
|
||||||
|
@ -430,6 +467,9 @@ string convert( string const & in, DICT_TYPE type, map < string, string > const
|
||||||
{
|
{
|
||||||
QDomElement el = nodes.at( 0 ).toElement();
|
QDomElement el = nodes.at( 0 ).toElement();
|
||||||
|
|
||||||
|
if( el.text().isEmpty() && el.childNodes().isEmpty() )
|
||||||
|
el.appendChild( fakeElement );
|
||||||
|
|
||||||
el.setTagName( "span" );
|
el.setTagName( "span" );
|
||||||
if( isLogicalFormat )
|
if( isLogicalFormat )
|
||||||
el.setAttribute( "class", "xdxf_gr" );
|
el.setAttribute( "class", "xdxf_gr" );
|
||||||
|
@ -441,6 +481,9 @@ string convert( string const & in, DICT_TYPE type, map < string, string > const
|
||||||
{
|
{
|
||||||
QDomElement el = nodes.at( 0 ).toElement();
|
QDomElement el = nodes.at( 0 ).toElement();
|
||||||
|
|
||||||
|
if( el.text().isEmpty() && el.childNodes().isEmpty() )
|
||||||
|
el.appendChild( fakeElement );
|
||||||
|
|
||||||
el.setTagName( "span" );
|
el.setTagName( "span" );
|
||||||
if( isLogicalFormat )
|
if( isLogicalFormat )
|
||||||
el.setAttribute( "class", "xdxf_gr" );
|
el.setAttribute( "class", "xdxf_gr" );
|
||||||
|
@ -455,6 +498,9 @@ string convert( string const & in, DICT_TYPE type, map < string, string > const
|
||||||
{
|
{
|
||||||
QDomElement el = nodes.at( 0 ).toElement();
|
QDomElement el = nodes.at( 0 ).toElement();
|
||||||
|
|
||||||
|
if( el.text().isEmpty() && el.childNodes().isEmpty() )
|
||||||
|
el.appendChild( fakeElement );
|
||||||
|
|
||||||
el.setTagName( "span" );
|
el.setTagName( "span" );
|
||||||
if( isLogicalFormat )
|
if( isLogicalFormat )
|
||||||
el.setAttribute( "class", "xdxf_tr" );
|
el.setAttribute( "class", "xdxf_tr" );
|
||||||
|
@ -472,6 +518,9 @@ string convert( string const & in, DICT_TYPE type, map < string, string > const
|
||||||
{
|
{
|
||||||
QDomElement el = nodes.at( i ).toElement();
|
QDomElement el = nodes.at( i ).toElement();
|
||||||
|
|
||||||
|
if( el.text().isEmpty() && el.childNodes().isEmpty() )
|
||||||
|
el.appendChild( fakeElement );
|
||||||
|
|
||||||
if ( el.hasAttribute( "src" ) )
|
if ( el.hasAttribute( "src" ) )
|
||||||
{
|
{
|
||||||
fixLink( el, dictPtr->getId(), "src" );
|
fixLink( el, dictPtr->getId(), "src" );
|
||||||
|
@ -494,6 +543,9 @@ string convert( string const & in, DICT_TYPE type, map < string, string > const
|
||||||
{
|
{
|
||||||
QDomElement el = nodes.at( 0 ).toElement();
|
QDomElement el = nodes.at( 0 ).toElement();
|
||||||
|
|
||||||
|
if( el.text().isEmpty() && el.childNodes().isEmpty() )
|
||||||
|
el.appendChild( fakeElement );
|
||||||
|
|
||||||
// if( type == XDXF && dictPtr != NULL && !el.hasAttribute( "start" ) )
|
// if( type == XDXF && dictPtr != NULL && !el.hasAttribute( "start" ) )
|
||||||
if( dictPtr != NULL && !el.hasAttribute( "start" ) )
|
if( dictPtr != NULL && !el.hasAttribute( "start" ) )
|
||||||
{
|
{
|
||||||
|
@ -588,9 +640,9 @@ string convert( string const & in, DICT_TYPE type, map < string, string > const
|
||||||
el.setAttribute( "class", "xdxf_rref" );
|
el.setAttribute( "class", "xdxf_rref" );
|
||||||
}
|
}
|
||||||
|
|
||||||
// DPRINTF( "Result>>>>>>>>>>: %s\n\n\n", dd.toByteArray().data() );
|
// GD_DPRINTF( "Result>>>>>>>>>>: %s\n\n\n", dd.toByteArray( 0 ).data() );
|
||||||
|
|
||||||
return dd.toString().remove('\n').remove( QRegExp( "<(b|i)/>" ) ).toUtf8().data();
|
return dd.toString( 0 ).remove('\n').remove( QRegExp( "<(b|i)/>" ) ).toUtf8().data();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue