|  | <?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> | 
|  |  |