nsresult
nsExpatDriver::HandleComment(const PRUnichar *aValue)
{
  NS_ASSERTION(mSink, "content sink not found!");

  if (mInExternalDTD) {
    // Ignore comments from external DTDs
    return NS_OK;
  }

  if (mInInternalSubset) {
    mInternalSubset.AppendLiteral("<!--");
    mInternalSubset.Append(aValue);
    mInternalSubset.AppendLiteral("-->");
  }
  else if (mSink) {
    nsresult rv = mSink->HandleComment(aValue);
    MaybeStopParser(rv);
  }

  return NS_OK;
}
Beispiel #2
0
// convert a String to QSgml
void QSgml::String2Sgml(const QString &SgmlString)
{
    QSgmlTag *LastTag;
    QString sDummy;
    int iPos = 0;
    int iStart = 0,iEnd = 0;
    QList<QString>::iterator i;

    sSgmlString = SgmlString;

    DocTag->Children.clear();

    LastTag = DocTag;

    do
    {
        // Handle exception-tags
        for( i = tagExeption.begin(); i!=tagExeption.end(); ++i )
        {
            QString sName = *i;
            if( LastTag->Name.toLower()==sName ) // its an exception-tag
            {
                iPos = SgmlString.toLower().indexOf("</" + sName,iPos);
                iPos--;
            }
        }

        FindStart(SgmlString,iPos);

        // no new start
        if( iPos==-1 )
        {
            LastTag->Children.append( EndTag );
            break;
        }

        // there was CDATA
        else if( iPos > iEnd + 1 )
        {
            HandleCdata(SgmlString,LastTag,iStart,iEnd,iPos);
        }

        // this is a comment
        if( (SgmlString.at(iPos + 1)=='!')&&(SgmlString.at(iPos + 2)=='-')&&(SgmlString.at(iPos + 3)=='-') )
        {
            HandleComment(SgmlString,LastTag,iStart,iEnd,iPos);
        }

        // this is a PI
//      else if( SgmlString.at(iPos+1)=='?' )
//      {
//         HandleDoctype(SgmlString,LastTag,iStart,iEnd,iPos);
//      }
        // this is a Doctype
        else if( SgmlString.at(iPos + 1)=='!' )
        {
            HandleDoctype(SgmlString,LastTag,iStart,iEnd,iPos);
        }

        // this is an Endtag
        else if( SgmlString.at(iPos + 1)=='/' )
        {
            HandleEndTag(SgmlString,LastTag,iStart,iEnd,iPos);
        }

        // this is an Starttag of Standalone
        else
        {
            HandleStartTag(SgmlString,LastTag,iStart,iEnd,iPos);
        }
    }
    while( iPos!=-1 );
}