You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-users@xalan.apache.org by Paul Kinnucan <pa...@mathworks.com> on 2020/08/14 04:29:44 UTC

How to compile a stylesheet whose source is a Xerces-c DOMDocument

Hi,

Is it possible to compile a stylesheet whose source is a Xerces DOMDocument?

In the following example, invoking compileStylesheet causes a segv:

    Transformer::Transformer(DOMDocument *pSSDoc) {
        XMLPlatformUtils::Initialize();

        std::unique_ptr<XercesParserLiaison> parserLiaisonPtr(new XercesParserLiaison());
        std::unique_ptr<XercesDOMSupport> xercesDOMSupportPtr(new XercesDOMSupport(*parserLiaisonPtr.get()));

        XalanDocument *pXalanDoc = parserLiaisonPtr->createDocument(pSSDoc,true,true,true);

        xalanc::XalanNode *pRoot = pXalanDoc->getDocumentElement();
        int res = _pXalanTransformer->compileStylesheet(pRoot, _pSS);

    }

Paul


Re: How to compile a stylesheet whose source is a Xerces-c DOMDocument

Posted by Roger Leigh <rl...@codelibre.net>.
Hi Paul,


I don't have a direct answer the the question, but I can't see why it 
shouldn't work in principle.  Could you build xerces, xalan and your 
application with debug symbols and get a stacktrace so we can see where 
it went wrong?  Maybe it's something simple we can get fixed.


Thanks,

Roger


On 14/08/2020 05:29, Paul Kinnucan wrote:

> Hi,
>
> Is it possible to compile a stylesheet whose source is a Xerces 
> DOMDocument?
>
> In the following example, invoking compileStylesheet causes a segv:
>
> Transformer::Transformer(DOMDocument*pSSDoc) {
>
> XMLPlatformUtils::Initialize();
>
> std::unique_ptr<XercesParserLiaison> 
> parserLiaisonPtr(newXercesParserLiaison());
>
> std::unique_ptr<XercesDOMSupport> 
> xercesDOMSupportPtr(newXercesDOMSupport(*parserLiaisonPtr.get()));
>
> XalanDocument*pXalanDoc = 
> parserLiaisonPtr->createDocument(pSSDoc,true,true,true);
>
> xalanc::XalanNode*pRoot = pXalanDoc->getDocumentElement();
>
> intres = _pXalanTransformer->compileStylesheet(pRoot, _pSS);
>
> }
>
> Paul
>

RE: How to compile a stylesheet whose source is a Xerces-c DOMDocument

Posted by Paul Kinnucan <pa...@mathworks.com>.
This was my fault. I needed to initialize XalanTransformer:

    Transformer::Transformer(DOMDocument *pSSDoc) {
        XMLPlatformUtils::Initialize();

        std::unique_ptr<XercesParserLiaison> parserLiaisonPtr(new XercesParserLiaison());
        std::unique_ptr<XercesDOMSupport> xercesDOMSupportPtr(new XercesDOMSupport(*parserLiaisonPtr.get()));

        XalanDocument *pXalanDoc = parserLiaisonPtr->createDocument(pSSDoc,true,true,true);

        xalanc::XalanNode *pRoot = pXalanDoc->getDocumentElement();

        xalanc::XalanTransformer::initialize();
        _pXalanTransformer = new XalanTransformer();
        int res = _pXalanTransformer->compileStylesheet(pRoot, _pSS);

With this change, I am able to use a xerces-c::DOMDocument as a stylesheet.

From: Paul Kinnucan
Sent: Friday, August 14, 2020 12:30 AM
To: xalan-c-users@apache.org
Subject: How to compile a stylesheet whose source is a Xerces-c DOMDocument

Hi,

Is it possible to compile a stylesheet whose source is a Xerces DOMDocument?

In the following example, invoking compileStylesheet causes a segv:

    Transformer::Transformer(DOMDocument *pSSDoc) {
        XMLPlatformUtils::Initialize();

        std::unique_ptr<XercesParserLiaison> parserLiaisonPtr(new XercesParserLiaison());
        std::unique_ptr<XercesDOMSupport> xercesDOMSupportPtr(new XercesDOMSupport(*parserLiaisonPtr.get()));

        XalanDocument *pXalanDoc = parserLiaisonPtr->createDocument(pSSDoc,true,true,true);

        xalanc::XalanNode *pRoot = pXalanDoc->getDocumentElement();
        int res = _pXalanTransformer->compileStylesheet(pRoot, _pSS);

    }

Paul