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