| <?xml version="1.0"?> |
| <!-- |
| win32/defgen.xsl |
| This stylesheet is used to transform doc/libxml2-api.xml into a pseudo-source, |
| which can then be preprocessed to get the .DEF file for the Microsoft's linker. |
| |
| Use any XSLT processor to produce a file called libxml2.def.src in the win32 |
| subdirectory, for example, run xsltproc from the win32 subdirectory: |
| |
| xsltproc -o libxml2.def.src defgen.xsl ../doc/libxml2-api.xml |
| |
| Once that finishes, rest assured, the Makefile will know what to do with the |
| generated file. |
| |
| April 2003, Igor Zlatkovic <igor@zlatkovic.com> |
| --> |
| <!DOCTYPE xsl:stylesheet [ <!ENTITY nl '
'> ]> |
| <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> |
| <xsl:strip-space elements="*"/> |
| <xsl:output method="text"/> |
| <xsl:template match="/"> |
| <xsl:text>#define LIBXML2_COMPILING_MSCCDEF&nl;</xsl:text> |
| <xsl:text>#include "../include/libxml/xmlversion.h"&nl;</xsl:text> |
| <xsl:text>LIBRARY libxml2&nl;</xsl:text> |
| <xsl:text>EXPORTS&nl;</xsl:text> |
| <xsl:for-each select="/api/symbols/*[self::variable or self::function]"> |
| <!-- Basic tests --> |
| <xsl:if test="@file = 'c14n'"> |
| <xsl:text>#ifdef LIBXML_C14N_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@file = 'catalog'"> |
| <xsl:text>#ifdef LIBXML_CATALOG_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@file = 'debugXML'"> |
| <xsl:text>#ifdef LIBXML_DEBUG_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@file = 'DOCBparser'"> |
| <xsl:text>#ifdef LIBXML_DOCB_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="(@file = 'HTMLparser') |
| or (@file = 'HTMLtree')"> |
| <xsl:text>#ifdef LIBXML_HTML_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@file = 'nanohttp'"> |
| <xsl:text>#ifdef LIBXML_HTTP_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@file = 'nanoftp'"> |
| <xsl:text>#ifdef LIBXML_FTP_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="(@file = 'relaxng') |
| or (@file = 'xmlschemas') |
| or (@file = 'xmlschemastypes')"> |
| <xsl:text>#ifdef LIBXML_SCHEMAS_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@file = 'xinclude'"> |
| <xsl:text>#ifdef LIBXML_XINCLUDE_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@file = 'xlink'"> |
| <xsl:text>#ifdef LIBXML_XLINK_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@file = 'xmlautomata'"> |
| <xsl:text>#ifdef LIBXML_AUTOMATA_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="(@file = 'xmlregexp') |
| or (@file = 'xmlunicode')"> |
| <xsl:text>#ifdef LIBXML_REGEXP_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="(@file = 'xpath') |
| or (@file = 'xpathInternals')"> |
| <xsl:text>#ifdef LIBXML_XPATH_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@file = 'xpointer'"> |
| <xsl:text>#ifdef LIBXML_XPTR_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <!-- Extended tests --> |
| <xsl:if test="(@name = 'htmlDefaultSAXHandlerInit') |
| or (@name = 'htmlInitAutoClose') |
| or (@name = 'htmlCreateFileParserCtxt') |
| or (@name = 'inithtmlDefaultSAXHandler') |
| or (@name = 'xmlIsXHTML') |
| or (@name = 'xmlIOHTTPOpenW') |
| or (@name = 'xmlRegisterHTTPPostCallbacks') |
| or (@name = 'xmlIOHTTPMatch') |
| or (@name = 'xmlIOHTTPOpen') |
| or (@name = 'xmlIOHTTPRead') |
| or (@name = 'xmlIOHTTPClose')"> |
| <xsl:text>#ifdef LIBXML_HTML_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="(@name = 'docbDefaultSAXHandlerInit') |
| or (@name = 'initdocbDefaultSAXHandler')"> |
| <xsl:text>#ifdef LIBXML_DOCB_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@name = 'xmlValidBuildContentModel'"> |
| <xsl:text>#ifdef LIBXML_REGEXP_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="(@name = 'xmlIOFTPMatch') |
| or (@name = 'xmlIOFTPOpen') |
| or (@name = 'xmlIOFTPRead') |
| or (@name = 'xmlIOFTPClose')"> |
| <xsl:text>#ifdef LIBXML_FTP_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="(@name = 'xmlTextReaderRelaxNGValidate') |
| or (@name = 'xmlTextReaderRelaxNGSetSchema')"> |
| <xsl:text>#ifdef LIBXML_SCHEMAS_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="(@name = 'xmlXPathDebugDumpObject') |
| or (@name = 'xmlXPathDebugDumpCompExpr')"> |
| <xsl:text>#ifdef LIBXML_DEBUG_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="(@name = 'xmlMallocLoc') |
| or (@name = 'xmlMallocAtomicLoc') |
| or (@name = 'xmlReallocLoc') |
| or (@name = 'xmlMemStrdupLoc')"> |
| <xsl:text>#ifdef DEBUG_MEMORY_LOCATION&nl;</xsl:text> |
| </xsl:if> |
| <!-- Symbol --> |
| <xsl:choose> |
| <xsl:when test="(@name = 'xmlMalloc') |
| or (@name = 'xmlMallocAtomic') |
| or (@name = 'xmlRealloc') |
| or (@name = 'xmlFree') |
| or (@name = 'xmlMemStrdup')"> |
| <xsl:text>#ifdef LIBXML_THREAD_ALLOC_ENABLED&nl;</xsl:text> |
| <xsl:text>__</xsl:text> |
| <xsl:value-of select="@name"/> |
| <xsl:text>&nl;</xsl:text> |
| <xsl:text>#else&nl;</xsl:text> |
| <xsl:value-of select="@name"/> |
| <xsl:text> DATA&nl;</xsl:text> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:when> |
| <xsl:when test="(@name = 'docbDefaultSAXHandler') |
| or (@name = 'htmlDefaultSAXHandler') |
| or (@name = 'oldXMLWDcompatibility') |
| or (@name = 'xmlBufferAllocScheme') |
| or (@name = 'xmlDefaultBufferSize') |
| or (@name = 'xmlDefaultSAXHandler') |
| or (@name = 'xmlDefaultSAXLocator') |
| or (@name = 'xmlDoValidityCheckingDefaultValue') |
| or (@name = 'xmlGenericError') |
| or (@name = 'xmlGenericErrorContext') |
| or (@name = 'xmlGetWarningsDefaultValue') |
| or (@name = 'xmlIndentTreeOutput') |
| or (@name = 'xmlTreeIndentString') |
| or (@name = 'xmlKeepBlanksDefaultValue') |
| or (@name = 'xmlLineNumbersDefaultValue') |
| or (@name = 'xmlLoadExtDtdDefaultValue') |
| or (@name = 'xmlParserDebugEntities') |
| or (@name = 'xmlParserVersion') |
| or (@name = 'xmlPedanticParserDefaultValue') |
| or (@name = 'xmlSaveNoEmptyTags') |
| or (@name = 'xmlSubstituteEntitiesDefaultValue') |
| or (@name = 'xmlRegisterNodeDefaultValue') |
| or (@name = 'xmlDeregisterNodeDefaultValue')"> |
| <xsl:text>#ifdef LIBXML_THREAD_ENABLED&nl;</xsl:text> |
| <xsl:if test="@name = 'docbDefaultSAXHandler'"> |
| <xsl:text>#ifdef LIBXML_DOCB_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@name = 'htmlDefaultSAXHandler'"> |
| <xsl:text>#ifdef LIBXML_HTML_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:text>__</xsl:text> |
| <xsl:value-of select="@name"/> |
| <xsl:text>&nl;</xsl:text> |
| <xsl:if test="@name = 'docbDefaultSAXHandler'"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@name = 'htmlDefaultSAXHandler'"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:text>#else&nl;</xsl:text> |
| <xsl:if test="@name = 'docbDefaultSAXHandler'"> |
| <xsl:text>#ifdef LIBXML_DOCB_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@name = 'htmlDefaultSAXHandler'"> |
| <xsl:text>#ifdef LIBXML_HTML_ENABLED&nl;</xsl:text> |
| </xsl:if> |
| <xsl:value-of select="@name"/> |
| <xsl:text> DATA&nl;</xsl:text> |
| <xsl:if test="@name = 'docbDefaultSAXHandler'"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@name = 'htmlDefaultSAXHandler'"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:when> |
| <xsl:otherwise> |
| <xsl:value-of select="@name"/> |
| <xsl:if test="self::variable"> |
| <xsl:text> DATA</xsl:text> |
| </xsl:if> |
| <xsl:text>&nl;</xsl:text> |
| </xsl:otherwise> |
| </xsl:choose> |
| <!-- Basic tests (close) --> |
| <xsl:if test="@file = 'c14n'"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@file = 'catalog'"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@file = 'debugXML'"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@file = 'DOCBparser'"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="(@file = 'HTMLparser') |
| or (@file = 'HTMLtree')"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@file = 'nanohttp'"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@file = 'nanoftp'"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="(@file = 'relaxng') |
| or (@file = 'xmlschemas') |
| or (@file = 'xmlschemastypes')"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@file = 'xinclude'"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@file = 'xlink'"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@file = 'xmlautomata'"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="(@file = 'xmlregexp') |
| or (@file = 'xmlunicode')"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="(@file = 'xpath') |
| or (@file = 'xpathInternals')"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@file = 'xpointer'"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <!-- Extended tests (close) --> |
| <xsl:if test="(@name = 'htmlDefaultSAXHandlerInit') |
| or (@name = 'htmlInitAutoClose') |
| or (@name = 'htmlCreateFileParserCtxt') |
| or (@name = 'inithtmlDefaultSAXHandler') |
| or (@name = 'xmlIsXHTML') |
| or (@name = 'xmlIOHTTPOpenW') |
| or (@name = 'xmlRegisterHTTPPostCallbacks') |
| or (@name = 'xmlIOHTTPMatch') |
| or (@name = 'xmlIOHTTPOpen') |
| or (@name = 'xmlIOHTTPRead') |
| or (@name = 'xmlIOHTTPClose')"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="(@name = 'docbDefaultSAXHandlerInit') |
| or (@name = 'initdocbDefaultSAXHandler')"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="@name = 'xmlValidBuildContentModel'"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="(@name = 'xmlIOFTPMatch') |
| or (@name = 'xmlIOFTPOpen') |
| or (@name = 'xmlIOFTPRead') |
| or (@name = 'xmlIOFTPClose')"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="(@name = 'xmlTextReaderRelaxNGValidate') |
| or (@name = 'xmlTextReaderRelaxNGSetSchema')"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="(@name = 'xmlXPathDebugDumpObject') |
| or (@name = 'xmlXPathDebugDumpCompExpr')"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| <xsl:if test="(@name = 'xmlMallocLoc') |
| or (@name = 'xmlMallocAtomicLoc') |
| or (@name = 'xmlReallocLoc') |
| or (@name = 'xmlMemStrdupLoc')"> |
| <xsl:text>#endif&nl;</xsl:text> |
| </xsl:if> |
| </xsl:for-each> |
| </xsl:template> |
| </xsl:stylesheet> |
| |