老文章档案 · 2004 年

微软公开 XML 核心解析服务器的源代码

天下资讯 · 综合新闻 · 2004-02-27 · 作者:兴之 人气: · 出处:赢政天下收集整理

微软 XML 核心解析服务器的一部分源代码。

属微软公开发表。

谁说微软不开源,呵呵

// ===========================================================================

// Implementation of server-side object that gathers XML data and

// processes it by combining with the appropriate XSL transform.

//

// Copyright (c) Microsoft Corporation. All rights reserved.

#pragma once

#include "PIParse.h"

// ===========================================================================

// CLASS: CXMLServerDocument

//

// Server-side object that accumulates XML, then transforms it via request-

// specific XSL.

class CResponseOrStream;

class ATL_NO_VTABLE CXMLServerDocument :

public CComObjectRootEx<CComSingleThreadModel>,

public CComCoClass<CXMLServerDocument, &CLSID_XMLServerDocument>,

public IDispatchImpl<IXMLServerDocument, &IID_IXMLServerDocument, &LIBID_X

SLISAPI2Lib>

{

public:

DECLARE_REGISTRY_RESOURCEID(IDR_XMLSERVERDOCUMENT)

DECLARE_PROTECT_FINAL_CONSTRUCT()

BEGIN_COM_MAP(CXMLServerDocument)

COM_INTERFACE_ENTRY(IXMLServerDocument)

COM_INTERFACE_ENTRY(IDispatch)

END_COM_MAP()

public:

CXMLServerDocument();

HRESULT SetErrorToLastCOMError(wchar_t *pwszURL);

// IXMLServerDocument

STDMETHOD(put_URL)(/*[in]*/ BSTR bstrURL);

STDMETHOD(put_UserAgent)(/*[in]*/ BSTR bstrUserAgent);

STDMETHOD(put_ServerConfigFile)(/*[in]*/ BSTR bstrServerConfigFile);

STDMETHOD(put_SingleXSLFile)(/*[in]*/ BSTR bstrSingleXSLFile);

STDMETHOD(put_ServerSupportFunctions)(

/*[in]*/ IXMLServerDocumentSupportFunctions *supportFunctions);

STDMETHOD(Transform)(IDispatch * pdispResponse);

STDMETHOD(TransformEx)(IUnknown *pIncomingXMLStream,

IUnknown *punkOutput);

STDMETHOD(HandleError)(IUnknown * punkOutput);

STDMETHOD(Load)(BSTR bstrFileName);

STDMETHOD(Write)(BSTR bstrText);

STDMETHOD(End)();

STDMETHOD(Flush)();

STDMETHOD(Clear)();

STDMETHOD(WriteLine)(BSTR bstrLine);

// Errors may be set on this object by other classes. (Note that

// these incoming BSTRs can just be wchar_t*'s.)

STDMETHOD(SetError)(BSTR errorString,

BSTR errorURL,

BSTR errorHTTPCode);

STDMETHOD(ClearError());

private:

HRESULT EnsureXMLDocumentObject(bool bAcquireStream);

HRESULT EnsureAspServerObject();

HRESULT WriteToXML(BSTR bstrLine, bool bAddCR);

HRESULT WriteIdentityXML(CResponseOrStream & responseOrStream);

HRESULT LoadMasterConfig(CComBSTR & bstrSpecialPIAttrib);

HRESULT GetServerConfig(IXMLDOMDocument **pServerConfig);

HRESULT GetDoctype();

HRESULT InitializeBrowserCapAndAttribs();

HRESULT ExtractStylesheets(IXMLDOMDocument *pServerConfig,

CComBSTR arrStylesheets[],

short *pNumStylesheets);

HRESULT PullStylesheetsFromDeviceInfo(IXMLDOMNode *pServerConfig,

CComBSTR arrStylesheets[],

short *pNumStylesheets);

HRESULT ApplyStylesheets(CResponseOrStream & responseOrStream,

CComBSTR arrStylesheets[],

short numStylesheets);

HRESULT LoadXMLFromRelativeLoc(BSTR localName,

BSTR pathName,

bool isConfigXML,

IXMLDOMDocument **ppXMLDoc,

IXSLTemplate **ppXSLTemplate);

HRESULT VerifyEncodingAndCharset(UINT *puiCP);

HRESULT GrabFromBrowserCap(wchar_t *pwszAttrib,

wchar_t *pwszDefault,

CComBSTR & destination);

private:

CComBSTR m_bstrURL;

CComBSTR m_bstrURLServerConfig;

CComBSTR m_bstrURLDirectory;

CComBSTR m_bstrConfigDirectory;

CComBSTR m_bstrContentType;

CComBSTR m_bstrDoctypeName;

CComBSTR m_bstrEncoding;

CComBSTR m_bstrCharset;

CComBSTR m_bstrErrorDescrip;

CComBSTR m_bstrErrorURL;

CComBSTR m_bstrErrorHTTPCode;

CComBSTR m_bstrUserAgent;

CComBSTR m_bstrSingleXSLStylesheetFile;

CComPtr<IXMLDOMDocument> m_pcomXMLDocument;

CComPtr<IStream> m_pcomXMLDocumentStream;

CComPtr<IXMLDOMDocument> m_pcomTransformConfig;

CComPtr<IXMLDOMDocument> m_pcomSingleXSLFile;

CComPtr<asp::IServer> m_pcomASPServer;

CComPtr<IDispatch> m_pcomBrowserTypeDisp;

CComPtr<IXMLServerDocumentSupportFunctions> m_pcomSupportFunctions;

PIParseInfo m_piParseInfo;

bool m_bInErrorHandling;

bool m_bResponseEndCalled;

bool m_bServerConfigSetExplicitly;

bool m_bForbidDriveSpecification;

bool m_bBrowserCapsInitialized;

};

其他微软 XML 核心解析服务器源代码清单

StdAfx.h Main location for include files

XmlServerDoc.{h,cpp,rgs} Main logic for stylesheet selection and XSL processing.

PreProcess.{h,cpp} Convert PASP file into ASP file

ASPPreProcessor.{h,cpp,rgs} Request broker for preprocessing tasks, also determines whether preprocessing is necessary.

ProcessingStream.h Post-processing

Xmlcache.{h,cpp}, hashtable.{h,cpp} Implements simple in-memory cache for XML documents (and IXSLTemplates)

Utils.{h,cpp} Utilities for: XML, ASP, error handling, string operations, debugging

Charset.{h,cpp} Utilities for character set and encoding issues.

PIParse.{h,cpp} Simple class for parsing XML processing instructions.

IncludeFile*.{h,cpp} Support for the PASP include file functionality.

相关资讯:

·微软通用序列号(转载) (733字)

·微软下一代Hotmail预览 Flash版

·微软将停止提供Windows NT安全外技术支持

·据消息称微软将于几周内发布Windows XP SP2

·离开微软实在情非得已 唐骏离职投奔国产linux

·唐骏首次回应传闻 否认将离开微软搞Linux

·微软下大力改进Windows系统的搜索能力

·微软NetMeeting功成身退 LM取而代之

·微软产品将采用反垃圾邮件技术

·巴尔默:面对Linux 微软第一次存在价格劣势

相关软件:

→ 特别推荐

→ 热点TOP10

我为人人《《==》》人人为我

关于我们 |

帮助(?)|

广告服务 |

版权声明 |

商业合作 |

发展历程 |

加盟我们 |

联系我们

Copyright (C) 1998-2004 winzheng.com All Rights Reserved.

特别感谢 蓝芒科技 提供下载站及论坛服务器

2003-2004 年,宽带刚刚普及,下载站的文章区是许多人学电脑的第一课堂。
🕰 → 🤖 从那时到现在

当年一篇教程能让一台电脑焕然一新;今天的效率工具换成了 AI。 想知道当下最可靠的 AI 模型怎么选?看 赢政指数——我们用了 28 年的选软件严谨,现在用来评测大模型。

档案性质声明:本页为赢政天下(1998-2011)老文章的历史档案复原, 内容反映当年发表时的原貌——包括当年的技术表述、软件版本与观点,部分方法在今天已不适用或不合规,仅作互联网历史记录与研究用途, 不提供任何形式的下载。原始数据经由公共网络存档(Internet Archive)复原。发现问题请联系我们
← 返回老文章档案 · 软件史档案馆 · 赢政天下站史