init repo
This commit is contained in:
199
ActiveX/Common/DocxFormat/Source/XML/StringWriter.h
Normal file
199
ActiveX/Common/DocxFormat/Source/XML/StringWriter.h
Normal file
@@ -0,0 +1,199 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
#include "..\stdafx.h"
|
||||
#include "File.h"
|
||||
|
||||
const double c_ag_Inch_to_MM = 25.4;
|
||||
const double c_ag_1pxWidth = 25.4 / 96;
|
||||
|
||||
namespace NSHtmlRenderer
|
||||
{
|
||||
enum ImageType
|
||||
{
|
||||
itJPG = 0,
|
||||
itPNG = 1
|
||||
};
|
||||
class CImageInfo
|
||||
{
|
||||
public:
|
||||
ImageType m_eType;
|
||||
LONG m_lID;
|
||||
|
||||
CImageInfo()
|
||||
{
|
||||
m_eType = itJPG;
|
||||
m_lID = -1;
|
||||
}
|
||||
CImageInfo(const CImageInfo& oSrc)
|
||||
{
|
||||
*this = oSrc;
|
||||
}
|
||||
CImageInfo& operator=(const CImageInfo& oSrc)
|
||||
{
|
||||
m_eType = oSrc.m_eType;
|
||||
m_lID = oSrc.m_lID;
|
||||
|
||||
return *this;
|
||||
}
|
||||
};
|
||||
|
||||
inline static double FABS(double dVal)
|
||||
{
|
||||
return (dVal >= 0) ? dVal : -dVal;
|
||||
}
|
||||
inline static int round(double dVal)
|
||||
{
|
||||
return (int)(dVal + 0.5);
|
||||
}
|
||||
|
||||
class CStringWriter
|
||||
{
|
||||
private:
|
||||
wchar_t* m_pData;
|
||||
size_t m_lSize;
|
||||
|
||||
wchar_t* m_pDataCur;
|
||||
size_t m_lSizeCur;
|
||||
|
||||
public:
|
||||
CStringWriter()
|
||||
{
|
||||
m_pData = NULL;
|
||||
m_lSize = 0;
|
||||
|
||||
m_pDataCur = m_pData;
|
||||
m_lSizeCur = m_lSize;
|
||||
}
|
||||
~CStringWriter()
|
||||
{
|
||||
RELEASEMEM(m_pData);
|
||||
}
|
||||
|
||||
__forceinline void AddSize(size_t nSize)
|
||||
{
|
||||
if (NULL == m_pData)
|
||||
{
|
||||
m_lSize = max(nSize, 1000);
|
||||
m_pData = (wchar_t*)malloc(m_lSize * sizeof(wchar_t));
|
||||
|
||||
m_lSizeCur = 0;
|
||||
m_pDataCur = m_pData;
|
||||
return;
|
||||
}
|
||||
|
||||
if ((m_lSizeCur + nSize) > m_lSize)
|
||||
{
|
||||
while ((m_lSizeCur + nSize) > m_lSize)
|
||||
{
|
||||
m_lSize *= 2;
|
||||
}
|
||||
|
||||
wchar_t* pRealloc = (wchar_t*)realloc(m_pData, m_lSize * sizeof(wchar_t));
|
||||
if (NULL != pRealloc)
|
||||
{
|
||||
|
||||
m_pData = pRealloc;
|
||||
m_pDataCur = m_pData + m_lSizeCur;
|
||||
}
|
||||
else
|
||||
{
|
||||
wchar_t* pMalloc = (wchar_t*)malloc(m_lSize * sizeof(wchar_t));
|
||||
memcpy(pMalloc, m_pData, m_lSizeCur * sizeof(wchar_t));
|
||||
|
||||
free(m_pData);
|
||||
m_pData = pMalloc;
|
||||
m_pDataCur = m_pData + m_lSizeCur;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
inline void WriteString(wchar_t* pString, size_t& nLen)
|
||||
{
|
||||
AddSize(nLen);
|
||||
|
||||
memcpy(m_pDataCur, pString, nLen << 1);
|
||||
m_pDataCur += nLen;
|
||||
m_lSizeCur += nLen;
|
||||
}
|
||||
inline void WriteString(_bstr_t& bsString)
|
||||
{
|
||||
size_t nLen = bsString.length();
|
||||
WriteString(bsString.GetBSTR(), nLen);
|
||||
}
|
||||
inline void WriteString(CString& sString)
|
||||
{
|
||||
size_t nLen = (size_t)sString.GetLength();
|
||||
|
||||
#ifdef _UNICODE
|
||||
WriteString(sString.GetBuffer(), nLen);
|
||||
#else
|
||||
CStringW str = (CStringW)sString;
|
||||
WriteString(str.GetBuffer(), nLen);
|
||||
#endif
|
||||
}
|
||||
|
||||
inline size_t GetCurSize()
|
||||
{
|
||||
return m_lSizeCur;
|
||||
}
|
||||
|
||||
inline void Write(CStringWriter& oWriter)
|
||||
{
|
||||
WriteString(oWriter.m_pData, oWriter.m_lSizeCur);
|
||||
}
|
||||
|
||||
inline void Clear()
|
||||
{
|
||||
RELEASEMEM(m_pData);
|
||||
|
||||
m_pData = NULL;
|
||||
m_lSize = 0;
|
||||
|
||||
m_pDataCur = m_pData;
|
||||
m_lSizeCur = 0;
|
||||
}
|
||||
inline void ClearNoAttack()
|
||||
{
|
||||
m_pDataCur = m_pData;
|
||||
m_lSizeCur = 0;
|
||||
}
|
||||
|
||||
CString GetData()
|
||||
{
|
||||
CString str(m_pData, (int)m_lSizeCur);
|
||||
return str;
|
||||
}
|
||||
};
|
||||
}
|
||||
475
ActiveX/Common/DocxFormat/Source/XML/Utils.h
Normal file
475
ActiveX/Common/DocxFormat/Source/XML/Utils.h
Normal file
@@ -0,0 +1,475 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "../Base/Base.h"
|
||||
#include "../Base/SmartPtr.h"
|
||||
|
||||
#include <atlcoll.h>
|
||||
#include <atlenc.h>
|
||||
|
||||
#ifndef _USE_NULLABLE_PROPERTY_
|
||||
using namespace NSCommon;
|
||||
#endif
|
||||
namespace XmlUtils
|
||||
{
|
||||
static CString strInvalidValue = _T("x(-Jdl%^8sFGs@gkp14jJU(90dyjhjnb*EcfFf%#2124sf98hc");
|
||||
static _bstr_t g_cpszXML_TextExt = L"./text()";
|
||||
|
||||
|
||||
AVSINLINE static int GetDigit (TCHAR c)
|
||||
{
|
||||
if (c >= '0' && c <= '9')
|
||||
return (int)(c - '0');
|
||||
if (c >= 'a' && c <= 'f')
|
||||
return 10 + (int)(c - 'a');
|
||||
if (c >= 'A' && c <= 'F')
|
||||
return 10 + (int)(c - 'A');
|
||||
|
||||
return 0;
|
||||
}
|
||||
AVSINLINE static bool IsDigit (TCHAR c)
|
||||
{
|
||||
if (c >= '0' && c <= '9')
|
||||
return true;
|
||||
return false;
|
||||
}
|
||||
AVSINLINE static __int64 GetHex (const CString& string)
|
||||
{
|
||||
__int64 nResult = 0;
|
||||
int nLen = string.GetLength();
|
||||
for ( int nIndex = 0; nIndex < nLen; ++nIndex )
|
||||
{
|
||||
nResult += GetDigit( string[nIndex] ) << ( 4 * ( nLen - 1 - nIndex ) );
|
||||
}
|
||||
|
||||
return nResult;
|
||||
}
|
||||
AVSINLINE static int GetColor (const CString& string)
|
||||
{
|
||||
|
||||
int blue = 0;
|
||||
int green = 0;
|
||||
int red = 0;
|
||||
|
||||
CString color = string; color = color.Trim();
|
||||
|
||||
if (color.Find(_T("0x"))!=-1)
|
||||
color.Delete(0,2);
|
||||
if (color.Find(_T("#"))!=-1)
|
||||
color.Delete(0,1);
|
||||
|
||||
while (color.GetLength() < 6)
|
||||
color = _T("0") + color;
|
||||
|
||||
red = 16*GetDigit(color[0]) + GetDigit(color[1]);
|
||||
green = 16*GetDigit(color[2]) + GetDigit(color[3]);
|
||||
blue = 16*GetDigit(color[4]) + GetDigit(color[5]);
|
||||
|
||||
return RGB(red, green, blue);
|
||||
}
|
||||
AVSINLINE static BOOL GetBoolean (const CString& string)
|
||||
{
|
||||
CString s = string; s.MakeLower();
|
||||
|
||||
return (s == _T("true"));
|
||||
}
|
||||
AVSINLINE static bool GetBoolean2(const CString& string)
|
||||
{
|
||||
CString sTemp = string; sTemp.MakeLower();
|
||||
|
||||
return ( _T("true") == sTemp || _T("1") == sTemp || _T("t") == sTemp || _T("on") == sTemp );
|
||||
}
|
||||
AVSINLINE static int GetInteger (const CString& string)
|
||||
{
|
||||
return _ttoi(string);
|
||||
}
|
||||
AVSINLINE static double GetDouble (const CString& string)
|
||||
{
|
||||
double d = 0;
|
||||
_stscanf(string, _T("%lf"), &d);
|
||||
return d;
|
||||
}
|
||||
AVSINLINE static float GetFloat (const CString& string)
|
||||
{
|
||||
float f = 0;
|
||||
_stscanf(string, _T("%f"), &f);
|
||||
return f;
|
||||
}
|
||||
AVSINLINE static int GetInteger (BSTR string)
|
||||
{
|
||||
return _wtoi(string);
|
||||
}
|
||||
AVSINLINE static size_t GetUInteger(BSTR string)
|
||||
{
|
||||
return (size_t)_wtoi(string);
|
||||
}
|
||||
AVSINLINE static double GetDouble (BSTR string)
|
||||
{
|
||||
double d = 0;
|
||||
swscanf(string, _T("%lf"), &d);
|
||||
return d;
|
||||
}
|
||||
AVSINLINE static float GetFloat (BSTR string)
|
||||
{
|
||||
float f = 0;
|
||||
swscanf(string, _T("%f"), &f);
|
||||
return f;
|
||||
}
|
||||
AVSINLINE static void GetDouble (BSTR string, double* p)
|
||||
{
|
||||
*p = 0;
|
||||
swscanf(string, _T("%lf"), *p);
|
||||
}
|
||||
AVSINLINE static void GetFloat (BSTR string, float* p)
|
||||
{
|
||||
*p = 0;
|
||||
swscanf(string, _T("%f"), *p);
|
||||
}
|
||||
AVSINLINE static void GetInteger (BSTR string, int* p)
|
||||
{
|
||||
*p = 0;
|
||||
swscanf(string, _T("%d"), *p);
|
||||
}
|
||||
|
||||
AVSINLINE CString BoolToString (const bool & value)
|
||||
{
|
||||
CString sResult = ( value ? _T("true") : _T("false") );
|
||||
return sResult;
|
||||
}
|
||||
AVSINLINE CString IntToString (const int & value)
|
||||
{
|
||||
CString str = _T("");
|
||||
str.Format(_T("%d"), value);
|
||||
return str;
|
||||
}
|
||||
AVSINLINE CString UIntToString (const size_t & value)
|
||||
{
|
||||
CString str = _T("");
|
||||
str.Format(_T("%u"), value);
|
||||
return str;
|
||||
}
|
||||
AVSINLINE CString FloatToString (const float & value)
|
||||
{
|
||||
CString str = _T("");
|
||||
str.Format(_T("%f"), value);
|
||||
return str;
|
||||
}
|
||||
AVSINLINE CString DoubleToString(const double& value)
|
||||
{
|
||||
CString str = _T("");
|
||||
str.Format(_T("%lf"), value);
|
||||
return str;
|
||||
}
|
||||
AVSINLINE static CString GetLower(const CString& string)
|
||||
{
|
||||
|
||||
|
||||
CString sResult;
|
||||
|
||||
for( int nIndex = 0; nIndex < string.GetLength(); nIndex++)
|
||||
sResult += wchar_t( towlower(string[nIndex]) );
|
||||
|
||||
return sResult;
|
||||
}
|
||||
AVSINLINE static CString GetUpper(const CString& string)
|
||||
{
|
||||
CString sResult;
|
||||
|
||||
for( int nIndex = 0; nIndex < string.GetLength(); nIndex++)
|
||||
sResult += wchar_t( towupper(string[nIndex]) );
|
||||
|
||||
return sResult;
|
||||
}
|
||||
AVSINLINE static bool IsUnicodeSymbol( WCHAR symbol )
|
||||
{
|
||||
bool result = false;
|
||||
|
||||
if ( ( 0x0009 == symbol ) || ( 0x000A == symbol ) || ( 0x000D == symbol ) ||
|
||||
( ( 0x0020 <= symbol ) && ( 0xD7FF >= symbol ) ) || ( ( 0xE000 <= symbol ) && ( symbol <= 0xFFFD ) ) ||
|
||||
( ( 0x10000 <= symbol ) && symbol ) )
|
||||
{
|
||||
result = true;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
AVSINLINE static CString EncodeXmlString(const CString& string)
|
||||
{
|
||||
CString sResult = string;
|
||||
for (unsigned int i = 0, length = sResult.GetLength(); i < length; ++i )
|
||||
{
|
||||
if ( false == IsUnicodeSymbol( sResult.GetAt(i) ) )
|
||||
{
|
||||
sResult.SetAt(i, ' ');
|
||||
}
|
||||
}
|
||||
sResult.Replace(_T("&"), _T("&"));
|
||||
sResult.Replace(_T("'"), _T("'"));
|
||||
sResult.Replace(_T("<"), _T("<"));
|
||||
sResult.Replace(_T(">"), _T(">"));
|
||||
sResult.Replace(_T("\""), _T("""));
|
||||
return sResult;
|
||||
}
|
||||
class CStringWriter
|
||||
{
|
||||
private:
|
||||
wchar_t* m_pData;
|
||||
size_t m_lSize;
|
||||
|
||||
wchar_t* m_pDataCur;
|
||||
size_t m_lSizeCur;
|
||||
|
||||
public:
|
||||
CStringWriter()
|
||||
{
|
||||
m_pData = NULL;
|
||||
m_lSize = 0;
|
||||
|
||||
m_pDataCur = m_pData;
|
||||
m_lSizeCur = m_lSize;
|
||||
}
|
||||
~CStringWriter()
|
||||
{
|
||||
RELEASEMEM(m_pData);
|
||||
}
|
||||
|
||||
__forceinline void AddSize(size_t nSize)
|
||||
{
|
||||
if (NULL == m_pData)
|
||||
{
|
||||
m_lSize = max(nSize, 1000);
|
||||
m_pData = (wchar_t*)malloc(m_lSize * sizeof(wchar_t));
|
||||
|
||||
m_lSizeCur = 0;
|
||||
m_pDataCur = m_pData;
|
||||
return;
|
||||
}
|
||||
|
||||
if ((m_lSizeCur + nSize) > m_lSize)
|
||||
{
|
||||
while ((m_lSizeCur + nSize) > m_lSize)
|
||||
{
|
||||
m_lSize *= 2;
|
||||
}
|
||||
|
||||
wchar_t* pRealloc = (wchar_t*)realloc(m_pData, m_lSize * sizeof(wchar_t));
|
||||
if (NULL != pRealloc)
|
||||
{
|
||||
|
||||
m_pData = pRealloc;
|
||||
m_pDataCur = m_pData + m_lSizeCur;
|
||||
}
|
||||
else
|
||||
{
|
||||
wchar_t* pMalloc = (wchar_t*)malloc(m_lSize * sizeof(wchar_t));
|
||||
memcpy(pMalloc, m_pData, m_lSizeCur * sizeof(wchar_t));
|
||||
|
||||
free(m_pData);
|
||||
m_pData = pMalloc;
|
||||
m_pDataCur = m_pData + m_lSizeCur;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public:
|
||||
|
||||
__forceinline void WriteString(wchar_t* pString, size_t& nLen)
|
||||
{
|
||||
AddSize(nLen);
|
||||
|
||||
memcpy(m_pDataCur, pString, nLen << 1);
|
||||
m_pDataCur += nLen;
|
||||
m_lSizeCur += nLen;
|
||||
}
|
||||
__forceinline void WriteString(_bstr_t& bsString)
|
||||
{
|
||||
size_t nLen = bsString.length();
|
||||
WriteString(bsString.GetBSTR(), nLen);
|
||||
}
|
||||
__forceinline void WriteString(const CString& sString)
|
||||
{
|
||||
size_t nLen = (size_t)sString.GetLength();
|
||||
|
||||
#ifdef _UNICODE
|
||||
CString str = sString;
|
||||
WriteString(str.GetBuffer(), nLen);
|
||||
#else
|
||||
CStringW str = (CStringW)sString;
|
||||
WriteString(str.GetBuffer(), nLen);
|
||||
#endif
|
||||
}
|
||||
|
||||
__forceinline void AddCharSafe(const TCHAR& _c)
|
||||
{
|
||||
AddSize(1);
|
||||
*m_pDataCur++ = _c;
|
||||
++m_lSizeCur;
|
||||
}
|
||||
__forceinline void AddChar2Safe(const TCHAR _c1, const TCHAR& _c2)
|
||||
{
|
||||
AddSize(2);
|
||||
*m_pDataCur++ = _c1;
|
||||
*m_pDataCur++ = _c2;
|
||||
m_lSizeCur += 2;
|
||||
}
|
||||
|
||||
inline void WriteEncodeXmlString(const wchar_t* pString)
|
||||
{
|
||||
const wchar_t* pData = pString;
|
||||
while (*pData != 0)
|
||||
{
|
||||
BYTE _code = CheckCode(*pData);
|
||||
|
||||
switch (_code)
|
||||
{
|
||||
case 1:
|
||||
AddCharSafe(*pData);
|
||||
break;
|
||||
case 0:
|
||||
AddCharSafe((WCHAR)' ');
|
||||
break;
|
||||
case 2:
|
||||
AddSize(5);
|
||||
*m_pDataCur++ = (WCHAR)('&');
|
||||
*m_pDataCur++ = (WCHAR)('a');
|
||||
*m_pDataCur++ = (WCHAR)('m');
|
||||
*m_pDataCur++ = (WCHAR)('p');
|
||||
*m_pDataCur++ = (WCHAR)(';');
|
||||
m_lSizeCur += 5;
|
||||
break;
|
||||
case 3:
|
||||
AddSize(6);
|
||||
*m_pDataCur++ = (WCHAR)('&');
|
||||
*m_pDataCur++ = (WCHAR)('a');
|
||||
*m_pDataCur++ = (WCHAR)('p');
|
||||
*m_pDataCur++ = (WCHAR)('o');
|
||||
*m_pDataCur++ = (WCHAR)('s');
|
||||
*m_pDataCur++ = (WCHAR)(';');
|
||||
m_lSizeCur += 6;
|
||||
break;
|
||||
case 4:
|
||||
AddSize(4);
|
||||
*m_pDataCur++ = (WCHAR)('&');
|
||||
*m_pDataCur++ = (WCHAR)('l');
|
||||
*m_pDataCur++ = (WCHAR)('t');
|
||||
*m_pDataCur++ = (WCHAR)(';');
|
||||
m_lSizeCur += 4;
|
||||
break;
|
||||
case 5:
|
||||
AddSize(4);
|
||||
*m_pDataCur++ = (WCHAR)('&');
|
||||
*m_pDataCur++ = (WCHAR)('g');
|
||||
*m_pDataCur++ = (WCHAR)('t');
|
||||
*m_pDataCur++ = (WCHAR)(';');
|
||||
m_lSizeCur += 4;
|
||||
break;
|
||||
case 6:
|
||||
AddSize(6);
|
||||
*m_pDataCur++ = (WCHAR)('&');
|
||||
*m_pDataCur++ = (WCHAR)('q');
|
||||
*m_pDataCur++ = (WCHAR)('u');
|
||||
*m_pDataCur++ = (WCHAR)('o');
|
||||
*m_pDataCur++ = (WCHAR)('t');
|
||||
*m_pDataCur++ = (WCHAR)(';');
|
||||
m_lSizeCur += 6;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
++pData;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
__forceinline size_t GetCurSize()
|
||||
{
|
||||
return m_lSizeCur;
|
||||
}
|
||||
|
||||
__forceinline void Write(CStringWriter& oWriter)
|
||||
{
|
||||
WriteString(oWriter.m_pData, oWriter.m_lSizeCur);
|
||||
}
|
||||
|
||||
inline void Clear()
|
||||
{
|
||||
RELEASEMEM(m_pData);
|
||||
|
||||
m_pData = NULL;
|
||||
m_lSize = 0;
|
||||
|
||||
m_pDataCur = m_pData;
|
||||
m_lSizeCur = 0;
|
||||
}
|
||||
inline void ClearNoAttack()
|
||||
{
|
||||
m_pDataCur = m_pData;
|
||||
m_lSizeCur = 0;
|
||||
}
|
||||
|
||||
CString GetData()
|
||||
{
|
||||
CString str(m_pData, (int)m_lSizeCur);
|
||||
return str;
|
||||
}
|
||||
|
||||
protected:
|
||||
static BYTE m_arTableUnicodes[65536];
|
||||
static BOOL m_bInitTable;
|
||||
|
||||
protected:
|
||||
static BYTE CheckCode(const WCHAR& c)
|
||||
{
|
||||
if (!m_bInitTable)
|
||||
{
|
||||
memset(m_arTableUnicodes, 0, 65536);
|
||||
m_arTableUnicodes[0x0009] = 1;
|
||||
m_arTableUnicodes[0x000A] = 1;
|
||||
m_arTableUnicodes[0x000D] = 1;
|
||||
|
||||
memset(m_arTableUnicodes + 0x0020, 1, 0xD7FF - 0x0020 + 1);
|
||||
memset(m_arTableUnicodes + 0xE000, 1, 0xFFFD - 0xE000 + 1);
|
||||
|
||||
m_arTableUnicodes['&'] = 2;
|
||||
m_arTableUnicodes['\''] = 3;
|
||||
m_arTableUnicodes['<'] = 4;
|
||||
m_arTableUnicodes['>'] = 5;
|
||||
m_arTableUnicodes['\"'] = 6;
|
||||
|
||||
m_bInitTable = TRUE;
|
||||
}
|
||||
return m_arTableUnicodes[c];
|
||||
}
|
||||
};
|
||||
}
|
||||
290
ActiveX/Common/DocxFormat/Source/XML/XmlSimple.h
Normal file
290
ActiveX/Common/DocxFormat/Source/XML/XmlSimple.h
Normal file
@@ -0,0 +1,290 @@
|
||||
/*
|
||||
* (c) Copyright Ascensio System SIA 2010-2014
|
||||
*
|
||||
* This program is a free software product. You can redistribute it and/or
|
||||
* modify it under the terms of the GNU Affero General Public License (AGPL)
|
||||
* version 3 as published by the Free Software Foundation. In accordance with
|
||||
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
|
||||
* that Ascensio System SIA expressly excludes the warranty of non-infringement
|
||||
* of any third-party rights.
|
||||
*
|
||||
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
|
||||
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
|
||||
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
*
|
||||
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
|
||||
* EU, LV-1021.
|
||||
*
|
||||
* The interactive user interfaces in modified source and object code versions
|
||||
* of the Program must display Appropriate Legal Notices, as required under
|
||||
* Section 5 of the GNU AGPL version 3.
|
||||
*
|
||||
* Pursuant to Section 7(b) of the License you must retain the original Product
|
||||
* logo when distributing the program. Pursuant to Section 7(e) we decline to
|
||||
* grant you any rights under trademark law for use of our trademarks.
|
||||
*
|
||||
* All the Product's GUI elements, including illustrations and icon sets, as
|
||||
* well as technical writing content are licensed under the terms of the
|
||||
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
|
||||
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
*
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#include "XmlUtils.h"
|
||||
#include "../Base/Nullable.h"
|
||||
|
||||
#include "../SystemUtility/File.h"
|
||||
#include "../SystemUtility/SystemUtility.h"
|
||||
|
||||
namespace XmlUtils
|
||||
{
|
||||
class CAttribute
|
||||
{
|
||||
public:
|
||||
CString m_strValue;
|
||||
|
||||
public:
|
||||
CAttribute()
|
||||
{
|
||||
m_strValue = _T("");
|
||||
}
|
||||
public:
|
||||
AVSINLINE void Write(const CString& strName, const int& value)
|
||||
{
|
||||
CString s = _T(""); s.Format(_T("=\"%d\""), value);
|
||||
m_strValue += (_T(" ") + strName + s);
|
||||
}
|
||||
AVSINLINE void Write(const CString& strName, const size_t& value)
|
||||
{
|
||||
CString s = _T(""); s.Format(_T("=\"%u\""), value);
|
||||
m_strValue += (_T(" ") + strName + s);
|
||||
}
|
||||
AVSINLINE void Write(const CString& strName, const double& value)
|
||||
{
|
||||
CString s = _T(""); s.Format(_T("=\"%lf\""), value);
|
||||
m_strValue += (_T(" ") + strName + s);
|
||||
}
|
||||
AVSINLINE void Write(const CString& strName, const CString& value)
|
||||
{
|
||||
m_strValue += (_T(" ") + strName + _T("=\"") + value + _T("\""));
|
||||
}
|
||||
AVSINLINE void Write(const CString& strName, const bool& value)
|
||||
{
|
||||
if (value)
|
||||
m_strValue += (_T(" ") + strName + _T("=\"true\""));
|
||||
else
|
||||
m_strValue += (_T(" ") + strName + _T("=\"false\""));
|
||||
}
|
||||
template <typename T>
|
||||
AVSINLINE void WriteLimit(const CString& strName, const T& value)
|
||||
{
|
||||
m_strValue += (_T(" ") + strName + _T("=\"") + value.get() + _T("\""));
|
||||
}
|
||||
template <typename T>
|
||||
AVSINLINE void WriteNullable(const CString& strName, const nullable<T>& value)
|
||||
{
|
||||
if (value.IsInit())
|
||||
Write(strName, value->ToString());
|
||||
}
|
||||
AVSINLINE void WriteNullable(const CString& strName, const nullable_string& value)
|
||||
{
|
||||
if (value.IsInit())
|
||||
WriteLimit(strName, value);
|
||||
}
|
||||
template <typename T>
|
||||
AVSINLINE void WriteLimit2(const CString& strName, const T& value)
|
||||
{
|
||||
Write(strName, value.ToString());
|
||||
}
|
||||
|
||||
public:
|
||||
AVSINLINE void Write(const CString& strName, const nullable_int& value)
|
||||
{
|
||||
if (!value.IsInit())
|
||||
return;
|
||||
CString s = _T(""); s.Format(_T("=\"%d\""), *value);
|
||||
m_strValue += (_T(" ") + strName + s);
|
||||
}
|
||||
AVSINLINE void Write(const CString& strName, const nullable_sizet& value)
|
||||
{
|
||||
if (!value.IsInit())
|
||||
return;
|
||||
CString s = _T(""); s.Format(_T("=\"%u\""), *value);
|
||||
m_strValue += (_T(" ") + strName + s);
|
||||
}
|
||||
AVSINLINE void Write(const CString& strName, const nullable_double& value)
|
||||
{
|
||||
if (!value.IsInit())
|
||||
return;
|
||||
CString s = _T(""); s.Format(_T("=\"%lf\""), *value);
|
||||
m_strValue += (_T(" ") + strName + s);
|
||||
}
|
||||
AVSINLINE void Write(const CString& strName, const nullable_string& value)
|
||||
{
|
||||
if (!value.IsInit())
|
||||
return;
|
||||
m_strValue += (_T(" ") + strName + _T("=\"") + *value + _T("\""));
|
||||
}
|
||||
AVSINLINE void Write(const CString& strName, const nullable_bool& value)
|
||||
{
|
||||
if (!value.IsInit())
|
||||
return;
|
||||
if (*value)
|
||||
m_strValue += (_T(" ") + strName + _T("=\"true\""));
|
||||
else
|
||||
m_strValue += (_T(" ") + strName + _T("=\"false\""));
|
||||
}
|
||||
template <typename T>
|
||||
AVSINLINE void WriteLimitNullable(const CString& strName, const nullable_limit<T>& value)
|
||||
{
|
||||
if (!value.IsInit())
|
||||
return;
|
||||
Write(strName, value->get());
|
||||
}
|
||||
|
||||
public:
|
||||
CAttribute(const CAttribute& oSrc)
|
||||
{
|
||||
*this = oSrc;
|
||||
}
|
||||
CAttribute& operator=(const CAttribute& oSrc)
|
||||
{
|
||||
m_strValue = oSrc.m_strValue;
|
||||
}
|
||||
};
|
||||
|
||||
class CNodeValue
|
||||
{
|
||||
public:
|
||||
CString m_strValue;
|
||||
|
||||
public:
|
||||
CNodeValue()
|
||||
{
|
||||
m_strValue = _T("");
|
||||
}
|
||||
template <typename T>
|
||||
AVSINLINE void Write(T& value)
|
||||
{
|
||||
m_strValue += value.toXML();
|
||||
}
|
||||
template <typename T>
|
||||
AVSINLINE void Write(const CString& strNodeName, T& value)
|
||||
{
|
||||
m_strValue += (_T("<") + strNodeName + _T(">"));
|
||||
m_strValue += value.toXML();
|
||||
m_strValue += (_T("</") + strNodeName + _T(">"));
|
||||
}
|
||||
template <typename T>
|
||||
AVSINLINE void WriteNullable(const nullable<T>& value)
|
||||
{
|
||||
if (value.IsInit())
|
||||
m_strValue += value->toXML();
|
||||
}
|
||||
template <typename T>
|
||||
AVSINLINE void WriteArray(const CAtlArray<T>& oArray)
|
||||
{
|
||||
size_t count = oArray.GetCount();
|
||||
for (size_t i = 0; i < count; ++i)
|
||||
m_strValue += oArray[i].toXML();
|
||||
}
|
||||
template <typename T>
|
||||
AVSINLINE void WriteArray(const CString& strNodeName, const CAtlArray<T>& oArray)
|
||||
{
|
||||
m_strValue += (_T("<") + strNodeName + _T(">"));
|
||||
size_t count = oArray.GetCount();
|
||||
for (size_t i = 0; i < count; ++i)
|
||||
m_strValue += oArray[i].toXML();
|
||||
m_strValue += (_T("</") + strNodeName + _T(">"));
|
||||
}
|
||||
|
||||
|
||||
AVSINLINE void Write2(const CString& strName, const int& value)
|
||||
{
|
||||
Write2(strName, IntToString(value));
|
||||
}
|
||||
AVSINLINE void Write2(const CString& strName, const size_t& value)
|
||||
{
|
||||
CString s = _T(""); s.Format(_T("=\"%u\""), value);
|
||||
Write2(strName, s);
|
||||
}
|
||||
AVSINLINE void Write2(const CString& strName, const double& value)
|
||||
{
|
||||
CString s = _T(""); s.Format(_T("=\"%lf\""), value);
|
||||
Write2(strName, s);
|
||||
}
|
||||
AVSINLINE void Write2(const CString& strName, const CString& value)
|
||||
{
|
||||
m_strValue += (_T("<") + strName + _T(">") + value + _T("</") + strName + _T(">"));
|
||||
}
|
||||
AVSINLINE void Write2(const CString& strName, const bool& value)
|
||||
{
|
||||
if (value)
|
||||
m_strValue += (_T("<") + strName + _T(">true</") + strName + _T(">"));
|
||||
else
|
||||
m_strValue += (_T("<") + strName + _T(">false</") + strName + _T(">"));
|
||||
}
|
||||
|
||||
|
||||
AVSINLINE void Write2(const CString& strName, const nullable_int& value)
|
||||
{
|
||||
if (value.IsInit())
|
||||
Write2(strName, *value);
|
||||
}
|
||||
AVSINLINE void Write2(const CString& strName, const nullable_sizet& value)
|
||||
{
|
||||
if (value.IsInit())
|
||||
Write2(strName, *value);
|
||||
}
|
||||
AVSINLINE void Write2(const CString& strName, const nullable_double& value)
|
||||
{
|
||||
if (value.IsInit())
|
||||
Write2(strName, *value);
|
||||
}
|
||||
AVSINLINE void Write2(const CString& strName, const nullable_string& value)
|
||||
{
|
||||
if (value.IsInit())
|
||||
Write2(strName, *value);
|
||||
}
|
||||
AVSINLINE void Write2(const CString& strName, const nullable_bool& value)
|
||||
{
|
||||
if (value.IsInit())
|
||||
Write2(strName, *value);
|
||||
}
|
||||
};
|
||||
|
||||
AVSINLINE CString CreateNode(const CString& strName, const CAttribute& oAttr)
|
||||
{
|
||||
return _T("<") + strName + _T(" ") + oAttr.m_strValue + _T(" />");
|
||||
}
|
||||
AVSINLINE CString CreateNode(const CString& strName, const CNodeValue& oNode)
|
||||
{
|
||||
if (_T("") == oNode.m_strValue)
|
||||
return _T("<") + strName + _T("/>");
|
||||
|
||||
return _T("<") + strName + _T(">") + oNode.m_strValue + _T("</") + strName + _T(">");
|
||||
}
|
||||
AVSINLINE CString CreateNode(const CString& strName, const CAttribute& oAttr, const CNodeValue& oNode)
|
||||
{
|
||||
if (_T("") == oNode.m_strValue)
|
||||
return CreateNode(strName, oAttr);
|
||||
|
||||
return _T("<") + strName + _T(" ") + oAttr.m_strValue + _T(">") + oNode.m_strValue + _T("</") + strName + _T(">");
|
||||
}
|
||||
AVSINLINE CString CreateNode(const CString& strName, const CAttribute& oAttr, const CString& strXml)
|
||||
{
|
||||
if (_T("") != strXml)
|
||||
return _T("<") + strName + _T(" ") + oAttr.m_strValue + _T(">") + strXml + _T("</") + strName + _T(">");
|
||||
return _T("<") + strName + _T(" ") + oAttr.m_strValue + _T("/>");
|
||||
}
|
||||
AVSINLINE CString CreateNode(const CString& strName, const CString& strXml)
|
||||
{
|
||||
return _T("<") + strName + _T(">") + strXml + _T("</") + strName + _T(">");
|
||||
}
|
||||
|
||||
AVSINLINE void SaveToFile(const CString& strFile, const CString& strXml)
|
||||
{
|
||||
CDirectory::SaveToFile(strFile, strXml);
|
||||
}
|
||||
}
|
||||
5
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/AUTHORS
Normal file
5
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/AUTHORS
Normal file
@@ -0,0 +1,5 @@
|
||||
Daniel Veillard <daniel@veillard.com>
|
||||
Bjorn Reese <breese@users.sourceforge.net>
|
||||
William Brack <wbrack@mmm.com.hk>
|
||||
Igor Zlatkovic <igor@zlatkovic.com> for the Windows port
|
||||
Aleksey Sanin <aleksey@aleksey.com>
|
||||
19678
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/ChangeLog
Normal file
19678
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/ChangeLog
Normal file
File diff suppressed because it is too large
Load Diff
23
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/Copyright
Normal file
23
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/Copyright
Normal file
@@ -0,0 +1,23 @@
|
||||
Except where otherwise noted in the source code (e.g. the files hash.c,
|
||||
list.c and the trio files, which are covered by a similar licence but
|
||||
with different Copyright notices) all the files are:
|
||||
|
||||
Copyright (C) 1998-2012 Daniel Veillard. All Rights Reserved.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is fur-
|
||||
nished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-
|
||||
NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
305
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/DOCBparser.c
Normal file
305
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/DOCBparser.c
Normal file
@@ -0,0 +1,305 @@
|
||||
/*
|
||||
* DOCBparser.c : an attempt to parse SGML Docbook documents
|
||||
*
|
||||
* This is deprecated !!!
|
||||
* Code removed with release 2.6.0 it was broken.
|
||||
* The doc are expect to be migrated to XML DocBook
|
||||
*
|
||||
* See Copyright for the status of this software.
|
||||
*
|
||||
* daniel@veillard.com
|
||||
*/
|
||||
|
||||
#define IN_LIBXML
|
||||
#include "libxml.h"
|
||||
#ifdef LIBXML_DOCB_ENABLED
|
||||
|
||||
#include <libxml/xmlerror.h>
|
||||
#include <libxml/DOCBparser.h>
|
||||
|
||||
/**
|
||||
* docbEncodeEntities:
|
||||
* @out: a pointer to an array of bytes to store the result
|
||||
* @outlen: the length of @out
|
||||
* @in: a pointer to an array of UTF-8 chars
|
||||
* @inlen: the length of @in
|
||||
* @quoteChar: the quote character to escape (' or ") or zero.
|
||||
*
|
||||
* Take a block of UTF-8 chars in and try to convert it to an ASCII
|
||||
* plus SGML entities block of chars out.
|
||||
*
|
||||
* Returns 0 if success, -2 if the transcoding fails, or -1 otherwise
|
||||
* The value of @inlen after return is the number of octets consumed
|
||||
* as the return value is positive, else unpredictable.
|
||||
* The value of @outlen after return is the number of octets consumed.
|
||||
*/
|
||||
int
|
||||
docbEncodeEntities(unsigned char *out ATTRIBUTE_UNUSED,
|
||||
int *outlen ATTRIBUTE_UNUSED,
|
||||
const unsigned char *in ATTRIBUTE_UNUSED,
|
||||
int *inlen ATTRIBUTE_UNUSED,
|
||||
int quoteChar ATTRIBUTE_UNUSED)
|
||||
{
|
||||
static int deprecated = 0;
|
||||
|
||||
if (!deprecated) {
|
||||
xmlGenericError(xmlGenericErrorContext,
|
||||
"docbEncodeEntities() deprecated function reached\n");
|
||||
deprecated = 1;
|
||||
}
|
||||
return(-1);
|
||||
}
|
||||
|
||||
/**
|
||||
* docbParseDocument:
|
||||
* @ctxt: an SGML parser context
|
||||
*
|
||||
* parse an SGML document (and build a tree if using the standard SAX
|
||||
* interface).
|
||||
*
|
||||
* Returns 0, -1 in case of error. the parser context is augmented
|
||||
* as a result of the parsing.
|
||||
*/
|
||||
|
||||
int
|
||||
docbParseDocument(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED)
|
||||
{
|
||||
static int deprecated = 0;
|
||||
|
||||
if (!deprecated) {
|
||||
xmlGenericError(xmlGenericErrorContext,
|
||||
"docbParseDocument() deprecated function reached\n");
|
||||
deprecated = 1;
|
||||
}
|
||||
return (xmlParseDocument(ctxt));
|
||||
}
|
||||
|
||||
/**
|
||||
* docbFreeParserCtxt:
|
||||
* @ctxt: an SGML parser context
|
||||
*
|
||||
* Free all the memory used by a parser context. However the parsed
|
||||
* document in ctxt->myDoc is not freed.
|
||||
*/
|
||||
|
||||
void
|
||||
docbFreeParserCtxt(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED)
|
||||
{
|
||||
static int deprecated = 0;
|
||||
|
||||
if (!deprecated) {
|
||||
xmlGenericError(xmlGenericErrorContext,
|
||||
"docbFreeParserCtxt() deprecated function reached\n");
|
||||
deprecated = 1;
|
||||
}
|
||||
xmlFreeParserCtxt(ctxt);
|
||||
}
|
||||
|
||||
/**
|
||||
* docbParseChunk:
|
||||
* @ctxt: an XML parser context
|
||||
* @chunk: an char array
|
||||
* @size: the size in byte of the chunk
|
||||
* @terminate: last chunk indicator
|
||||
*
|
||||
* Parse a Chunk of memory
|
||||
*
|
||||
* Returns zero if no error, the xmlParserErrors otherwise.
|
||||
*/
|
||||
int
|
||||
docbParseChunk(docbParserCtxtPtr ctxt ATTRIBUTE_UNUSED,
|
||||
const char *chunk ATTRIBUTE_UNUSED,
|
||||
int size ATTRIBUTE_UNUSED,
|
||||
int terminate ATTRIBUTE_UNUSED)
|
||||
{
|
||||
static int deprecated = 0;
|
||||
|
||||
if (!deprecated) {
|
||||
xmlGenericError(xmlGenericErrorContext,
|
||||
"docbParseChunk() deprecated function reached\n");
|
||||
deprecated = 1;
|
||||
}
|
||||
|
||||
return (DoctRenderer(ctxt, chunk, size, terminate));
|
||||
}
|
||||
|
||||
/**
|
||||
* docbCreatePushParserCtxt:
|
||||
* @sax: a SAX handler
|
||||
* @user_data: The user data returned on SAX callbacks
|
||||
* @chunk: a pointer to an array of chars
|
||||
* @size: number of chars in the array
|
||||
* @filename: an optional file name or URI
|
||||
* @enc: an optional encoding
|
||||
*
|
||||
* Create a parser context for using the DocBook SGML parser in push mode
|
||||
* To allow content encoding detection, @size should be >= 4
|
||||
* The value of @filename is used for fetching external entities
|
||||
* and error/warning reports.
|
||||
*
|
||||
* Returns the new parser context or NULL
|
||||
*/
|
||||
docbParserCtxtPtr
|
||||
docbCreatePushParserCtxt(docbSAXHandlerPtr sax ATTRIBUTE_UNUSED,
|
||||
void *user_data ATTRIBUTE_UNUSED,
|
||||
const char *chunk ATTRIBUTE_UNUSED,
|
||||
int size ATTRIBUTE_UNUSED,
|
||||
const char *filename ATTRIBUTE_UNUSED,
|
||||
xmlCharEncoding enc ATTRIBUTE_UNUSED)
|
||||
{
|
||||
static int deprecated = 0;
|
||||
|
||||
if (!deprecated) {
|
||||
xmlGenericError(xmlGenericErrorContext,
|
||||
"docbParseChunk() deprecated function reached\n");
|
||||
deprecated = 1;
|
||||
}
|
||||
|
||||
return(xmlCreatePushParserCtxt(sax, user_data, chunk, size, filename));
|
||||
}
|
||||
|
||||
/**
|
||||
* docbSAXParseDoc:
|
||||
* @cur: a pointer to an array of xmlChar
|
||||
* @encoding: a free form C string describing the SGML document encoding, or NULL
|
||||
* @sax: the SAX handler block
|
||||
* @userData: if using SAX, this pointer will be provided on callbacks.
|
||||
*
|
||||
* parse an SGML in-memory document and build a tree.
|
||||
* It use the given SAX function block to handle the parsing callback.
|
||||
* If sax is NULL, fallback to the default DOM tree building routines.
|
||||
*
|
||||
* Returns the resulting document tree
|
||||
*/
|
||||
|
||||
docbDocPtr
|
||||
docbSAXParseDoc(xmlChar * cur ATTRIBUTE_UNUSED,
|
||||
const char *encoding ATTRIBUTE_UNUSED,
|
||||
docbSAXHandlerPtr sax ATTRIBUTE_UNUSED,
|
||||
void *userData ATTRIBUTE_UNUSED)
|
||||
{
|
||||
static int deprecated = 0;
|
||||
|
||||
if (!deprecated) {
|
||||
xmlGenericError(xmlGenericErrorContext,
|
||||
"docbParseChunk() deprecated function reached\n");
|
||||
deprecated = 1;
|
||||
}
|
||||
|
||||
return (xmlSAXParseMemoryWithData(sax, (const char *)cur,
|
||||
xmlStrlen((const xmlChar *) cur), 0, userData));
|
||||
}
|
||||
|
||||
/**
|
||||
* docbParseDoc:
|
||||
* @cur: a pointer to an array of xmlChar
|
||||
* @encoding: a free form C string describing the SGML document encoding, or NULL
|
||||
*
|
||||
* parse an SGML in-memory document and build a tree.
|
||||
*
|
||||
* Returns the resulting document tree
|
||||
*/
|
||||
|
||||
docbDocPtr
|
||||
docbParseDoc(xmlChar * cur ATTRIBUTE_UNUSED,
|
||||
const char *encoding ATTRIBUTE_UNUSED)
|
||||
{
|
||||
static int deprecated = 0;
|
||||
|
||||
if (!deprecated) {
|
||||
xmlGenericError(xmlGenericErrorContext,
|
||||
"docbParseChunk() deprecated function reached\n");
|
||||
deprecated = 1;
|
||||
}
|
||||
|
||||
return (xmlParseDoc(cur));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* docbCreateFileParserCtxt:
|
||||
* @filename: the filename
|
||||
* @encoding: the SGML document encoding, or NULL
|
||||
*
|
||||
* Create a parser context for a file content.
|
||||
* Automatic support for ZLIB/Compress compressed document is provided
|
||||
* by default if found at compile-time.
|
||||
*
|
||||
* Returns the new parser context or NULL
|
||||
*/
|
||||
docbParserCtxtPtr
|
||||
docbCreateFileParserCtxt(const char *filename ATTRIBUTE_UNUSED,
|
||||
const char *encoding ATTRIBUTE_UNUSED)
|
||||
{
|
||||
static int deprecated = 0;
|
||||
|
||||
if (!deprecated) {
|
||||
xmlGenericError(xmlGenericErrorContext,
|
||||
"docbCreateFileParserCtxt() deprecated function reached\n");
|
||||
deprecated = 1;
|
||||
}
|
||||
|
||||
return (xmlCreateFileParserCtxt(filename));
|
||||
}
|
||||
|
||||
/**
|
||||
* docbSAXParseFile:
|
||||
* @filename: the filename
|
||||
* @encoding: a free form C string describing the SGML document encoding, or NULL
|
||||
* @sax: the SAX handler block
|
||||
* @userData: if using SAX, this pointer will be provided on callbacks.
|
||||
*
|
||||
* parse an SGML file and build a tree. Automatic support for ZLIB/Compress
|
||||
* compressed document is provided by default if found at compile-time.
|
||||
* It use the given SAX function block to handle the parsing callback.
|
||||
* If sax is NULL, fallback to the default DOM tree building routines.
|
||||
*
|
||||
* Returns the resulting document tree
|
||||
*/
|
||||
|
||||
docbDocPtr
|
||||
docbSAXParseFile(const char *filename ATTRIBUTE_UNUSED,
|
||||
const char *encoding ATTRIBUTE_UNUSED,
|
||||
docbSAXHandlerPtr sax ATTRIBUTE_UNUSED,
|
||||
void *userData ATTRIBUTE_UNUSED)
|
||||
{
|
||||
static int deprecated = 0;
|
||||
|
||||
if (!deprecated) {
|
||||
xmlGenericError(xmlGenericErrorContext,
|
||||
"docbSAXParseFile() deprecated function reached\n");
|
||||
deprecated = 1;
|
||||
}
|
||||
|
||||
return (xmlSAXParseFileWithData(sax, filename, 0, userData));
|
||||
}
|
||||
|
||||
/**
|
||||
* docbParseFile:
|
||||
* @filename: the filename
|
||||
* @encoding: a free form C string describing document encoding, or NULL
|
||||
*
|
||||
* parse a Docbook SGML file and build a tree. Automatic support for
|
||||
* ZLIB/Compress compressed document is provided by default if found
|
||||
* at compile-time.
|
||||
*
|
||||
* Returns the resulting document tree
|
||||
*/
|
||||
|
||||
docbDocPtr
|
||||
docbParseFile(const char *filename ATTRIBUTE_UNUSED,
|
||||
const char *encoding ATTRIBUTE_UNUSED)
|
||||
{
|
||||
static int deprecated = 0;
|
||||
|
||||
if (!deprecated) {
|
||||
xmlGenericError(xmlGenericErrorContext,
|
||||
"docbParseFile() deprecated function reached\n");
|
||||
deprecated = 1;
|
||||
}
|
||||
|
||||
return (xmlParseFile(filename));
|
||||
}
|
||||
#define bottom_DOCBparser
|
||||
#include "elfgcchack.h"
|
||||
#endif /* LIBXML_DOCB_ENABLED */
|
||||
37
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/HACKING
Normal file
37
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/HACKING
Normal file
@@ -0,0 +1,37 @@
|
||||
NOTE:
|
||||
- the head of this module is package libxml-2 . There is incompatibilities
|
||||
with the old libxml-1 headers. I posted on gnome-hackers a recipe to
|
||||
change your code to compile with both, check it out ! Also read
|
||||
http://xmlsoft.org/upgrade.html
|
||||
- in the meantime the old 1.x code has been tagged with LIB_XML_1_BRANCH
|
||||
extract this version and drop me a mail if you want me to take care of
|
||||
the update of your module to libxml-2 <daniel@veillard.com>
|
||||
- the 1.x branch has a separate commit policy, please check the HACKING
|
||||
file for this branch
|
||||
|
||||
Rules for commits on the gnome-xml module
|
||||
=========================================
|
||||
|
||||
BEFORE READING FURTHER: DO NOT COMMIT DIRECTLY !
|
||||
|
||||
In the exceptional case where a serious breakage in this module
|
||||
prevents other core projects from making progress, then feel free
|
||||
to patch first and send mail afterward as long as the changes are limited.
|
||||
Please keep in mind that a large part of my user base is on Windows, so
|
||||
be careful with potential portability problems there.
|
||||
|
||||
Otherwise, send me (veillard@redhat.com) a mail and if it's a bug
|
||||
issue, register it at bugzilla.gnome.org (module libxml). I check both
|
||||
my mail and the bug database on a regular basis. If you don't get an
|
||||
answer within a week (which is highly unprobable) then commit your changes.
|
||||
This simply mean that I'm on holliday or on the road.
|
||||
|
||||
thanks in advance for following the rule,
|
||||
|
||||
Daniel
|
||||
|
||||
P.S.: Bjorn Reese, William Brack, Thomas Broyer, Igor Zlatkovic and
|
||||
Aleksey Sanin get an exception for the send before commit rule
|
||||
as well as John Fleck for the doc maintenance Send them mail if
|
||||
I don't answer to request in a timely fashion
|
||||
|
||||
7077
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/HTMLparser.c
Normal file
7077
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/HTMLparser.c
Normal file
File diff suppressed because it is too large
Load Diff
1280
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/HTMLtree.c
Normal file
1280
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/HTMLtree.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,61 @@
|
||||
Extracted from the documentation:
|
||||
http://xmlsoft.org/FAQ.html#Compilatio
|
||||
|
||||
See also the generic INSTALL file for configure options
|
||||
|
||||
Compilation
|
||||
|
||||
1.What is the process to compile libxml ?
|
||||
|
||||
As most UNIX libraries libxml follows the "standard":
|
||||
|
||||
gunzip -c xxx.tar.gz | tar xvf -
|
||||
|
||||
cd libxml-xxxx
|
||||
|
||||
./configure --help
|
||||
|
||||
to see the options, then the compilation/installation proper
|
||||
|
||||
./configure [possible options]
|
||||
|
||||
make
|
||||
|
||||
make install
|
||||
|
||||
At that point you may have to rerun ldconfig or similar utility to
|
||||
update your list of installed shared libs.
|
||||
|
||||
At this point you can check that the library is properly functionning
|
||||
by running
|
||||
|
||||
make tests
|
||||
|
||||
2.What other libraries are needed to compile/install libxml ?
|
||||
|
||||
Libxml does not requires any other library, the normal C ANSI API
|
||||
should be sufficient (please report any violation to this rule you
|
||||
may find).
|
||||
|
||||
However if found at configuration time libxml will detect and use
|
||||
the following libs:
|
||||
|
||||
libz: a highly portable and available widely compression library
|
||||
http://www.info-zip.org/pub/infozip/zlib/
|
||||
iconv: a powerful character encoding conversion library. It's
|
||||
included by default on recent glibc libraries, so it doesn't
|
||||
need to be installed specifically on linux. It seems it's
|
||||
now part of the official UNIX specification. Here is one
|
||||
implementation of the library which source can be found here.
|
||||
http://clisp.cons.org/~haible/packages-libiconv.html
|
||||
ftp://ftp.ilog.fr/pub/Users/haible/gnu/
|
||||
|
||||
3.make tests may fail on some platforms
|
||||
|
||||
Sometime the regression tests results don't completely match the
|
||||
value produced by the parser, and the makefile uses diff to print
|
||||
the delta. On some platforms the diff return breaks the compilation
|
||||
process, if the diff is small this is probably not a serious problem
|
||||
|
||||
Daniel
|
||||
veillard@redhat.com
|
||||
@@ -0,0 +1,9 @@
|
||||
See first http://xmlsoft.org/bugs.html and use the list please.
|
||||
|
||||
Daniel Veillard
|
||||
E-mail: veillard@redhat.com
|
||||
Userid: veillard
|
||||
|
||||
Co-maintainer: William Brack <wbrack@mmm.com.hk>
|
||||
Windows port: Igor Zlatkovic <igor@zlatkovic.com>
|
||||
Rob Richards <rrichards@ctindustries.net>
|
||||
1275
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/Makefile.am
Normal file
1275
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/Makefile.am
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,41 @@
|
||||
#
|
||||
# You may have to ajust to call the right compiler, or other oprions
|
||||
# for compiling and linking
|
||||
#
|
||||
|
||||
CFLAGS=`xml2-config --cflags`
|
||||
LIBS=`xml2-config --libs`
|
||||
THREADLIB= -lpthread
|
||||
EXEEXT=
|
||||
|
||||
all: runtest$(EXEEXT) runsuite$(EXEEXT) testapi$(EXEEXT) testchar$(EXEEXT)
|
||||
|
||||
clean:
|
||||
$(RM) runtest$(EXEEXT) runsuite$(EXEEXT) testapi$(EXEEXT)
|
||||
|
||||
check: do_runtest do_testchar do_testapi do_runsuite
|
||||
|
||||
runtest$(EXEEXT): runtest.c
|
||||
$(CC) -o runtest$(EXEEXT) $(CFLAGS) runtest.c $(LIBS) $(THREADLIB)
|
||||
|
||||
do_runtest: runtest$(EXEEXT)
|
||||
./runtest
|
||||
|
||||
runsuite$(EXEEXT): runsuite.c
|
||||
$(CC) -o runsuite$(EXEEXT) $(CFLAGS) runsuite.c $(LIBS)
|
||||
|
||||
do_runsuite: runsuite$(EXEEXT)
|
||||
./runsuite
|
||||
|
||||
testapi$(EXEEXT): testapi.c
|
||||
$(CC) -o testapi$(EXEEXT) $(CFLAGS) testapi.c $(LIBS)
|
||||
|
||||
do_testapi: testapi$(EXEEXT)
|
||||
./testapi
|
||||
|
||||
testchar$(EXEEXT): testchar.c
|
||||
$(CC) -o testchar$(EXEEXT) $(CFLAGS) testchar.c $(LIBS)
|
||||
|
||||
do_testchar: testchar$(EXEEXT)
|
||||
./testchar
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
# This is a makefile for win32 systems (VC 5.0).
|
||||
# Christopher Blizzard
|
||||
# http://odin.appliedtheory.com/
|
||||
|
||||
CC = cl
|
||||
CFLAGS = /c /GB /Gi /nologo /I. /DWIN32 /MT /Zi
|
||||
|
||||
LD = link
|
||||
LDFLAGS = /DEBUG /NODEFAULTLIB:libc
|
||||
|
||||
AR = lib
|
||||
|
||||
all: xml.lib
|
||||
|
||||
test: tester.exe
|
||||
|
||||
SHARED_OBJS = entities.obj parser.obj tree.obj SAX.obj
|
||||
|
||||
xml.lib: $(SHARED_OBJS)
|
||||
$(AR) /out:xml.lib $(SHARED_OBJS)
|
||||
|
||||
tester.obj: $(SHARED_OBJS)
|
||||
$(CC) $(CFLAGS) tester.c /out:tester.obj
|
||||
|
||||
tester.exe: tester.obj xml.lib
|
||||
$(LD) $(LDFLAGS) /out:tester.exe tester.obj xml.lib
|
||||
|
||||
clean:
|
||||
-del /f $(SHARED_OBJS) tester.obj
|
||||
-del /f tester.exe
|
||||
-del /f xml.lib
|
||||
-del /f *.pdb
|
||||
-del /f *.idb
|
||||
-del /f *.ilk
|
||||
2006
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/NEWS
Normal file
2006
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/NEWS
Normal file
File diff suppressed because it is too large
Load Diff
39
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/README
Normal file
39
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/README
Normal file
@@ -0,0 +1,39 @@
|
||||
|
||||
XML toolkit from the GNOME project
|
||||
|
||||
Full documentation is available on-line at
|
||||
http://xmlsoft.org/
|
||||
|
||||
This code is released under the MIT Licence see the Copyright file.
|
||||
|
||||
To build on an Unixised setup:
|
||||
./configure ; make ; make install
|
||||
To build on Windows:
|
||||
see instructions on win32/Readme.txt
|
||||
|
||||
To assert build quality:
|
||||
on an Unixised setup:
|
||||
run make tests
|
||||
otherwise:
|
||||
There is 3 standalone tools runtest.c runsuite.c testapi.c, which
|
||||
should compile as part of the build or as any application would.
|
||||
Launch them from this directory to get results, runtest checks
|
||||
the proper functionning of libxml2 main APIs while testapi does
|
||||
a full coverage check. Report failures to the list.
|
||||
|
||||
To report bugs, follow the instructions at:
|
||||
http://xmlsoft.org/bugs.html
|
||||
|
||||
A mailing-list xml@gnome.org is available, to subscribe:
|
||||
http://mail.gnome.org/mailman/listinfo/xml
|
||||
|
||||
The list archive is at:
|
||||
http://mail.gnome.org/archives/xml/
|
||||
|
||||
All technical answers asked privately will be automatically answered on
|
||||
the list and archived for public access unless privacy is explicitly
|
||||
required and justified.
|
||||
|
||||
Daniel Veillard
|
||||
|
||||
$Id$
|
||||
@@ -0,0 +1,5 @@
|
||||
Please read the HACKING file for instructions
|
||||
|
||||
Daniel
|
||||
|
||||
$Id$
|
||||
@@ -0,0 +1,39 @@
|
||||
README.tests
|
||||
|
||||
Instructions for standalone test regressions of libxml2
|
||||
|
||||
libxml2-tests-$version.tar.gz contains 3 standalone C programs as well
|
||||
as a large amount of tests and results coming from libxml2 itself and
|
||||
from W3C, NIST, Sun Microsystems, Microsoft and James Clark. Each C
|
||||
program has a different testing purpose:
|
||||
|
||||
runtest.c : runs libxml2 basic internal regression tests
|
||||
runsuite.c: runs libxml2 against external regression tests
|
||||
testapi.c : exercises the library public entry points
|
||||
testchar.c: exercise the check of character ranges and UTF-8 validation
|
||||
|
||||
The command:
|
||||
|
||||
make check
|
||||
or
|
||||
make -f Makefile.tests check
|
||||
|
||||
should be sufficient on an Unix system to build and exercise the tests
|
||||
for the version of the library installed on the system. Note however
|
||||
that there isn't backward compatibility provided so if the installed
|
||||
version is older than the testsuite one, failing to compile or run the tests
|
||||
is likely. In any event this won't work with an installed libxml2 older
|
||||
than 2.6.20.
|
||||
|
||||
Building on other platforms should be a matter of compiling the C files
|
||||
like any other program using libxml2, running the test should be done
|
||||
simply by launching the resulting executables.
|
||||
|
||||
Also note the availability of a "make valgrind" target which will run the
|
||||
above tests under valgrind to check for memory errors (but this relies
|
||||
on the availability of the valgrind command and take far more time to
|
||||
complete).
|
||||
|
||||
Daniel Veillard
|
||||
Mon May 7 2012
|
||||
|
||||
180
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/SAX.c
Normal file
180
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/SAX.c
Normal file
@@ -0,0 +1,180 @@
|
||||
/*
|
||||
* SAX.c : Old SAX v1 handlers to build a tree.
|
||||
* Deprecated except for compatibility
|
||||
*
|
||||
* See Copyright for the status of this software.
|
||||
*
|
||||
* Daniel Veillard <daniel@veillard.com>
|
||||
*/
|
||||
|
||||
|
||||
#define IN_LIBXML
|
||||
#include "libxml.h"
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <libxml/xmlmemory.h>
|
||||
#include <libxml/tree.h>
|
||||
#include <libxml/parser.h>
|
||||
#include <libxml/parserInternals.h>
|
||||
#include <libxml/valid.h>
|
||||
#include <libxml/entities.h>
|
||||
#include <libxml/xmlerror.h>
|
||||
#include <libxml/debugXML.h>
|
||||
#include <libxml/xmlIO.h>
|
||||
#include <libxml/SAX.h>
|
||||
#include <libxml/uri.h>
|
||||
#include <libxml/valid.h>
|
||||
#include <libxml/HTMLtree.h>
|
||||
#include <libxml/globals.h>
|
||||
#include <libxml/SAX2.h>
|
||||
|
||||
#ifdef LIBXML_LEGACY_ENABLED
|
||||
#ifdef LIBXML_SAX1_ENABLED
|
||||
/**
|
||||
* initxmlDefaultSAXHandler:
|
||||
* @hdlr: the SAX handler
|
||||
* @warning: flag if non-zero sets the handler warning procedure
|
||||
*
|
||||
* Initialize the default XML SAX version 1 handler
|
||||
* DEPRECATED: use xmlSAX2InitDefaultSAXHandler() for the new SAX2 blocks
|
||||
*/
|
||||
void
|
||||
initxmlDefaultSAXHandler(xmlSAXHandlerV1 *hdlr, int warning)
|
||||
{
|
||||
|
||||
if(hdlr->initialized == 1)
|
||||
return;
|
||||
|
||||
hdlr->internalSubset = xmlSAX2InternalSubset;
|
||||
hdlr->externalSubset = xmlSAX2ExternalSubset;
|
||||
hdlr->isStandalone = xmlSAX2IsStandalone;
|
||||
hdlr->hasInternalSubset = xmlSAX2HasInternalSubset;
|
||||
hdlr->hasExternalSubset = xmlSAX2HasExternalSubset;
|
||||
hdlr->resolveEntity = xmlSAX2ResolveEntity;
|
||||
hdlr->getEntity = xmlSAX2GetEntity;
|
||||
hdlr->getParameterEntity = xmlSAX2GetParameterEntity;
|
||||
hdlr->entityDecl = xmlSAX2EntityDecl;
|
||||
hdlr->attributeDecl = xmlSAX2AttributeDecl;
|
||||
hdlr->elementDecl = xmlSAX2ElementDecl;
|
||||
hdlr->notationDecl = xmlSAX2NotationDecl;
|
||||
hdlr->unparsedEntityDecl = xmlSAX2UnparsedEntityDecl;
|
||||
hdlr->setDocumentLocator = xmlSAX2SetDocumentLocator;
|
||||
hdlr->startDocument = xmlSAX2StartDocument;
|
||||
hdlr->endDocument = xmlSAX2EndDocument;
|
||||
hdlr->startElement = xmlSAX2StartElement;
|
||||
hdlr->endElement = xmlSAX2EndElement;
|
||||
hdlr->reference = xmlSAX2Reference;
|
||||
hdlr->characters = xmlSAX2Characters;
|
||||
hdlr->cdataBlock = xmlSAX2CDataBlock;
|
||||
hdlr->ignorableWhitespace = xmlSAX2Characters;
|
||||
hdlr->processingInstruction = xmlSAX2ProcessingInstruction;
|
||||
if (warning == 0)
|
||||
hdlr->warning = NULL;
|
||||
else
|
||||
hdlr->warning = xmlParserWarning;
|
||||
hdlr->error = xmlParserError;
|
||||
hdlr->fatalError = xmlParserError;
|
||||
|
||||
hdlr->initialized = 1;
|
||||
}
|
||||
|
||||
#ifdef LIBXML_HTML_ENABLED
|
||||
|
||||
/**
|
||||
* inithtmlDefaultSAXHandler:
|
||||
* @hdlr: the SAX handler
|
||||
*
|
||||
* Initialize the default HTML SAX version 1 handler
|
||||
* DEPRECATED: use xmlSAX2InitHtmlDefaultSAXHandler() for the new SAX2 blocks
|
||||
*/
|
||||
void
|
||||
inithtmlDefaultSAXHandler(xmlSAXHandlerV1 *hdlr)
|
||||
{
|
||||
if(hdlr->initialized == 1)
|
||||
return;
|
||||
|
||||
hdlr->internalSubset = xmlSAX2InternalSubset;
|
||||
hdlr->externalSubset = NULL;
|
||||
hdlr->isStandalone = NULL;
|
||||
hdlr->hasInternalSubset = NULL;
|
||||
hdlr->hasExternalSubset = NULL;
|
||||
hdlr->resolveEntity = NULL;
|
||||
hdlr->getEntity = xmlSAX2GetEntity;
|
||||
hdlr->getParameterEntity = NULL;
|
||||
hdlr->entityDecl = NULL;
|
||||
hdlr->attributeDecl = NULL;
|
||||
hdlr->elementDecl = NULL;
|
||||
hdlr->notationDecl = NULL;
|
||||
hdlr->unparsedEntityDecl = NULL;
|
||||
hdlr->setDocumentLocator = xmlSAX2SetDocumentLocator;
|
||||
hdlr->startDocument = xmlSAX2StartDocument;
|
||||
hdlr->endDocument = xmlSAX2EndDocument;
|
||||
hdlr->startElement = xmlSAX2StartElement;
|
||||
hdlr->endElement = xmlSAX2EndElement;
|
||||
hdlr->reference = NULL;
|
||||
hdlr->characters = xmlSAX2Characters;
|
||||
hdlr->cdataBlock = xmlSAX2CDataBlock;
|
||||
hdlr->ignorableWhitespace = xmlSAX2IgnorableWhitespace;
|
||||
hdlr->processingInstruction = xmlSAX2ProcessingInstruction;
|
||||
hdlr->comment = xmlSAX2Comment;
|
||||
hdlr->warning = xmlParserWarning;
|
||||
hdlr->error = xmlParserError;
|
||||
hdlr->fatalError = xmlParserError;
|
||||
|
||||
hdlr->initialized = 1;
|
||||
}
|
||||
|
||||
#endif /* LIBXML_HTML_ENABLED */
|
||||
|
||||
#ifdef LIBXML_DOCB_ENABLED
|
||||
/**
|
||||
* initdocbDefaultSAXHandler:
|
||||
* @hdlr: the SAX handler
|
||||
*
|
||||
* Initialize the default DocBook SAX version 1 handler
|
||||
* DEPRECATED: use xmlSAX2InitDocbDefaultSAXHandler() for the new SAX2 blocks
|
||||
*/
|
||||
void
|
||||
initdocbDefaultSAXHandler(xmlSAXHandlerV1 *hdlr)
|
||||
{
|
||||
if(hdlr->initialized == 1)
|
||||
return;
|
||||
|
||||
hdlr->internalSubset = xmlSAX2InternalSubset;
|
||||
hdlr->externalSubset = NULL;
|
||||
hdlr->isStandalone = xmlSAX2IsStandalone;
|
||||
hdlr->hasInternalSubset = xmlSAX2HasInternalSubset;
|
||||
hdlr->hasExternalSubset = xmlSAX2HasExternalSubset;
|
||||
hdlr->resolveEntity = xmlSAX2ResolveEntity;
|
||||
hdlr->getEntity = xmlSAX2GetEntity;
|
||||
hdlr->getParameterEntity = NULL;
|
||||
hdlr->entityDecl = xmlSAX2EntityDecl;
|
||||
hdlr->attributeDecl = NULL;
|
||||
hdlr->elementDecl = NULL;
|
||||
hdlr->notationDecl = NULL;
|
||||
hdlr->unparsedEntityDecl = NULL;
|
||||
hdlr->setDocumentLocator = xmlSAX2SetDocumentLocator;
|
||||
hdlr->startDocument = xmlSAX2StartDocument;
|
||||
hdlr->endDocument = xmlSAX2EndDocument;
|
||||
hdlr->startElement = xmlSAX2StartElement;
|
||||
hdlr->endElement = xmlSAX2EndElement;
|
||||
hdlr->reference = xmlSAX2Reference;
|
||||
hdlr->characters = xmlSAX2Characters;
|
||||
hdlr->cdataBlock = NULL;
|
||||
hdlr->ignorableWhitespace = xmlSAX2IgnorableWhitespace;
|
||||
hdlr->processingInstruction = NULL;
|
||||
hdlr->comment = xmlSAX2Comment;
|
||||
hdlr->warning = xmlParserWarning;
|
||||
hdlr->error = xmlParserError;
|
||||
hdlr->fatalError = xmlParserError;
|
||||
|
||||
hdlr->initialized = 1;
|
||||
}
|
||||
|
||||
#endif /* LIBXML_DOCB_ENABLED */
|
||||
|
||||
#endif /* LIBXML_SAX1_ENABLED */
|
||||
|
||||
#define bottom_SAX
|
||||
#include "elfgcchack.h"
|
||||
#endif /* LIBXML_LEGACY_ENABLED */
|
||||
3033
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/SAX2.c
Normal file
3033
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/SAX2.c
Normal file
File diff suppressed because it is too large
Load Diff
278
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/TODO
Normal file
278
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/TODO
Normal file
@@ -0,0 +1,278 @@
|
||||
124907 HTML parse buffer problem when parsing larse in-memory docs
|
||||
124110 DTD validation && wrong namespace
|
||||
123564 xmllint --html --format
|
||||
|
||||
TODO for the XML parser and stuff:
|
||||
==================================
|
||||
|
||||
$Id$
|
||||
|
||||
this tend to be outdated :-\ ...
|
||||
|
||||
DOCS:
|
||||
=====
|
||||
|
||||
- use case of using XInclude to load for example a description.
|
||||
order document + product base -(XSLT)-> quote with XIncludes
|
||||
|
|
||||
HTML output with description of parts <---(XSLT)--
|
||||
|
||||
TODO:
|
||||
=====
|
||||
- XInclude at the SAX level (libSRVG)
|
||||
- fix the C code prototype to bring back doc/libxml-undocumented.txt
|
||||
to a reasonable level
|
||||
- Computation of base when HTTP redirect occurs, might affect HTTP
|
||||
interfaces.
|
||||
- Computation of base in XInclude. Relativization of URIs.
|
||||
- listing all attributes in a node.
|
||||
- Better checking of external parsed entities TAG 1234
|
||||
- Go through erratas and do the cleanup.
|
||||
http://www.w3.org/XML/xml-19980210-errata ... started ...
|
||||
- jamesh suggestion: SAX like functions to save a document ie. call a
|
||||
function to open a new element with given attributes, write character
|
||||
data, close last element, etc
|
||||
+ inversted SAX, initial patch in April 2002 archives.
|
||||
- htmlParseDoc has parameter encoding which is not used.
|
||||
Function htmlCreateDocParserCtxt ignore it.
|
||||
- fix realloc() usage.
|
||||
- Stricten the UTF8 conformance (Martin Duerst):
|
||||
http://www.w3.org/2001/06/utf-8-test/.
|
||||
The bad files are in http://www.w3.org/2001/06/utf-8-wrong/.
|
||||
- xml:id normalized value
|
||||
|
||||
TODO:
|
||||
=====
|
||||
|
||||
- move all string manipulation functions (xmlStrdup, xmlStrlen, etc.) to
|
||||
global.c. Bjorn noted that the following files depends on parser.o solely
|
||||
because of these string functions: entities.o, global.o, hash.o, tree.o,
|
||||
xmlIO.o, and xpath.o.
|
||||
|
||||
- Optimization of tag strings allocation ?
|
||||
|
||||
- maintain coherency of namespace when doing cut'n paste operations
|
||||
=> the functions are coded, but need testing
|
||||
|
||||
- function to rebuild the ID table
|
||||
- functions to rebuild the DTD hash tables (after DTD changes).
|
||||
|
||||
|
||||
EXTENSIONS:
|
||||
===========
|
||||
|
||||
- Tools to produce man pages from the SGML docs.
|
||||
|
||||
- Add Xpointer recognition/API
|
||||
|
||||
- Add Xlink recognition/API
|
||||
=> started adding an xlink.[ch] with a unified API for XML and HTML.
|
||||
it's crap :-(
|
||||
|
||||
- Implement XSchemas
|
||||
=> Really need to be done <grin/>
|
||||
- datatype are complete, but structure support is very limited.
|
||||
|
||||
- extend the shell with:
|
||||
- edit
|
||||
- load/save
|
||||
- mv (yum, yum, but it's harder because directories are ordered in
|
||||
our case, mvup and mvdown would be required)
|
||||
|
||||
|
||||
Done:
|
||||
=====
|
||||
|
||||
- Add HTML validation using the XHTML DTD
|
||||
- problem: do we want to keep and maintain the code for handling
|
||||
DTD/System ID cache directly in libxml ?
|
||||
=> not really done that way, but there are new APIs to check elements
|
||||
or attributes. Otherwise XHTML validation directly ...
|
||||
|
||||
- XML Schemas datatypes except Base64 and BinHex
|
||||
|
||||
- Relax NG validation
|
||||
|
||||
- XmlTextReader streaming API + validation
|
||||
|
||||
- Add a DTD cache prefilled with xhtml DTDs and entities and a program to
|
||||
manage them -> like the /usr/bin/install-catalog from SGML
|
||||
right place seems $datadir/xmldtds
|
||||
Maybe this is better left to user apps
|
||||
=> use a catalog instead , and xhtml1-dtd package
|
||||
|
||||
- Add output to XHTML
|
||||
=> XML serializer automatically recognize the DTd and apply the specific
|
||||
rules.
|
||||
|
||||
- Fix output of <tst val="x
y"/>
|
||||
|
||||
- compliance to XML-Namespace checking, see section 6 of
|
||||
http://www.w3.org/TR/REC-xml-names/
|
||||
|
||||
- Correct standalone checking/emitting (hard)
|
||||
2.9 Standalone Document Declaration
|
||||
|
||||
- Implement OASIS XML Catalog support
|
||||
http://www.oasis-open.org/committees/entity/
|
||||
|
||||
- Get OASIS testsuite to a more friendly result, check all the results
|
||||
once stable. the check-xml-test-suite.py script does this
|
||||
|
||||
- Implement XSLT
|
||||
=> libxslt
|
||||
|
||||
- Finish XPath
|
||||
=> attributes addressing troubles
|
||||
=> defaulted attributes handling
|
||||
=> namespace axis ?
|
||||
done as XSLT got debugged
|
||||
|
||||
- bug reported by Michael Meallin on validation problems
|
||||
=> Actually means I need to add support (and warn) for non-deterministic
|
||||
content model.
|
||||
- Handle undefined namespaces in entity contents better ... at least
|
||||
issue a warning
|
||||
- DOM needs
|
||||
int xmlPruneProp(xmlNodePtr node, xmlAtttrPtr attr);
|
||||
=> done it's actually xmlRemoveProp xmlUnsetProp xmlUnsetNsProp
|
||||
|
||||
- HTML: handling of Script and style data elements, need special code in
|
||||
the parser and saving functions (handling of < > " ' ...):
|
||||
http://www.w3.org/TR/html4/types.html#type-script
|
||||
Attributes are no problems since entities are accepted.
|
||||
- DOM needs
|
||||
xmlAttrPtr xmlNewDocProp(xmlDocPtr doc, const xmlChar *name, const xmlChar *value)
|
||||
- problem when parsing hrefs with & with the HTML parser (IRC ac)
|
||||
- If the internal encoding is not UTF8 saving to a given encoding doesn't
|
||||
work => fix to force UTF8 encoding ...
|
||||
done, added documentation too
|
||||
- Add an ASCII I/O encoder (asciiToUTF8 and UTF8Toascii)
|
||||
- Issue warning when using non-absolute namespaces URI.
|
||||
- the html parser should add <head> and <body> if they don't exist
|
||||
started, not finished.
|
||||
Done, the automatic closing is added and 3 testcases were inserted
|
||||
- Command to force the parser to stop parsing and ignore the rest of the file.
|
||||
xmlStopParser() should allow this, mostly untested
|
||||
- support for HTML empty attributes like <hr noshade>
|
||||
- plugged iconv() in for support of a large set of encodings.
|
||||
- xmlSwitchToEncoding() rewrite done
|
||||
- URI checkings (no fragments) rfc2396.txt
|
||||
- Added a clean mechanism for overload or added input methods:
|
||||
xmlRegisterInputCallbacks()
|
||||
- dynamically adapt the alloc entry point to use g_alloc()/g_free()
|
||||
if the programmer wants it:
|
||||
- use xmlMemSetup() to reset the routines used.
|
||||
- Check attribute normalization especially xmlGetProp()
|
||||
- Validity checking problems for NOTATIONS attributes
|
||||
- Validity checking problems for ENTITY ENTITIES attributes
|
||||
- Parsing of a well balanced chunk xmlParseBalancedChunkMemory()
|
||||
- URI module: validation, base, etc ... see uri.[ch]
|
||||
- turn tester into a generic program xmllint installed with libxml
|
||||
- extend validity checks to go through entities content instead of
|
||||
just labelling them PCDATA
|
||||
- Save Dtds using the children list instead of dumping the tables,
|
||||
order is preserved as well as comments and PIs
|
||||
- Wrote a notice of changes requires to go from 1.x to 2.x
|
||||
- make sure that all SAX callbacks are disabled if a WF error is detected
|
||||
- checking/handling of newline normalization
|
||||
http://localhost/www.xml.com/axml/target.html#sec-line-ends
|
||||
- correct checking of '&' '%' on entities content.
|
||||
- checking of PE/Nesting on entities declaration
|
||||
- checking/handling of xml:space
|
||||
- checking done.
|
||||
- handling done, not well tested
|
||||
- Language identification code, productions [33] to [38]
|
||||
=> done, the check has been added and report WFness errors
|
||||
- Conditional sections in DTDs [61] to [65]
|
||||
=> should this crap be really implemented ???
|
||||
=> Yep OASIS testsuite uses them
|
||||
- Allow parsed entities defined in the internal subset to override
|
||||
the ones defined in the external subset (DtD customization).
|
||||
=> This mean that the entity content should be computed only at
|
||||
use time, i.e. keep the orig string only at parse time and expand
|
||||
only when referenced from the external subset :-(
|
||||
Needed for complete use of most DTD from Eve Maler
|
||||
- Add regression tests for all WFC errors
|
||||
=> did some in test/WFC
|
||||
=> added OASIS testsuite routines
|
||||
http://xmlsoft.org/conf/result.html
|
||||
|
||||
- I18N: http://wap.trondheim.com/vaer/index.phtml is not XML and accepted
|
||||
by the XML parser, UTF-8 should be checked when there is no "encoding"
|
||||
declared !
|
||||
- Support for UTF-8 and UTF-16 encoding
|
||||
=> added some convertion routines provided by Martin Durst
|
||||
patched them, got fixes from @@@
|
||||
I plan to keep everything internally as UTF-8 (or ISO-Latin-X)
|
||||
this is slightly more costly but more compact, and recent processors
|
||||
efficiency is cache related. The key for good performances is keeping
|
||||
the data set small, so will I.
|
||||
=> the new progressive reading routines call the detection code
|
||||
is enabled, tested the ISO->UTF-8 stuff
|
||||
- External entities loading:
|
||||
- allow override by client code
|
||||
- make sure it is alled for all external entities referenced
|
||||
Done, client code should use xmlSetExternalEntityLoader() to set
|
||||
the default loading routine. It will be called each time an external
|
||||
entity entity resolution is triggered.
|
||||
- maintain ID coherency when removing/changing attributes
|
||||
The function used to deallocate attributes now check for it being an
|
||||
ID and removes it from the table.
|
||||
- push mode parsing i.e. non-blocking state based parser
|
||||
done, both for XML and HTML parsers. Use xmlCreatePushParserCtxt()
|
||||
and DoctRenderer() and html counterparts.
|
||||
The tester program now has a --push option to select that parser
|
||||
front-end. Douplicated tests to use both and check results are similar.
|
||||
|
||||
- Most of XPath, still see some troubles and occasionnal memleaks.
|
||||
- an XML shell, allowing to traverse/manipulate an XML document with
|
||||
a shell like interface, and using XPath for the anming syntax
|
||||
- use of readline and history added when available
|
||||
- the shell interface has been cleanly separated and moved to debugXML.c
|
||||
- HTML parser, should be fairly stable now
|
||||
- API to search the lang of an attribute
|
||||
- Collect IDs at parsing and maintain a table.
|
||||
PBM: maintain the table coherency
|
||||
PBM: how to detect ID types in absence of DtD !
|
||||
- Use it for XPath ID support
|
||||
- Add validity checking
|
||||
Should be finished now !
|
||||
- Add regression tests with entity substitutions
|
||||
|
||||
- External Parsed entities, either XML or external Subset [78] and [79]
|
||||
parsing the xmllang DtD now works, so it should be sufficient for
|
||||
most cases !
|
||||
|
||||
- progressive reading. The entity support is a first step toward
|
||||
asbtraction of an input stream. A large part of the context is still
|
||||
located on the stack, moving to a state machine and putting everyting
|
||||
in the parsing context should provide an adequate solution.
|
||||
=> Rather than progressive parsing, give more power to the SAX-like
|
||||
interface. Currently the DOM-like representation is built but
|
||||
=> it should be possible to define that only as a set of SAX callbacks
|
||||
and remove the tree creation from the parser code.
|
||||
DONE
|
||||
|
||||
- DOM support, instead of using a proprietary in memory
|
||||
format for the document representation, the parser should
|
||||
call a DOM API to actually build the resulting document.
|
||||
Then the parser becomes independent of the in-memory
|
||||
representation of the document. Even better using RPC's
|
||||
the parser can actually build the document in another
|
||||
program.
|
||||
=> Work started, now the internal representation is by default
|
||||
very near a direct DOM implementation. The DOM glue is implemented
|
||||
as a separate module. See the GNOME gdome module.
|
||||
|
||||
- C++ support : John Ehresman <jehresma@dsg.harvard.edu>
|
||||
- Updated code to follow more recent specs, added compatibility flag
|
||||
- Better error handling, use a dedicated, overridable error
|
||||
handling function.
|
||||
- Support for CDATA.
|
||||
- Keep track of line numbers for better error reporting.
|
||||
- Support for PI (SAX one).
|
||||
- Support for Comments (bad, should be in ASAP, they are parsed
|
||||
but not stored), should be configurable.
|
||||
- Improve the support of entities on save (+SAX).
|
||||
|
||||
@@ -0,0 +1,31 @@
|
||||
- implement counted transitions at the automata level
|
||||
|
||||
- Unicode:
|
||||
+ upgrade to 3.2
|
||||
+ improve the python script to generate better test
|
||||
expressions to check the list of ranges.
|
||||
|
||||
- Implement the interface at the SAX level
|
||||
|
||||
- Implement the missing parts in the Structure part
|
||||
+ all content model
|
||||
+ enumerations
|
||||
+ countless others c.f. the TODO scattered in the code
|
||||
|
||||
- Complete the Built-In datatype collections and Facets implementations
|
||||
|
||||
- Regression tests based on
|
||||
+ the primer:
|
||||
http://www.w3.org/TR/xmlschema-0/
|
||||
+ the Schemas Test Collection:
|
||||
http://www.w3.org/2001/05/xmlschema-test-collection/
|
||||
+ archives of the schemas-dev list
|
||||
|
||||
- Integrity constraints:
|
||||
+ what's that ? How need to read about it
|
||||
|
||||
- "formal" checking, i.e. go through the full Structure spec and
|
||||
bind code and associated parts of the Schemas spec
|
||||
|
||||
- go though the erratas
|
||||
http://www.w3.org/2001/05/xmlschema-errata
|
||||
@@ -0,0 +1,68 @@
|
||||
##----------------------------------------------------------------
|
||||
##
|
||||
##-- Filename: Makefile
|
||||
##
|
||||
##-- $Date: 2008/02/23 02:56:17 $
|
||||
##-- $Revision: 1.2 $
|
||||
##-- $Name: $
|
||||
##
|
||||
##----------------------------------------------------------------
|
||||
|
||||
NAME = xml2
|
||||
TOOL_FAMILY=gnu
|
||||
|
||||
include $(WIND_USR)/tool/gnu/make.$(VXCPU)
|
||||
|
||||
FLAGS = -Wall -g -Isrc -Isrc/include -D_REENTRANT=1
|
||||
#FLAGS = -Wall -O2 -Isrc -Isrc/include -D_REENTRANT=1
|
||||
|
||||
FLAGS += $(DEFINE_CC) $(CC_ARCH_SPEC) -MD -MP -D_VX_CPU=_VX_$(CPU) -D_VX_TOOL_FAMILY=gnu -D_VX_TOOL=$(TOOL)
|
||||
ifeq ($(VXTYPE),RTP)
|
||||
FLAGS += -mrtp -fpic -I$(WIND_USR)/h -I$(WIND_USR)/h/wrn/coreip
|
||||
else
|
||||
FLAGS += -D_WRS_KERNEL -I$(WIND_BASE)/target/h -I$(WIND_BASE)/target/h/wrn/coreip
|
||||
endif
|
||||
|
||||
ifeq ($(VXTYPE),RTP)
|
||||
ifeq ($(CPU),SH32)
|
||||
LIB_LDFLAGS += -L$(WIND_USR)/lib/sh/SH32/commonle/PIC
|
||||
else
|
||||
LIB_LDFLAGS += $(LD_LINK_PATH_ATEND) $(LD_PARTIAL_LAST_FLAGS)
|
||||
endif
|
||||
endif
|
||||
|
||||
OBJS = c14n.o catalog.o chvalid.o \
|
||||
debugXML.o dict.o DOCBparser.o \
|
||||
encoding.o entities.o error.o \
|
||||
globals.o \
|
||||
hash.o \
|
||||
legacy.o list.o \
|
||||
parser.o parserInternals.o pattern.o \
|
||||
relaxng.o \
|
||||
SAX2.o SAX.o schematron.o \
|
||||
threads.o tree.o \
|
||||
uri.o \
|
||||
valid.o \
|
||||
xinclude.o xlink.o xmlcatalog.o xmlIO.o \
|
||||
xmlmemory.o xmlmodule.o xmlreader.o xmlregexp.o \
|
||||
xmlsave.o xmlschemas.o xmlschemastypes.o xmlstring.o \
|
||||
xmlunicode.o xmlwriter.o xpath.o xpointer.o
|
||||
|
||||
all : lib$(NAME).so
|
||||
|
||||
init :
|
||||
mkdir -p objs
|
||||
|
||||
.PHONY : lib$(NAME).so
|
||||
|
||||
lib$(NAME).so : init $(patsubst %.o, objs/%.o, $(OBJS))
|
||||
$(CC) $(FLAGS) $(LIB_LDFLAGS) -shared -o $@ $(patsubst %.o, objs/%.o, $(OBJS))
|
||||
|
||||
(NAME).out : init $(patsubst %.o, objs/%.o, $(OBJS))
|
||||
$(CC) $(FLAGS) -o $@ $(patsubst %.o, objs/%.o, $(OBJS))
|
||||
|
||||
objs/%.o: src/%.c
|
||||
$(CC) $(FLAGS) -o $@ -c $<
|
||||
|
||||
clean:
|
||||
rm -fR *.so objs
|
||||
@@ -0,0 +1,86 @@
|
||||
libxml2 on VxWorks 6.4+
|
||||
|
||||
Here are my instructions for building on VxWorks.... I am very ashamed of
|
||||
how I did this because it is a complete hack, but it works great, so I
|
||||
can't complain too much.
|
||||
|
||||
General Information
|
||||
|
||||
1. The only way to build for VxWorks is to cross compile from a windows or
|
||||
linux system. We use a RedHat 5.1 workstation system as our build
|
||||
environment.
|
||||
|
||||
2. VxWorks 6.X has two main types of executable, DKMs (dynamic kernel
|
||||
modules), and RTPs (real-time processes). Kernel modules are the bread
|
||||
and butter of VxWorks, but they look nothing like processes/threads in
|
||||
normal UNIX/Windows systems. RTPs are more like processes that have
|
||||
memory protection, threads, etc. VxWorks 6.X also introduces some level
|
||||
of POSIX conformance to their environment. The POSIX conformance was the
|
||||
key for us to be able to port libxml2. We support accessing libxml2 from
|
||||
both DKMs and RTPs.
|
||||
|
||||
3. There are 2 compilers for VxWorks, the WindRiver compiler, and a port
|
||||
of the GNU toolchain, we have only tested and built with the GNU
|
||||
toolchain.
|
||||
|
||||
How To Build
|
||||
|
||||
1. Run the configure on your native linux system (this is the cheesy
|
||||
hack). Since the VxWorks GNU toolchain is very close in version to the
|
||||
one in red hat, it generates a good config.h file. We configured libxml2
|
||||
with the following to keep the size down, (but we have done basic testing
|
||||
with everything compiled in).
|
||||
|
||||
./configure --with-minimum --with-reader --with-writer --with-regexps
|
||||
--with-threads --with-thread-alloc
|
||||
|
||||
2. Rename the libxml2 folder to "src". This step is required for our
|
||||
replacement makefile to work.
|
||||
|
||||
3. Run the replacement makefile. I wrote a new makefile that sets all the
|
||||
proper vxworks defines and uses the correct compilers. The two defines on
|
||||
the make command line are to tell it which VxWorks Target (SH3.2 little
|
||||
endian), and the executable type. We have tested this code on PENTIUM2gnu
|
||||
and SH32gnule.
|
||||
|
||||
This makefile creates a shared library that runs on VxWorks: (libxml2.so)
|
||||
make -f Makefile.vxworks clean all VXCPU=SH32gnule VXTYPE=RTP
|
||||
|
||||
This makefile creates a kernel module that runs on VxWorks: (xml2.out)
|
||||
make -f Makefile.vxworks clean all VXCPU=SH32gnule VXTYPE=DKM
|
||||
|
||||
Important Notes
|
||||
|
||||
1. There are several ways that this process could be improved, but at the
|
||||
end of the day, we make products, not port libraries, so we did a meets
|
||||
minimum for our needs.
|
||||
|
||||
2. VxWorks is the devil, give me embedded linux every day.
|
||||
|
||||
3. No matter what I tried, I couldn't get the configure to pick up the
|
||||
VxWorks toolchain, and in my investigation, it has something to do with
|
||||
automake/autoconf, not any individual package. VxWorks doesn't play by
|
||||
the normal rules for building toolchains.
|
||||
|
||||
4. The PIC flag in VxWorks (especially for SH processors) is very
|
||||
important, and very troublesome. On linux, you can liberally use the PIC
|
||||
flag when compiling and the compiler/linker will ignore it as needed, on
|
||||
VxWorks if must always be on for shared libraries, and always be off for
|
||||
static libraries and executables.
|
||||
|
||||
5. If anyone wants to work on a better way to do the build of libxml2 for
|
||||
VxWorks, I'm happy to help as much as I can, but I'm not looking to
|
||||
support it myself.
|
||||
|
||||
Attached Files
|
||||
|
||||
1. To use my Makefile for vxworks, you should enter the vxworks
|
||||
environment (/opt/windriver/wrenv.linux -p vxworks-6.4 for me).
|
||||
2. Run: build.sh libxml2-2.6.32 SH32gnule RTP (where you have
|
||||
libxml2-2.6.32.tar.gz and the Makefile in the same directory as the script
|
||||
file).
|
||||
|
||||
Thanks,
|
||||
|
||||
Jim Wert Jr.
|
||||
JWert@ILSTechnology.com
|
||||
@@ -0,0 +1,85 @@
|
||||
LIBXML2=$1
|
||||
TARGETCPU=$2
|
||||
TARGETTYPE=$3
|
||||
|
||||
if [ -z "$2" ]; then
|
||||
TARGETCPU=SIMPENTIUMgnu
|
||||
fi
|
||||
|
||||
if [ -z "$3" ]; then
|
||||
TARGETTYPE=RTP
|
||||
fi
|
||||
|
||||
echo "LIBXML2 Version: ${LIBXML2}"
|
||||
echo "LIBXML2 Target CPU: ${TARGETCPU}"
|
||||
echo "LIBXML2 Target Type: ${TARGETTYPE}"
|
||||
|
||||
rm -fR src
|
||||
tar xvzf ${LIBXML2}.tar.gz
|
||||
mv ${LIBXML2} src
|
||||
cd src
|
||||
|
||||
./configure --with-minimum --with-reader --with-writer --with-regexps --with-threads --with-thread-alloc
|
||||
|
||||
find . -name '*.in' -exec rm -fR {} +
|
||||
find . -name '*.am' -exec rm -fR {} +
|
||||
rm -fR *.m4
|
||||
rm -fR *.pc
|
||||
rm -fR *.pl
|
||||
rm -fR *.py
|
||||
rm -fR *.spec
|
||||
rm -fR .deps
|
||||
rm -fR AUTHORS
|
||||
rm -fR bakefile
|
||||
rm -fR ChangeLog
|
||||
rm -fR config.guess
|
||||
rm -fR config.log
|
||||
rm -fR config.status
|
||||
rm -fR config.stub
|
||||
rm -fR config.sub
|
||||
rm -fR configure
|
||||
rm -fR COPYING
|
||||
rm -fR Copyright
|
||||
rm -fR depcomp
|
||||
rm -fR doc
|
||||
rm -fR example
|
||||
rm -fR INSTALL
|
||||
rm -fR install-sh
|
||||
rm -fR libxml.3
|
||||
rm -fR ltmain.sh
|
||||
rm -fR Makefile
|
||||
rm -fR Makefile.tests
|
||||
rm -fR macos
|
||||
rm -fR mkinstalldirs
|
||||
rm -fR missing
|
||||
rm -fR nanoftp.c
|
||||
rm -fR nanohttp.c
|
||||
rm -fR NEWS
|
||||
rm -fR python
|
||||
rm -fR README
|
||||
rm -fR README.tests
|
||||
rm -fR regressions.xml
|
||||
rm -fR result
|
||||
rm -fR runsuite.c
|
||||
rm -fR runtest.c
|
||||
rm -fR test
|
||||
rm -fR test*.c
|
||||
rm -fR TODO*
|
||||
rm -fR trio*
|
||||
rm -fR vms
|
||||
rm -fR win32
|
||||
rm -fR xml2*
|
||||
rm -fR xmllint.c
|
||||
rm -fR xstc
|
||||
|
||||
cd ..
|
||||
|
||||
make clean all VXCPU=${TARGETCPU} VXTYPE=${TARGETTYPE}
|
||||
|
||||
if [ "${TARGETTYPE}" = "RTP" ]; then
|
||||
cp libxml2.so ../../lib/.
|
||||
else
|
||||
cp xml2.out ../../bin/.
|
||||
fi
|
||||
|
||||
cp -R src/include/libxml ../../include/.
|
||||
@@ -0,0 +1,28 @@
|
||||
dnl Like AC_TRY_EVAL but also errors out if the compiler generates
|
||||
dnl _any_ output. Some compilers might issue warnings which we want
|
||||
dnl to catch.
|
||||
AC_DEFUN([AC_TRY_EVAL2],
|
||||
[{ (eval echo configure:__oline__: \"[$]$1\") 1>&AS_MESSAGE_LOG_FD; dnl
|
||||
(eval [$]$1) 2>&AS_MESSAGE_LOG_FD; _out=`eval [$]$1 2>&1` && test "x$_out" = x; }])
|
||||
|
||||
dnl Like AC_TRY_COMPILE but calls AC_TRY_EVAL2 instead of AC_TRY_EVAL
|
||||
AC_DEFUN([AC_TRY_COMPILE2],
|
||||
[cat > conftest.$ac_ext <<EOF
|
||||
[#]line __oline__ "configure"
|
||||
#include "confdefs.h"
|
||||
[$1]
|
||||
int main(void) {
|
||||
[$2]
|
||||
; return 0; }
|
||||
EOF
|
||||
if AC_TRY_EVAL2(ac_compile); then
|
||||
ifelse([$3], , :, [rm -rf conftest*
|
||||
$3])
|
||||
else
|
||||
echo "configure: failed program was:" >&AS_MESSAGE_LOG_FD
|
||||
cat conftest.$ac_ext >&AS_MESSAGE_LOG_FD
|
||||
ifelse([$4], , , [ rm -rf conftest*
|
||||
$4
|
||||
])dnl
|
||||
fi
|
||||
rm -f conftest*])
|
||||
81
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/autogen.sh
Normal file
81
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/autogen.sh
Normal file
@@ -0,0 +1,81 @@
|
||||
#!/bin/sh
|
||||
# Run this to generate all the initial makefiles, etc.
|
||||
|
||||
srcdir=`dirname $0`
|
||||
test -z "$srcdir" && srcdir=.
|
||||
|
||||
THEDIR=`pwd`
|
||||
cd $srcdir
|
||||
DIE=0
|
||||
|
||||
(autoconf --version) < /dev/null > /dev/null 2>&1 || {
|
||||
echo
|
||||
echo "You must have autoconf installed to compile libxml."
|
||||
echo "Download the appropriate package for your distribution,"
|
||||
echo "or see http://www.gnu.org/software/autoconf"
|
||||
DIE=1
|
||||
}
|
||||
|
||||
(libtoolize --version) < /dev/null > /dev/null 2>&1 || {
|
||||
echo
|
||||
echo "You must have libtool installed to compile libxml."
|
||||
echo "Download the appropriate package for your distribution,"
|
||||
echo "or see http://www.gnu.org/software/libtool"
|
||||
DIE=1
|
||||
}
|
||||
|
||||
(automake --version) < /dev/null > /dev/null 2>&1 || {
|
||||
echo
|
||||
DIE=1
|
||||
echo "You must have automake installed to compile libxml."
|
||||
echo "Download the appropriate package for your distribution,"
|
||||
echo "or see http://www.gnu.org/software/automake"
|
||||
}
|
||||
|
||||
if test "$DIE" -eq 1; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
test -f entities.c || {
|
||||
echo "You must run this script in the top-level libxml directory"
|
||||
exit 1
|
||||
}
|
||||
|
||||
EXTRA_ARGS=
|
||||
if test "x$1" = "x--system"; then
|
||||
shift
|
||||
prefix=/usr
|
||||
libdir=$prefix/lib
|
||||
sysconfdir=/etc
|
||||
localstatedir=/var
|
||||
if [ -d /usr/lib64 ]; then
|
||||
libdir=$prefix/lib64
|
||||
fi
|
||||
EXTRA_ARGS="--prefix=$prefix --sysconfdir=$sysconfdir --localstatedir=$localstatedir --libdir=$libdir"
|
||||
echo "Running ./configure with $EXTRA_ARGS $@"
|
||||
else
|
||||
if test -z "$NOCONFIGURE" && test -z "$*"; then
|
||||
echo "I am going to run ./configure with no arguments - if you wish "
|
||||
echo "to pass any to it, please specify them on the $0 command line."
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ ! -d $srcdir/m4 ]; then
|
||||
mkdir $srcdir/m4
|
||||
fi
|
||||
|
||||
# Replaced by autoreconf below
|
||||
autoreconf -if -Wall
|
||||
|
||||
cd $THEDIR
|
||||
|
||||
if test x$OBJ_DIR != x; then
|
||||
mkdir -p "$OBJ_DIR"
|
||||
cd "$OBJ_DIR"
|
||||
fi
|
||||
|
||||
if test -z "$NOCONFIGURE"; then
|
||||
$srcdir/configure $EXTRA_ARGS "$@"
|
||||
echo
|
||||
echo "Now type 'make' to compile libxml2."
|
||||
fi
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" ?>
|
||||
<!-- $Id$ -->
|
||||
|
||||
<bakefile-gen>
|
||||
|
||||
<disable-formats>gnu,dmars,cbx_unix,cbuilderx</disable-formats>
|
||||
<input>libxml2.bkl</input>
|
||||
|
||||
<!-- List of output formats to generate: -->
|
||||
<add-formats>
|
||||
borland,dmars,mingw,msvc,msvc6prj,watcom,cbuilderx,cbx_unix,gnu
|
||||
</add-formats>
|
||||
|
||||
|
||||
</bakefile-gen>
|
||||
@@ -0,0 +1,92 @@
|
||||
|
||||
LIBXML2 build system for Win32 README
|
||||
-------------------------------------
|
||||
|
||||
In this folder are stored all the files required to compile LIBXML2 with win32 compilers.
|
||||
Bakefile (http://bakefile.sourceforge.net) is used as makefile generator.
|
||||
|
||||
Supported makefiles:
|
||||
- makefile.vc for Microsoft NMAKE
|
||||
- makefile.bcc for Borland MAKE
|
||||
- makefile.wat for OpenWatcom MAKE
|
||||
- makefile.gcc for MinGW MINGW32-MAKE
|
||||
- all DSP & DSW for Microsoft VisualC++ 6.0 (can be used also with VS.NET AFAIK)
|
||||
|
||||
This readme is organized as:
|
||||
1.0 HOWTO compile LIBXML2 using makefiles <-- for users who want to build the library using *command-line*
|
||||
1.1 HOWTO compile LIBXML2 using an IDE <-- for users who want to build the library using an *IDE*
|
||||
1.2 HOWTO regenerate makefiles for LIBXML2 <-- for libxml2 mantainers/developers/advanced users
|
||||
|
||||
If you just want to compile the library (and the test programs) you should definitely avoid the
|
||||
section 1.1 and focus on the 1.0.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
1.0 HOWTO compile LIBXML2 using makefiles
|
||||
-----------------------------------------
|
||||
|
||||
Choose your preferred compiler among those actually supported (see above) and then run
|
||||
|
||||
mycompilermake -fmakefile.makefileext [options]
|
||||
|
||||
for a full list of the available options you should open with a notepad (or something like that)
|
||||
the makefile you want to use; at the beginning you should see a section which starts as:
|
||||
|
||||
# -------------------------------------------------------------------------
|
||||
# These are configurable options:
|
||||
# -------------------------------------------------------------------------
|
||||
|
||||
here you can find all the options actually used by that makefile.
|
||||
They can be customized when running the makefile writing something like:
|
||||
|
||||
nmake -fmakefile.vc BUILD=release
|
||||
mingw32-make -fmakefile.gcc BUILD=debug ICONV_DIR=c:\myiconv
|
||||
|
||||
or they can be permanently changed modifying the makefile.
|
||||
That's all: for any problem/compile-error/suggestion, write to
|
||||
frm@users.sourceforge.net with the word "libxml2" in the subject.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
1.1 HOWTO compile LIBXML2 using an IDE
|
||||
--------------------------------------
|
||||
|
||||
Actually only the Microsoft VisualC++ 6.0 project files are generated.
|
||||
In future other Integrated Development Environments (IDEs) will be supported as well.
|
||||
|
||||
With MSVC++ 6.0, you should open the DSW file and then set as the active project the
|
||||
"libxml2" project, if you want to build the library or one of the test projects if you
|
||||
want to run them.
|
||||
Using the command "Build->Set Active Configuration" you can choose one of the predefined
|
||||
configuration.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
1.2 HOWTO regenerate makefiles for LIBXML2
|
||||
------------------------------------------
|
||||
|
||||
Be sure to have installed Bakefile (http://bakefile.sourceforge.net).
|
||||
Just run the "bakefile_gen" command inside the folder containing the "libxml2.bkl" file.
|
||||
NOTE: if you want to remove all the makefiles, you can use the "bakefile_gen -c" command.
|
||||
|
||||
The template files used to generate all makefiles are only two:
|
||||
- libxml2.bkl (the main one)
|
||||
- Bakefiles.bkgen
|
||||
All the other files can be dinamically regenerated.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
If you have problems with the compilation of LIBXML2 under windows (using one of the supported compiler)
|
||||
please write to:
|
||||
|
||||
Francesco Montorsi <frm@users.sourceforge.net>
|
||||
|
||||
@@ -0,0 +1,749 @@
|
||||
<?xml version="1.0" ?>
|
||||
|
||||
<!-- Author: Francesco Montorsi <frm@users.sourceforge.net> -->
|
||||
<!-- Date: 30/8/2004 -->
|
||||
<!-- Last revision: 26/1/2005 -->
|
||||
|
||||
|
||||
<!-- LIBXML2 BAKEFILE -->
|
||||
<!-- -->
|
||||
<!-- The bakefile used to build the library and the test -->
|
||||
<!-- programs. The makefiles output is put: -->
|
||||
<!-- -->
|
||||
<!-- - in the ..\LIB folder -->
|
||||
<!-- - in the ..\BIN folder -->
|
||||
<!-- -->
|
||||
|
||||
<makefile>
|
||||
|
||||
<using module="datafiles"/>
|
||||
<requires version="0.1.5"/>
|
||||
|
||||
|
||||
<!-- This is a bakefile, that is, a generic template used to -->
|
||||
<!-- generate makefiles ALL supported compilers. -->
|
||||
<!-- To use this project file you need Bakefile installed. -->
|
||||
<!-- With the command "bakefile_gen" you can regen all the -->
|
||||
<!-- makefiles and project files. -->
|
||||
<!-- See http://bakefile.sourceforge.net for more info. -->
|
||||
|
||||
|
||||
<!--
|
||||
This file is divided in:
|
||||
- generic options
|
||||
- generic variables
|
||||
- libxml2 options
|
||||
- libxml2 variables
|
||||
- about config.h creation
|
||||
- templates
|
||||
- libxml2 library target
|
||||
- libxml2 test program targets
|
||||
-->
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
<!-- GENERIC OPTIONS -->
|
||||
<!-- -->
|
||||
|
||||
|
||||
<!-- This is a standard option that determines -->
|
||||
<!-- whether the user wants to build this library as -->
|
||||
<!-- a dll or as a static library. -->
|
||||
<option name="SHARED">
|
||||
<values>0,1</values>
|
||||
<values-description>,DLL</values-description>
|
||||
<default-value>0</default-value>
|
||||
<description>If set to zero a STATIC libxml library will be built</description>
|
||||
</option>
|
||||
|
||||
<!-- Configuration for building the bakefile with -->
|
||||
<!-- unicode strings or not (unicode or ansi). -->
|
||||
<option name="UNICODE">
|
||||
<values>0,1</values>
|
||||
<values-description>,Unicode</values-description>
|
||||
<default-value>0</default-value>
|
||||
<description>Compile Unicode build?</description>
|
||||
</option>
|
||||
|
||||
|
||||
<!-- There are several options that deal with build -->
|
||||
<!-- types. First, there's this one, BUILD. -->
|
||||
<!-- -->
|
||||
<!-- BUILD determines whether or not we want to build -->
|
||||
<!-- in release or debug mode. Note that in practice -->
|
||||
<!-- this means modifying the optimize tag, which by -->
|
||||
<!-- default is set to off. In this case debug means -->
|
||||
<!-- off (no optimizations), and release means speed -->
|
||||
<!-- (fast with inlining). There is also a size option -->
|
||||
<!-- that is not addressed in this example bakefile. -->
|
||||
<option name="BUILD">
|
||||
<values>debug,release</values>
|
||||
<values-description>Debug,Release</values-description>
|
||||
<default-value>release</default-value>
|
||||
<description>
|
||||
Type of compiled binaries
|
||||
</description>
|
||||
</option>
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
<!-- GENERIC VARIABLES -->
|
||||
<!-- -->
|
||||
|
||||
<!-- Set the ISDLL variable, so that we can use it -->
|
||||
<!-- inside an if statement later on (options not -->
|
||||
<!-- allowed in if statements). -->
|
||||
<set var="ISDLL" cond="SHARED=='1'">1</set>
|
||||
<set var="ISDLL" cond="SHARED=='0'">0</set>
|
||||
|
||||
<!-- The unicode define we want. By default bakefile -->
|
||||
<!-- makes variables an empty string, so if unicode -->
|
||||
<!-- is not defined $(UNICODE_DEFINE) would expand -->
|
||||
<!-- to nothing (literally). -->
|
||||
<set var="UNICODE_DEFINE">
|
||||
<if cond="FORMAT!='autoconf' and UNICODE=='1'">_UNICODE</if>
|
||||
</set>
|
||||
|
||||
<!-- The debug define we need with win32 compilers -->
|
||||
<!-- (on Linux, the wx-config program is used). -->
|
||||
<set var="DEBUG_DEFINE">
|
||||
<if cond="FORMAT!='autoconf' and BUILD=='debug'">
|
||||
__WXDEBUG__
|
||||
</if>
|
||||
</set>
|
||||
|
||||
<!-- Value we will use later on for the debug-info -->
|
||||
<!-- tag inside our templates. -->
|
||||
<set var="DEBUGINFO">
|
||||
<if cond="BUILD=='debug'">on</if>
|
||||
<if cond="BUILD=='release'">off</if>
|
||||
</set>
|
||||
|
||||
<!-- Value we will use later on for the debug-runtime -->
|
||||
<!-- tag inside our templates. -->
|
||||
<set var="DEBUGRUNTIME">
|
||||
<if cond="BUILD=='debug'">on</if>
|
||||
<if cond="BUILD=='release'">off</if>
|
||||
</set>
|
||||
|
||||
<!-- Value for optimize tag. -->
|
||||
<set var="OPTIMIZEFLAG">
|
||||
<if cond="BUILD=='debug'">off</if>
|
||||
<if cond="BUILD=='release'">speed</if>
|
||||
</set>
|
||||
|
||||
<!-- Level of warnings. Here we max it out in debug -->
|
||||
<!-- mode, and turn them off in release mode. -->
|
||||
<set var="WARNINGS">
|
||||
<if cond="BUILD=='debug'">max</if>
|
||||
<if cond="BUILD=='release'">no</if>
|
||||
</set>
|
||||
|
||||
<!-- Set MYCPPFLAGS as empty; maybe it will be filled later... -->
|
||||
<set var="MYCPPFLAGS"></set>
|
||||
<if cond="FORMAT=='mingw' or FORMAT=='autoconf'">
|
||||
|
||||
<!-- With GCC, settings warnings to MAX would force -->
|
||||
<!-- Bakefile to call GCC with "-W -Wall" which generates -->
|
||||
<!-- a *lot* of warnings about wxWidgets headers... -->
|
||||
<!-- this is why "-W -Wall" is here replaced by "-Wall". -->
|
||||
<set var="WARNINGS">default</set>
|
||||
<set var="MYCPPFLAGS">-Wall</set>
|
||||
</if>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
<!-- LIBXML2 OPTIONS -->
|
||||
<!-- -->
|
||||
<!-- Note #1: not all of them are used by win32 makefiles -->
|
||||
<!-- -->
|
||||
<!-- Note #2: since all combinations of non-path options are -->
|
||||
<!-- translated into different 'configurations' by -->
|
||||
<!-- Bakefile when using the MSVC6PRJ output, we must -->
|
||||
<!-- avoid to create a 10 MB libxml2.dsp file forcing -->
|
||||
<!-- some options to their default values... this -->
|
||||
<!-- behaviour can be overridden by the -->
|
||||
<!-- FULL_OPTIONS_SUPPORT -->
|
||||
<!-- variable defined below... -->
|
||||
|
||||
<set var="FULL_OPTIONS_SUPPORT">
|
||||
<if cond="FORMAT=='msvc6prj'">0</if>
|
||||
<if cond="FORMAT!='msvc6prj'">1</if>
|
||||
</set>
|
||||
|
||||
<option name="ICONV_DIR" category="path">
|
||||
<default-value>c:\iconv</default-value>
|
||||
<description>The iconv library main folder</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_TRIO">
|
||||
<values>0,1</values>
|
||||
<default-value>0</default-value>
|
||||
<description>Enable TRIO string manipulator</description>
|
||||
</option>
|
||||
|
||||
<!-- see the note #2 -->
|
||||
<if cond="FULL_OPTIONS_SUPPORT=='0'">
|
||||
<set var="WITH_THREADS">native</set>
|
||||
</if>
|
||||
<if cond="FULL_OPTIONS_SUPPORT=='1'">
|
||||
<option name="WITH_THREADS">
|
||||
<values>no,ctls,native,posix</values>
|
||||
<default-value>native</default-value>
|
||||
<description>Enable thread safety</description>
|
||||
</option>
|
||||
</if>
|
||||
|
||||
<option name="WITH_FTP">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable FTP client</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_HTTP">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable HTTP client</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_C14N">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable C14N support</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_CATALOG">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable catalog support</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_DOCB">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable DocBook support</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_XPATH">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable XPath support</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_XPTR">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable XPointer support</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_XINCLUDE">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable XInclude support</description>
|
||||
</option>
|
||||
|
||||
<!-- see the note #2 -->
|
||||
<if cond="FULL_OPTIONS_SUPPORT=='0'">
|
||||
<set var="WITH_ICONV">1</set>
|
||||
</if>
|
||||
<if cond="FULL_OPTIONS_SUPPORT=='1'">
|
||||
<option name="WITH_ICONV">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable iconv support</description>
|
||||
</option>
|
||||
</if>
|
||||
|
||||
<option name="WITH_ISO8859X">
|
||||
<values>0,1</values>
|
||||
<default-value>0</default-value>
|
||||
<description>Enable iso8859x support</description>
|
||||
</option>
|
||||
|
||||
<!-- see the note #2 -->
|
||||
<if cond="FULL_OPTIONS_SUPPORT=='0'">
|
||||
<set var="WITH_ZLIB">0</set>
|
||||
</if>
|
||||
<if cond="FULL_OPTIONS_SUPPORT=='1'">
|
||||
<option name="WITH_ZLIB">
|
||||
<values>0,1</values>
|
||||
<default-value>0</default-value>
|
||||
<description>Enable ZLIB support</description>
|
||||
</option>
|
||||
</if>
|
||||
|
||||
<option name="WITH_REGEXPS">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable regular expressions</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_TREE">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable tree api</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_READER">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable xmlReader api</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_WRITER">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable xmlWriter api</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_WALKER">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable xmlDocWalker api</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_PATTERN">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable xmlPattern api</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_PUSH">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable push api</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_VALID">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable DTD validation support</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_SAX1">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable SAX1 api</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_SCHEMAS">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable XML Schema support</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_LEGACY">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable deprecated APIs</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_OUTPUT">
|
||||
<values>0,1</values>
|
||||
<default-value>1</default-value>
|
||||
<description>Enable serialization support</description>
|
||||
</option>
|
||||
|
||||
<option name="WITH_PYTHON">
|
||||
<values>0,1</values>
|
||||
<default-value>0</default-value>
|
||||
<description>Build Python bindings</description>
|
||||
</option>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
<!-- LIBXML2 VARIABLES -->
|
||||
<!-- -->
|
||||
|
||||
<!-- Put all the objects files generated by -->
|
||||
<!-- the compilation in a subfolder of BUILD -->
|
||||
<set var="BUILDDIR">$(FORMAT)</set>
|
||||
|
||||
<!-- This variable is set to 1 when the current output writer supports -->
|
||||
<!-- the __DEFINE_ARG variable. Otherwise it's set to zero. -->
|
||||
<set var="HAS_DEFINE_ARG">
|
||||
<if cond="FORMAT!='msvc6prj'">1</if>
|
||||
<if cond="FORMAT=='msvc6prj'">0</if>
|
||||
</set>
|
||||
|
||||
<!-- The root directory of libxml2 -->
|
||||
<set var="XMLBASEDIR">..</set>
|
||||
|
||||
<!-- The directory where libxml2' tests will be put -->
|
||||
<set var="XMLTESTDIR">$(XMLBASEDIR)$(DIRSEP)bin</set>
|
||||
|
||||
<set var="LIBXML_MAJOR_VERSION">2</set>
|
||||
<set var="LIBXML_MINOR_VERSION">6</set>
|
||||
<set var="LIBXML_MICRO_VERSION">16</set>
|
||||
|
||||
<!-- some defines related to threads -->
|
||||
<set var="THREADS_DEF">
|
||||
<if cond="HAS_DEFINE_ARG=='1' and WITH_THREADS=='native'">
|
||||
$(__DEFINE_ARG)_REENTRANT $(__DEFINE_ARG)HAVE_WIN32_THREADS
|
||||
</if>
|
||||
<if cond="HAS_DEFINE_ARG=='1' and WITH_THREADS=='ctls'">
|
||||
$(__DEFINE_ARG)_REENTRANT $(__DEFINE_ARG)HAVE_WIN32_THREADS $(__DEFINE_ARG)HAVE_COMPILER_TLS
|
||||
</if>
|
||||
<if cond="HAS_DEFINE_ARG=='1' and WITH_THREADS=='posix'">
|
||||
$(__DEFINE_ARG)_REENTRANT $(__DEFINE_ARG)HAVE_PTHREAD_H
|
||||
</if>
|
||||
</set>
|
||||
<if cond="FORMAT=='borland'">
|
||||
<set var="THREADS_DEF">
|
||||
<if cond="WITH_THREADS=='native'">$(THREADS_DEF) $(__DEFINE_ARG)__MT__</if>
|
||||
<if cond="WITH_THREADS=='ctls'">$(THREADS_DEF) $(__DEFINE_ARG)__MT__</if>
|
||||
<if cond="WITH_THREADS=='posix'">$(THREADS_DEF) $(__DEFINE_ARG)__MT__</if>
|
||||
</set>
|
||||
</if>
|
||||
|
||||
|
||||
<!-- some other conditional defines -->
|
||||
<set var="ZLIB_DEF"><if cond="WITH_ZLIB=='1'">HAVE_ZLIB_H</if></set>
|
||||
<set var="DEBUG_DEF"><if cond="BUILD=='debug'">_DEBUG</if></set>
|
||||
<set var="DEBUG_DEF"><if cond="BUILD=='release'">NDEBUG</if></set>
|
||||
|
||||
<!-- this is very very important when compiling with MINGW: without this line,
|
||||
the test programs (and all the programs built with libxml2 which use xmlFree)
|
||||
won't build because of "undefined references to __xmlFree" -->
|
||||
<set var="STATIC_DEF"><if cond="SHARED=='0'">LIBXML_STATIC</if></set>
|
||||
|
||||
<!-- some conditional libraries dependencies -->
|
||||
<set var="ICONV_LIB"><if cond="WITH_ICONV=='1'">iconv</if></set>
|
||||
<set var="WSOCK32_LIB"><if cond="WITH_THREADS=='native'">wsock32</if></set>
|
||||
<set var="ZLIB_LIB"><if cond="WITH_ZLIB=='1'">zdll</if></set>
|
||||
<set var="POSIX_LIB"><if cond="WITH_THREADS=='posix'">pthreadVC</if></set>
|
||||
|
||||
<set var="XMLINCLUDEDIR">$(XMLBASEDIR)$(DIRSEP)include$(DIRSEP)libxml$(DIRSEP)</set>
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
<!-- ABOUT CONFIG.H HEADER CREATION -->
|
||||
<!-- -->
|
||||
|
||||
<set var="CONFIG_SRCNAME">win32config.h</set>
|
||||
<set var="CONFIG_DSTNAME">config.h</set>
|
||||
|
||||
<if cond="FORMAT!='msvc6prj' and FORMAT!='autoconf' and FORMAT!='gnu'">
|
||||
<copy-file-to-file id="setup">
|
||||
<!-- On win32 we need to manually copy a default config.h file -->
|
||||
<!-- from the include/mc/msw folder to include/mc -->
|
||||
<src>../include/$(CONFIG_SRCNAME)</src>
|
||||
<dst>../$(CONFIG_DSTNAME)</dst>
|
||||
<dependency-of>all</dependency-of>
|
||||
|
||||
<!-- With autoconf, we will use the configure script to translate -->
|
||||
<!-- include/mc/config.h.in to include/mc/config.h and thus we do -->
|
||||
<!-- not need to do anything here... -->
|
||||
</copy-file-to-file>
|
||||
</if>
|
||||
|
||||
<if cond="FORMAT!='msvc6prj'">
|
||||
|
||||
<mkdir id="setuplibdir"><dir>$(XMLBASEDIR)$(DIRSEP)lib</dir></mkdir>
|
||||
<mkdir id="setupbindir"><dir>$(XMLBASEDIR)$(DIRSEP)bin</dir></mkdir>
|
||||
|
||||
<!-- Creates all output folders -->
|
||||
<phony id="setupdirs">
|
||||
<dependency-of>all</dependency-of>
|
||||
<depends>setuplibdir</depends>
|
||||
<depends>setupbindir</depends>
|
||||
</phony>
|
||||
</if>
|
||||
|
||||
<!-- This defines a tag which includes headers on MSVC -->
|
||||
<!-- Note that $(value) is stuck in there by bakefile, -->
|
||||
<!-- and is the value between the beginning and end tag. -->
|
||||
<define-tag name="headers" rules="dll,lib,exe">
|
||||
<if cond="FORMAT=='msvc6prj'">
|
||||
<msvc-project-files>
|
||||
$(value)
|
||||
</msvc-project-files>
|
||||
</if>
|
||||
</define-tag>
|
||||
|
||||
<!-- Creates the following custom build rule for MSVC6PRJ file:
|
||||
copies ..\include\win32config.h into ..\config.h
|
||||
NOTE: this tag must be used before the <sources> tag if you want that the configuration
|
||||
file will be created before any other source file is compiled... -->
|
||||
<define-tag name="msvc-copy-setup-h" rules="dll,lib,action">
|
||||
<if cond="FORMAT=='msvc6prj'">
|
||||
<headers>$(XMLBASEDIR)\include\$(CONFIG_SRCNAME)</headers>
|
||||
<set var="__subdir">$(value)</set>
|
||||
<set var="_custom_build_files" append="1">$(XMLBASEDIR)\include\$(CONFIG_SRCNAME)</set>
|
||||
<set var="_custom_build____include_win32config_h">
|
||||
Creating the configuration file ..\$(CONFIG_DSTNAME) from ..\include\$(CONFIG_SRCNAME)
|
||||
InputPath=..\include\$(CONFIG_SRCNAME)
|
||||
|
||||
"..\$(CONFIG_DSTNAME)" : $(DOLLAR)(SOURCE) "$(DOLLAR)(INTDIR)" "$(DOLLAR)(OUTDIR)"
|
||||
$(TAB)copy "$(DOLLAR)(InputPath)" ..\$(CONFIG_DSTNAME)
|
||||
</set>
|
||||
</if>
|
||||
</define-tag>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
<!-- TEMPLATES -->
|
||||
<!-- -->
|
||||
|
||||
<!-- The basic template: used by all the targets -->
|
||||
<template id="base">
|
||||
<if cond="FORMAT=='mingw'">
|
||||
<define>HAVE_W32API_H</define>
|
||||
<ldflags>-mthreads</ldflags>
|
||||
</if>
|
||||
|
||||
<cxxflags>$(MYCPPFLAGS)</cxxflags>
|
||||
<warnings>$(WARNINGS)</warnings>
|
||||
<define>$(UNICODE_DEFINE)</define>
|
||||
<optimize>$(OPTIMIZEFLAG)</optimize>
|
||||
<debug-info>$(DEBUGINFO)</debug-info>
|
||||
<debug-runtime-libs>$(DEBUGRUNTIME)</debug-runtime-libs>
|
||||
</template>
|
||||
|
||||
<!-- The template used both by the library and by the test programs -->
|
||||
<template id="xml2" template="base">
|
||||
|
||||
<!-- -I & -L equivalents -->
|
||||
<include>$(XMLBASEDIR)$(DIRSEP)include</include>
|
||||
<include>$(ICONV_DIR)$(DIRSEP)include</include>
|
||||
<lib-path>$(ICONV_DIR)$(DIRSEP)lib</lib-path>
|
||||
|
||||
<!-- some conditional define flags -->
|
||||
<cflags>$(THREADS_DEF)</cflags>
|
||||
<define>$(ZLIB_DEF)</define>
|
||||
<define>$(DEBUG_DEF)</define>
|
||||
<define>$(STATIC_DEF)</define>
|
||||
|
||||
<if cond="HAS_DEFINE_ARG=='0'">
|
||||
|
||||
<!-- we are probably using an IDE output: defaults to WITH_THREADS=='native' -->
|
||||
<define>_REENTRANT</define>
|
||||
<define>HAVE_WIN32_THREADS</define>
|
||||
</if>
|
||||
|
||||
|
||||
<!-- these must always be defined on win32 -->
|
||||
<define>WIN32</define>
|
||||
<define>_WINDOWS</define>
|
||||
<define>_MBCS</define>
|
||||
|
||||
<if cond="FORMAT=='borland'">
|
||||
<define>_NO_VCL</define>
|
||||
<define>EILSEQ=2</define>
|
||||
</if>
|
||||
</template>
|
||||
|
||||
<!-- The template used by libxml2 test programs -->
|
||||
<template id="xml2test" template="xml2">
|
||||
<dirname>$(XMLTESTDIR)</dirname>
|
||||
<app-type>console</app-type>
|
||||
|
||||
<library>libxml2</library>
|
||||
|
||||
<sys-lib>$(ICONV_LIB)</sys-lib>
|
||||
<sys-lib>$(WSOCK32_LIB)</sys-lib>
|
||||
<sys-lib>$(ZLIB_LIB)</sys-lib>
|
||||
<sys-lib>$(POSIX_LIB)</sys-lib>
|
||||
</template>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
<!-- LIBXML2 LIBRARY TARGET -->
|
||||
<!-- -->
|
||||
|
||||
<lib id="libxml2" template="xml2">
|
||||
|
||||
<!-- this is useful only when using MSVC6PRJ -->
|
||||
<if cond="FORMAT=='msvc6prj'">
|
||||
<msvc-copy-setup-h/>
|
||||
<msvc-file-group>Config headers:*config.h</msvc-file-group>
|
||||
</if>
|
||||
<if cond="FORMAT!='msvc6prj'">
|
||||
<depends>setup</depends>
|
||||
<depends>setuplibdir</depends>
|
||||
</if>
|
||||
|
||||
<!-- output folder -->
|
||||
<dirname>$(XMLBASEDIR)$(DIRSEP)lib</dirname>
|
||||
|
||||
<!-- The output name must be "libxml2.lib" with all compilers.
|
||||
Since mingw format autoadds the "lib" prefix to the library
|
||||
name, we must intercept that case to avoid to get "liblibxml2.a" -->
|
||||
<if cond="FORMAT!='mingw'">
|
||||
<libname>libxml2</libname>
|
||||
</if>
|
||||
<if cond="FORMAT=='mingw'">
|
||||
<libname>xml2</libname>
|
||||
</if>
|
||||
|
||||
<!-- the list of source files to compile -->
|
||||
<sources>
|
||||
$(XMLBASEDIR)$(DIRSEP)c14n.c
|
||||
$(XMLBASEDIR)$(DIRSEP)catalog.c
|
||||
$(XMLBASEDIR)$(DIRSEP)chvalid.c
|
||||
$(XMLBASEDIR)$(DIRSEP)debugXML.c
|
||||
$(XMLBASEDIR)$(DIRSEP)dict.c
|
||||
$(XMLBASEDIR)$(DIRSEP)DOCBparser.c
|
||||
$(XMLBASEDIR)$(DIRSEP)encoding.c
|
||||
$(XMLBASEDIR)$(DIRSEP)entities.c
|
||||
$(XMLBASEDIR)$(DIRSEP)error.c
|
||||
$(XMLBASEDIR)$(DIRSEP)globals.c
|
||||
$(XMLBASEDIR)$(DIRSEP)hash.c
|
||||
$(XMLBASEDIR)$(DIRSEP)HTMLparser.c
|
||||
$(XMLBASEDIR)$(DIRSEP)HTMLtree.c
|
||||
$(XMLBASEDIR)$(DIRSEP)legacy.c
|
||||
$(XMLBASEDIR)$(DIRSEP)list.c
|
||||
$(XMLBASEDIR)$(DIRSEP)nanoftp.c
|
||||
$(XMLBASEDIR)$(DIRSEP)nanohttp.c
|
||||
$(XMLBASEDIR)$(DIRSEP)parser.c
|
||||
$(XMLBASEDIR)$(DIRSEP)parserInternals.c
|
||||
$(XMLBASEDIR)$(DIRSEP)pattern.c
|
||||
$(XMLBASEDIR)$(DIRSEP)relaxng.c
|
||||
$(XMLBASEDIR)$(DIRSEP)SAX2.c
|
||||
$(XMLBASEDIR)$(DIRSEP)SAX.c
|
||||
$(XMLBASEDIR)$(DIRSEP)threads.c
|
||||
$(XMLBASEDIR)$(DIRSEP)tree.c
|
||||
$(XMLBASEDIR)$(DIRSEP)uri.c
|
||||
$(XMLBASEDIR)$(DIRSEP)valid.c
|
||||
$(XMLBASEDIR)$(DIRSEP)xinclude.c
|
||||
$(XMLBASEDIR)$(DIRSEP)xlink.c
|
||||
$(XMLBASEDIR)$(DIRSEP)xmlIO.c
|
||||
$(XMLBASEDIR)$(DIRSEP)xmlmemory.c
|
||||
$(XMLBASEDIR)$(DIRSEP)xmlreader.c
|
||||
$(XMLBASEDIR)$(DIRSEP)xmlregexp.c
|
||||
$(XMLBASEDIR)$(DIRSEP)xmlsave.c
|
||||
$(XMLBASEDIR)$(DIRSEP)xmlschemas.c
|
||||
$(XMLBASEDIR)$(DIRSEP)xmlschemastypes.c
|
||||
$(XMLBASEDIR)$(DIRSEP)xmlunicode.c
|
||||
$(XMLBASEDIR)$(DIRSEP)xmlwriter.c
|
||||
$(XMLBASEDIR)$(DIRSEP)xpath.c
|
||||
$(XMLBASEDIR)$(DIRSEP)xpointer.c
|
||||
$(XMLBASEDIR)$(DIRSEP)xmlstring.c
|
||||
</sources>
|
||||
|
||||
<!-- the list of header files (for IDE projects) -->
|
||||
<headers>
|
||||
$(XMLINCLUDEDIR)c14n.h
|
||||
$(XMLINCLUDEDIR)catalog.h
|
||||
$(XMLINCLUDEDIR)chvalid.h
|
||||
$(XMLINCLUDEDIR)debugXML.h
|
||||
$(XMLINCLUDEDIR)dict.h
|
||||
$(XMLINCLUDEDIR)DOCBparser.h
|
||||
$(XMLINCLUDEDIR)encoding.h
|
||||
$(XMLINCLUDEDIR)entities.h
|
||||
$(XMLINCLUDEDIR)globals.h
|
||||
$(XMLINCLUDEDIR)hash.h
|
||||
$(XMLINCLUDEDIR)HTMLparser.h
|
||||
$(XMLINCLUDEDIR)HTMLtree.h
|
||||
$(XMLINCLUDEDIR)list.h
|
||||
$(XMLINCLUDEDIR)nanoftp.h
|
||||
$(XMLINCLUDEDIR)nanohttp.h
|
||||
$(XMLINCLUDEDIR)parser.h
|
||||
$(XMLINCLUDEDIR)parserInternals.h
|
||||
$(XMLINCLUDEDIR)pattern.h
|
||||
$(XMLINCLUDEDIR)relaxng.h
|
||||
$(XMLINCLUDEDIR)SAX.h
|
||||
$(XMLINCLUDEDIR)SAX2.h
|
||||
$(XMLINCLUDEDIR)schemasInternals.h
|
||||
$(XMLINCLUDEDIR)threads.h
|
||||
$(XMLINCLUDEDIR)tree.h
|
||||
$(XMLINCLUDEDIR)uri.h
|
||||
$(XMLINCLUDEDIR)valid.h
|
||||
$(XMLINCLUDEDIR)xinclude.h
|
||||
$(XMLINCLUDEDIR)xlink.h
|
||||
$(XMLINCLUDEDIR)xmlautomata.h
|
||||
$(XMLINCLUDEDIR)xmlerror.h
|
||||
$(XMLINCLUDEDIR)xmlexports.h
|
||||
$(XMLINCLUDEDIR)xmlIO.h
|
||||
$(XMLINCLUDEDIR)xmlmemory.h
|
||||
$(XMLINCLUDEDIR)xmlmodule.h
|
||||
$(XMLINCLUDEDIR)xmlreader.h
|
||||
$(XMLINCLUDEDIR)xmlregexp.h
|
||||
$(XMLINCLUDEDIR)xmlsave.h
|
||||
$(XMLINCLUDEDIR)xmlschemas.h
|
||||
$(XMLINCLUDEDIR)xmlschemastypes.h
|
||||
$(XMLINCLUDEDIR)xmlstring.h
|
||||
$(XMLINCLUDEDIR)xmlunicode.h
|
||||
$(XMLINCLUDEDIR)xmlversion.h
|
||||
$(XMLINCLUDEDIR)xmlwriter.h
|
||||
$(XMLINCLUDEDIR)xpath.h
|
||||
$(XMLINCLUDEDIR)xpathInternals.h
|
||||
$(XMLINCLUDEDIR)xpointer.h
|
||||
</headers>
|
||||
|
||||
<!-- these ones are not inside the include/libxml folder -->
|
||||
<headers>
|
||||
$(XMLBASEDIR)$(DIRSEP)libxml.h
|
||||
$(XMLBASEDIR)$(DIRSEP)triodef.h
|
||||
$(XMLBASEDIR)$(DIRSEP)trionan.h
|
||||
$(XMLBASEDIR)$(DIRSEP)include$(DIRSEP)wsockcompat.h
|
||||
</headers>
|
||||
</lib>
|
||||
|
||||
|
||||
|
||||
<!-- -->
|
||||
<!-- LIBXML2 test programs -->
|
||||
<!-- -->
|
||||
|
||||
<set var="BUILD_ALL_TESTS">
|
||||
|
||||
<!-- when using full options support with MSVC6PRJ we should
|
||||
avoid to create all the DSP files required for the test
|
||||
programs: they would take a _lot_ of space !! -->
|
||||
<if cond="FORMAT=='msvc6prj' and FULL_OPTIONS_SUPPORT=='1'">0</if>
|
||||
|
||||
<!-- when creating a makefile or using MSVC6PRJ with limited
|
||||
options support, then we can build all the tests safely -->
|
||||
<if cond="FORMAT!='msvc6prj' or FULL_OPTIONS_SUPPORT=='0'">1</if>
|
||||
|
||||
</set>
|
||||
|
||||
<if cond="BUILD_ALL_TESTS=='1'">
|
||||
|
||||
<exe id="testAutomata" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testAutomata.c</sources></exe>
|
||||
<exe id="testC14N" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testC14N.c</sources></exe>
|
||||
<exe id="testHTML" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testHTML.c</sources></exe>
|
||||
<exe id="testReader" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testReader.c</sources></exe>
|
||||
<exe id="testRegexp" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testRegexp.c</sources></exe>
|
||||
<exe id="testRelax" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testRelax.c</sources></exe>
|
||||
<exe id="testSax" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testSax.c</sources></exe>
|
||||
<exe id="testSchemas" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testSchemas.c</sources></exe>
|
||||
<exe id="testURI" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testURI.c</sources></exe>
|
||||
<exe id="testXPath" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testXPath.c</sources></exe>
|
||||
<exe id="xmllint" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)xmllint.c</sources></exe>
|
||||
|
||||
<if cond="FORMAT=='autoconf'">
|
||||
<exe id="testdso" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testdso.c</sources></exe>
|
||||
</if>
|
||||
|
||||
<!-- FIXME:
|
||||
<exe id="testModule" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testModule.c</sources></exe>
|
||||
|
||||
<if cond="WITH_THREADS=='posix'">
|
||||
<exe id="testThreads" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testThreads.c</sources></exe>
|
||||
</if>
|
||||
<if cond="WITH_THREADS=='ctls' or WITH_THREADS=='native'">
|
||||
<exe id="testThreadsWin32" template="xml2test"><sources>$(XMLBASEDIR)$(DIRSEP)testThreadsWin32.c</sources></exe>
|
||||
</if>
|
||||
-->
|
||||
</if>
|
||||
|
||||
</makefile>
|
||||
1304
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/buf.c
Normal file
1304
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/buf.c
Normal file
File diff suppressed because it is too large
Load Diff
72
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/buf.h
Normal file
72
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/buf.h
Normal file
@@ -0,0 +1,72 @@
|
||||
/*
|
||||
* Summary: Internal Interfaces for memory buffers in libxml2
|
||||
* Description: this module describes most of the new xmlBuf buffer
|
||||
* entry points, those are private routines, with a
|
||||
* few exceptions exported in tree.h. This was added
|
||||
* in 2.9.0.
|
||||
*
|
||||
* Copy: See Copyright for the status of this software.
|
||||
*
|
||||
* Author: Daniel Veillard
|
||||
*/
|
||||
|
||||
#ifndef __XML_BUF_H__
|
||||
#define __XML_BUF_H__
|
||||
|
||||
#include <libxml/tree.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
xmlBufPtr xmlBufCreate(void);
|
||||
xmlBufPtr xmlBufCreateSize(size_t size);
|
||||
xmlBufPtr xmlBufCreateStatic(void *mem, size_t size);
|
||||
|
||||
int xmlBufSetAllocationScheme(xmlBufPtr buf,
|
||||
xmlBufferAllocationScheme scheme);
|
||||
int xmlBufGetAllocationScheme(xmlBufPtr buf);
|
||||
|
||||
void xmlBufFree(xmlBufPtr buf);
|
||||
void xmlBufEmpty(xmlBufPtr buf);
|
||||
|
||||
/* size_t xmlBufShrink(xmlBufPtr buf, size_t len); */
|
||||
int xmlBufGrow(xmlBufPtr buf, int len);
|
||||
int xmlBufInflate(xmlBufPtr buf, size_t len);
|
||||
int xmlBufResize(xmlBufPtr buf, size_t len);
|
||||
|
||||
int xmlBufAdd(xmlBufPtr buf, const xmlChar *str, int len);
|
||||
int xmlBufAddHead(xmlBufPtr buf, const xmlChar *str, int len);
|
||||
int xmlBufCat(xmlBufPtr buf, const xmlChar *str);
|
||||
int xmlBufCCat(xmlBufPtr buf, const char *str);
|
||||
int xmlBufWriteCHAR(xmlBufPtr buf, const xmlChar *string);
|
||||
int xmlBufWriteChar(xmlBufPtr buf, const char *string);
|
||||
int xmlBufWriteQuotedString(xmlBufPtr buf, const xmlChar *string);
|
||||
|
||||
size_t xmlBufAvail(const xmlBufPtr buf);
|
||||
size_t xmlBufLength(const xmlBufPtr buf);
|
||||
/* size_t xmlBufUse(const xmlBufPtr buf); */
|
||||
int xmlBufIsEmpty(const xmlBufPtr buf);
|
||||
int xmlBufAddLen(xmlBufPtr buf, size_t len);
|
||||
int xmlBufErase(xmlBufPtr buf, size_t len);
|
||||
|
||||
/* const xmlChar * xmlBufContent(const xmlBufPtr buf); */
|
||||
/* const xmlChar * xmlBufEnd(const xmlBufPtr buf); */
|
||||
|
||||
xmlChar * xmlBufDetach(xmlBufPtr buf);
|
||||
|
||||
size_t xmlBufDump(FILE *file, xmlBufPtr buf);
|
||||
|
||||
xmlBufPtr xmlBufFromBuffer(xmlBufferPtr buffer);
|
||||
xmlBufferPtr xmlBufBackToBuffer(xmlBufPtr buf);
|
||||
int xmlBufMergeBuffer(xmlBufPtr buf, xmlBufferPtr buffer);
|
||||
|
||||
int xmlBufResetInput(xmlBufPtr buf, xmlParserInputPtr input);
|
||||
size_t xmlBufGetInputBase(xmlBufPtr buf, xmlParserInputPtr input);
|
||||
int xmlBufSetInputBaseCur(xmlBufPtr buf, xmlParserInputPtr input,
|
||||
size_t base, size_t cur);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* __XML_BUF_H__ */
|
||||
|
||||
122
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/build_glob.py
Normal file
122
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/build_glob.py
Normal file
@@ -0,0 +1,122 @@
|
||||
#! /usr/bin/env python
|
||||
###
|
||||
#
|
||||
# build_glob.py : Build the global_functions.h and global_functions.c
|
||||
# files which are required to implement the user
|
||||
# interface to global variables now that thread specific
|
||||
# data (TSD) is used to emulate global state.
|
||||
#
|
||||
# See Copyright for the status of this software.
|
||||
# Gary.Pennington@sun.com
|
||||
###
|
||||
import os, string
|
||||
|
||||
class globvar:
|
||||
def __init__(self, type, name):
|
||||
self.type=type
|
||||
self.name=name
|
||||
|
||||
def striplinesep(line):
|
||||
while line and line[-1] in ('\r','\n'):
|
||||
line = line[:-1]
|
||||
return line
|
||||
|
||||
def writeline(file, line=None):
|
||||
if line:
|
||||
file.write(line)
|
||||
file.write("\n")
|
||||
|
||||
if __name__ == "__main__":
|
||||
globals={}
|
||||
global_data=open("global.data").readlines()
|
||||
global_code=open("globals.c").readlines()
|
||||
global_hdr=open("include/libxml/globals.h").readlines()
|
||||
global_functions_hdr=open("include/libxml/globals.h", "w+")
|
||||
global_functions_impl=open("globals.c", "w+")
|
||||
|
||||
#
|
||||
# Rebuild the beginning of the file up to the
|
||||
# Automatically generated string
|
||||
#
|
||||
for line in global_hdr:
|
||||
line = striplinesep(line)
|
||||
if line == " * Automatically generated by build_glob.py.":
|
||||
break
|
||||
writeline(global_functions_hdr, line)
|
||||
|
||||
writeline(global_functions_hdr, " * Automatically generated by build_glob.py.")
|
||||
writeline(global_functions_hdr, " * Do not modify the previous line.")
|
||||
writeline(global_functions_hdr, " */")
|
||||
writeline(global_functions_hdr)
|
||||
|
||||
for line in global_code:
|
||||
line = striplinesep(line)
|
||||
if line == " * Automatically generated by build_glob.py.":
|
||||
break
|
||||
writeline(global_functions_impl, line)
|
||||
|
||||
writeline(global_functions_impl, " * Automatically generated by build_glob.py.")
|
||||
writeline(global_functions_impl, " * Do not modify the previous line.")
|
||||
writeline(global_functions_impl, " */")
|
||||
writeline(global_functions_impl)
|
||||
|
||||
# Now process the data and write it to the appropriate output file
|
||||
for line in global_data:
|
||||
if line[0]=='#':
|
||||
continue
|
||||
line = striplinesep(line)
|
||||
fields = string.split(line, ",")
|
||||
# Update the header file
|
||||
writeline(global_functions_hdr)
|
||||
global_functions_hdr.write("extern "+fields[0]+" *")
|
||||
if fields[2]:
|
||||
global_functions_hdr.write("(*")
|
||||
global_functions_hdr.write("__"+fields[1]+"(void)")
|
||||
if fields[2]:
|
||||
global_functions_hdr.write(")"+fields[2])
|
||||
writeline(global_functions_hdr,";")
|
||||
writeline(global_functions_hdr, "#ifdef LIBXML_THREAD_ENABLED")
|
||||
writeline(global_functions_hdr,"#define "+fields[1]+" \\")
|
||||
writeline(global_functions_hdr,"(*(__"+fields[1]+"()))")
|
||||
writeline(global_functions_hdr,"#else")
|
||||
if fields[2]:
|
||||
writeline(global_functions_hdr,"LIBXML_DLL_IMPORT extern "+fields[0]+" "+fields[1]+fields[2]+";")
|
||||
else:
|
||||
writeline(global_functions_hdr,"LIBXML_DLL_IMPORT extern "+fields[0]+" "+fields[1]+";")
|
||||
writeline(global_functions_hdr,"#endif")
|
||||
# set/get for per-thread global defaults
|
||||
if fields[3]:
|
||||
writeline(global_functions_hdr,fields[0]+" "+fields[1][:3]+"ThrDef"+fields[1][3:]+"("+fields[0]+" v);")
|
||||
# Update the implementation file
|
||||
writeline(global_functions_impl)
|
||||
# writeline(global_functions_impl, "extern "+fields[0]+" "+fields[1]+";")
|
||||
writeline(global_functions_impl, "#undef\t"+fields[1])
|
||||
writeline(global_functions_impl, fields[0]+" *")
|
||||
if fields[2]:
|
||||
global_functions_impl.write("(*")
|
||||
global_functions_impl.write("__"+fields[1]+"(void)")
|
||||
if fields[2]:
|
||||
writeline(global_functions_impl, ")[]")
|
||||
writeline(global_functions_impl, " {")
|
||||
writeline(global_functions_impl, " if (IS_MAIN_THREAD)")
|
||||
writeline(global_functions_impl, "\treturn (&"+fields[1]+");")
|
||||
writeline(global_functions_impl, " else")
|
||||
writeline(global_functions_impl, "\treturn (&xmlGetGlobalState()->"+fields[1]+");")
|
||||
writeline(global_functions_impl, "}")
|
||||
# set/get for per-thread global defaults
|
||||
if fields[3]:
|
||||
writeline(global_functions_impl,fields[0]+" "+fields[1][:3]+"ThrDef"+fields[1][3:]+"("+fields[0]+" v) {")
|
||||
writeline(global_functions_impl," "+fields[0]+" ret;");
|
||||
writeline(global_functions_impl," xmlMutexLock(xmlThrDefMutex);")
|
||||
writeline(global_functions_impl," ret = "+fields[1][:3]+fields[1][3:]+"ThrDef;")
|
||||
writeline(global_functions_impl," "+fields[1][:3]+fields[1][3:]+"ThrDef = v;")
|
||||
writeline(global_functions_impl," xmlMutexUnlock(xmlThrDefMutex);")
|
||||
writeline(global_functions_impl," return ret;")
|
||||
writeline(global_functions_impl,"}")
|
||||
# Terminate the header file with appropriate boilerplate
|
||||
writeline(global_functions_hdr)
|
||||
writeline(global_functions_hdr, "#ifdef __cplusplus")
|
||||
writeline(global_functions_hdr, "}")
|
||||
writeline(global_functions_hdr, "#endif")
|
||||
writeline(global_functions_hdr)
|
||||
writeline(global_functions_hdr, "#endif /* __XML_GLOBALS_H */")
|
||||
2238
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/c14n.c
Normal file
2238
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/c14n.c
Normal file
File diff suppressed because it is too large
Load Diff
3820
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/catalog.c
Normal file
3820
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/catalog.c
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,394 @@
|
||||
#!/usr/bin/python
|
||||
import sys
|
||||
import time
|
||||
import os
|
||||
import string
|
||||
import StringIO
|
||||
sys.path.insert(0, "python")
|
||||
import libxml2
|
||||
|
||||
# Memory debug specific
|
||||
libxml2.debugMemory(1)
|
||||
debug = 0
|
||||
verbose = 0
|
||||
quiet = 1
|
||||
|
||||
#
|
||||
# the testsuite description
|
||||
#
|
||||
CONF=os.path.join(os.path.dirname(__file__), "test/relaxng/OASIS/spectest.xml")
|
||||
LOG="check-relaxng-test-suite.log"
|
||||
RES="relaxng-test-results.xml"
|
||||
|
||||
log = open(LOG, "w")
|
||||
nb_schemas_tests = 0
|
||||
nb_schemas_success = 0
|
||||
nb_schemas_failed = 0
|
||||
nb_instances_tests = 0
|
||||
nb_instances_success = 0
|
||||
nb_instances_failed = 0
|
||||
|
||||
libxml2.lineNumbersDefault(1)
|
||||
#
|
||||
# Error and warnng callbacks
|
||||
#
|
||||
def callback(ctx, str):
|
||||
global log
|
||||
log.write("%s%s" % (ctx, str))
|
||||
|
||||
libxml2.registerErrorHandler(callback, "")
|
||||
|
||||
#
|
||||
# Resolver callback
|
||||
#
|
||||
resources = {}
|
||||
def resolver(URL, ID, ctxt):
|
||||
global resources
|
||||
|
||||
if string.find(URL, '#') != -1:
|
||||
URL = URL[0:string.find(URL, '#')]
|
||||
if resources.has_key(URL):
|
||||
return(StringIO.StringIO(resources[URL]))
|
||||
log.write("Resolver failure: asked %s\n" % (URL))
|
||||
log.write("resources: %s\n" % (resources))
|
||||
return None
|
||||
|
||||
#
|
||||
# Load the previous results
|
||||
#
|
||||
#results = {}
|
||||
#previous = {}
|
||||
#
|
||||
#try:
|
||||
# res = libxml2.parseFile(RES)
|
||||
#except:
|
||||
# log.write("Could not parse %s" % (RES))
|
||||
|
||||
#
|
||||
# handle a valid instance
|
||||
#
|
||||
def handle_valid(node, schema):
|
||||
global log
|
||||
global nb_instances_success
|
||||
global nb_instances_failed
|
||||
|
||||
instance = ""
|
||||
child = node.children
|
||||
while child != None:
|
||||
if child.type != 'text':
|
||||
instance = instance + child.serialize()
|
||||
child = child.next
|
||||
|
||||
try:
|
||||
doc = libxml2.parseDoc(instance)
|
||||
except:
|
||||
doc = None
|
||||
|
||||
if doc == None:
|
||||
log.write("\nFailed to parse correct instance:\n-----\n")
|
||||
log.write(instance)
|
||||
log.write("\n-----\n")
|
||||
nb_instances_failed = nb_instances_failed + 1
|
||||
return
|
||||
|
||||
try:
|
||||
ctxt = schema.relaxNGNewValidCtxt()
|
||||
ret = doc.relaxNGValidateDoc(ctxt)
|
||||
except:
|
||||
ret = -1
|
||||
if ret != 0:
|
||||
log.write("\nFailed to validate correct instance:\n-----\n")
|
||||
log.write(instance)
|
||||
log.write("\n-----\n")
|
||||
nb_instances_failed = nb_instances_failed + 1
|
||||
else:
|
||||
nb_instances_success = nb_instances_success + 1
|
||||
doc.freeDoc()
|
||||
|
||||
#
|
||||
# handle an invalid instance
|
||||
#
|
||||
def handle_invalid(node, schema):
|
||||
global log
|
||||
global nb_instances_success
|
||||
global nb_instances_failed
|
||||
|
||||
instance = ""
|
||||
child = node.children
|
||||
while child != None:
|
||||
if child.type != 'text':
|
||||
instance = instance + child.serialize()
|
||||
child = child.next
|
||||
|
||||
try:
|
||||
doc = libxml2.parseDoc(instance)
|
||||
except:
|
||||
doc = None
|
||||
|
||||
if doc == None:
|
||||
log.write("\nStrange: failed to parse incorrect instance:\n-----\n")
|
||||
log.write(instance)
|
||||
log.write("\n-----\n")
|
||||
return
|
||||
|
||||
try:
|
||||
ctxt = schema.relaxNGNewValidCtxt()
|
||||
ret = doc.relaxNGValidateDoc(ctxt)
|
||||
except:
|
||||
ret = -1
|
||||
if ret == 0:
|
||||
log.write("\nFailed to detect validation problem in instance:\n-----\n")
|
||||
log.write(instance)
|
||||
log.write("\n-----\n")
|
||||
nb_instances_failed = nb_instances_failed + 1
|
||||
else:
|
||||
nb_instances_success = nb_instances_success + 1
|
||||
doc.freeDoc()
|
||||
|
||||
#
|
||||
# handle an incorrect test
|
||||
#
|
||||
def handle_correct(node):
|
||||
global log
|
||||
global nb_schemas_success
|
||||
global nb_schemas_failed
|
||||
|
||||
schema = ""
|
||||
child = node.children
|
||||
while child != None:
|
||||
if child.type != 'text':
|
||||
schema = schema + child.serialize()
|
||||
child = child.next
|
||||
|
||||
try:
|
||||
rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema))
|
||||
rngs = rngp.relaxNGParse()
|
||||
except:
|
||||
rngs = None
|
||||
if rngs == None:
|
||||
log.write("\nFailed to compile correct schema:\n-----\n")
|
||||
log.write(schema)
|
||||
log.write("\n-----\n")
|
||||
nb_schemas_failed = nb_schemas_failed + 1
|
||||
else:
|
||||
nb_schemas_success = nb_schemas_success + 1
|
||||
return rngs
|
||||
|
||||
def handle_incorrect(node):
|
||||
global log
|
||||
global nb_schemas_success
|
||||
global nb_schemas_failed
|
||||
|
||||
schema = ""
|
||||
child = node.children
|
||||
while child != None:
|
||||
if child.type != 'text':
|
||||
schema = schema + child.serialize()
|
||||
child = child.next
|
||||
|
||||
try:
|
||||
rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema))
|
||||
rngs = rngp.relaxNGParse()
|
||||
except:
|
||||
rngs = None
|
||||
if rngs != None:
|
||||
log.write("\nFailed to detect schema error in:\n-----\n")
|
||||
log.write(schema)
|
||||
log.write("\n-----\n")
|
||||
nb_schemas_failed = nb_schemas_failed + 1
|
||||
else:
|
||||
# log.write("\nSuccess detecting schema error in:\n-----\n")
|
||||
# log.write(schema)
|
||||
# log.write("\n-----\n")
|
||||
nb_schemas_success = nb_schemas_success + 1
|
||||
return None
|
||||
|
||||
#
|
||||
# resource handling: keep a dictionary of URL->string mappings
|
||||
#
|
||||
def handle_resource(node, dir):
|
||||
global resources
|
||||
|
||||
try:
|
||||
name = node.prop('name')
|
||||
except:
|
||||
name = None
|
||||
|
||||
if name == None or name == '':
|
||||
log.write("resource has no name")
|
||||
return;
|
||||
|
||||
if dir != None:
|
||||
# name = libxml2.buildURI(name, dir)
|
||||
name = dir + '/' + name
|
||||
|
||||
res = ""
|
||||
child = node.children
|
||||
while child != None:
|
||||
if child.type != 'text':
|
||||
res = res + child.serialize()
|
||||
child = child.next
|
||||
resources[name] = res
|
||||
|
||||
#
|
||||
# dir handling: pseudo directory resources
|
||||
#
|
||||
def handle_dir(node, dir):
|
||||
try:
|
||||
name = node.prop('name')
|
||||
except:
|
||||
name = None
|
||||
|
||||
if name == None or name == '':
|
||||
log.write("resource has no name")
|
||||
return;
|
||||
|
||||
if dir != None:
|
||||
# name = libxml2.buildURI(name, dir)
|
||||
name = dir + '/' + name
|
||||
|
||||
dirs = node.xpathEval('dir')
|
||||
for dir in dirs:
|
||||
handle_dir(dir, name)
|
||||
res = node.xpathEval('resource')
|
||||
for r in res:
|
||||
handle_resource(r, name)
|
||||
|
||||
#
|
||||
# handle a testCase element
|
||||
#
|
||||
def handle_testCase(node):
|
||||
global nb_schemas_tests
|
||||
global nb_instances_tests
|
||||
global resources
|
||||
|
||||
sections = node.xpathEval('string(section)')
|
||||
log.write("\n ======== test %d line %d section %s ==========\n" % (
|
||||
|
||||
nb_schemas_tests, node.lineNo(), sections))
|
||||
resources = {}
|
||||
if debug:
|
||||
print "test %d line %d" % (nb_schemas_tests, node.lineNo())
|
||||
|
||||
dirs = node.xpathEval('dir')
|
||||
for dir in dirs:
|
||||
handle_dir(dir, None)
|
||||
res = node.xpathEval('resource')
|
||||
for r in res:
|
||||
handle_resource(r, None)
|
||||
|
||||
tsts = node.xpathEval('incorrect')
|
||||
if tsts != []:
|
||||
if len(tsts) != 1:
|
||||
print "warning test line %d has more than one <incorrect> example" %(node.lineNo())
|
||||
schema = handle_incorrect(tsts[0])
|
||||
else:
|
||||
tsts = node.xpathEval('correct')
|
||||
if tsts != []:
|
||||
if len(tsts) != 1:
|
||||
print "warning test line %d has more than one <correct> example"% (node.lineNo())
|
||||
schema = handle_correct(tsts[0])
|
||||
else:
|
||||
print "warning <testCase> line %d has no <correct> nor <incorrect> child" % (node.lineNo())
|
||||
|
||||
nb_schemas_tests = nb_schemas_tests + 1;
|
||||
|
||||
valids = node.xpathEval('valid')
|
||||
invalids = node.xpathEval('invalid')
|
||||
nb_instances_tests = nb_instances_tests + len(valids) + len(invalids)
|
||||
if schema != None:
|
||||
for valid in valids:
|
||||
handle_valid(valid, schema)
|
||||
for invalid in invalids:
|
||||
handle_invalid(invalid, schema)
|
||||
|
||||
|
||||
#
|
||||
# handle a testSuite element
|
||||
#
|
||||
def handle_testSuite(node, level = 0):
|
||||
global nb_schemas_tests, nb_schemas_success, nb_schemas_failed
|
||||
global nb_instances_tests, nb_instances_success, nb_instances_failed
|
||||
global quiet
|
||||
if level >= 1:
|
||||
old_schemas_tests = nb_schemas_tests
|
||||
old_schemas_success = nb_schemas_success
|
||||
old_schemas_failed = nb_schemas_failed
|
||||
old_instances_tests = nb_instances_tests
|
||||
old_instances_success = nb_instances_success
|
||||
old_instances_failed = nb_instances_failed
|
||||
|
||||
docs = node.xpathEval('documentation')
|
||||
authors = node.xpathEval('author')
|
||||
if docs != []:
|
||||
msg = ""
|
||||
for doc in docs:
|
||||
msg = msg + doc.content + " "
|
||||
if authors != []:
|
||||
msg = msg + "written by "
|
||||
for author in authors:
|
||||
msg = msg + author.content + " "
|
||||
if quiet == 0:
|
||||
print msg
|
||||
sections = node.xpathEval('section')
|
||||
if sections != [] and level <= 0:
|
||||
msg = ""
|
||||
for section in sections:
|
||||
msg = msg + section.content + " "
|
||||
if quiet == 0:
|
||||
print "Tests for section %s" % (msg)
|
||||
for test in node.xpathEval('testCase'):
|
||||
handle_testCase(test)
|
||||
for test in node.xpathEval('testSuite'):
|
||||
handle_testSuite(test, level + 1)
|
||||
|
||||
|
||||
if verbose and level >= 1 and sections != []:
|
||||
msg = ""
|
||||
for section in sections:
|
||||
msg = msg + section.content + " "
|
||||
print "Result of tests for section %s" % (msg)
|
||||
if nb_schemas_tests != old_schemas_tests:
|
||||
print "found %d test schemas: %d success %d failures" % (
|
||||
nb_schemas_tests - old_schemas_tests,
|
||||
nb_schemas_success - old_schemas_success,
|
||||
nb_schemas_failed - old_schemas_failed)
|
||||
if nb_instances_tests != old_instances_tests:
|
||||
print "found %d test instances: %d success %d failures" % (
|
||||
nb_instances_tests - old_instances_tests,
|
||||
nb_instances_success - old_instances_success,
|
||||
nb_instances_failed - old_instances_failed)
|
||||
#
|
||||
# Parse the conf file
|
||||
#
|
||||
libxml2.substituteEntitiesDefault(1);
|
||||
testsuite = libxml2.parseFile(CONF)
|
||||
libxml2.setEntityLoader(resolver)
|
||||
root = testsuite.getRootElement()
|
||||
if root.name != 'testSuite':
|
||||
print "%s doesn't start with a testSuite element, aborting" % (CONF)
|
||||
sys.exit(1)
|
||||
if quiet == 0:
|
||||
print "Running Relax NG testsuite"
|
||||
handle_testSuite(root)
|
||||
|
||||
if quiet == 0:
|
||||
print "\nTOTAL:\n"
|
||||
if quiet == 0 or nb_schemas_failed != 0:
|
||||
print "found %d test schemas: %d success %d failures" % (
|
||||
nb_schemas_tests, nb_schemas_success, nb_schemas_failed)
|
||||
if quiet == 0 or nb_instances_failed != 0:
|
||||
print "found %d test instances: %d success %d failures" % (
|
||||
nb_instances_tests, nb_instances_success, nb_instances_failed)
|
||||
|
||||
testsuite.freeDoc()
|
||||
|
||||
# Memory debug specific
|
||||
libxml2.relaxNGCleanupTypes()
|
||||
libxml2.cleanupParser()
|
||||
if libxml2.debugMemory(1) == 0:
|
||||
if quiet == 0:
|
||||
print "OK"
|
||||
else:
|
||||
print "Memory leak %d bytes" % (libxml2.debugMemory(1))
|
||||
libxml2.dumpMemory()
|
||||
@@ -0,0 +1,418 @@
|
||||
#!/usr/bin/python
|
||||
import sys
|
||||
import time
|
||||
import os
|
||||
import string
|
||||
import StringIO
|
||||
sys.path.insert(0, "python")
|
||||
import libxml2
|
||||
|
||||
# Memory debug specific
|
||||
libxml2.debugMemory(1)
|
||||
debug = 0
|
||||
quiet = 1
|
||||
|
||||
#
|
||||
# the testsuite description
|
||||
#
|
||||
CONF=os.path.join(os.path.dirname(__file__), "test/relaxng/testsuite.xml")
|
||||
LOG="check-relaxng-test-suite2.log"
|
||||
|
||||
log = open(LOG, "w")
|
||||
nb_schemas_tests = 0
|
||||
nb_schemas_success = 0
|
||||
nb_schemas_failed = 0
|
||||
nb_instances_tests = 0
|
||||
nb_instances_success = 0
|
||||
nb_instances_failed = 0
|
||||
|
||||
libxml2.lineNumbersDefault(1)
|
||||
#
|
||||
# Resolver callback
|
||||
#
|
||||
resources = {}
|
||||
def resolver(URL, ID, ctxt):
|
||||
global resources
|
||||
|
||||
if resources.has_key(URL):
|
||||
return(StringIO.StringIO(resources[URL]))
|
||||
log.write("Resolver failure: asked %s\n" % (URL))
|
||||
log.write("resources: %s\n" % (resources))
|
||||
return None
|
||||
|
||||
#
|
||||
# Load the previous results
|
||||
#
|
||||
#results = {}
|
||||
#previous = {}
|
||||
#
|
||||
#try:
|
||||
# res = libxml2.parseFile(RES)
|
||||
#except:
|
||||
# log.write("Could not parse %s" % (RES))
|
||||
|
||||
#
|
||||
# handle a valid instance
|
||||
#
|
||||
def handle_valid(node, schema):
|
||||
global log
|
||||
global nb_instances_success
|
||||
global nb_instances_failed
|
||||
|
||||
instance = node.prop("dtd")
|
||||
if instance == None:
|
||||
instance = ""
|
||||
child = node.children
|
||||
while child != None:
|
||||
if child.type != 'text':
|
||||
instance = instance + child.serialize()
|
||||
child = child.next
|
||||
|
||||
# mem = libxml2.debugMemory(1);
|
||||
try:
|
||||
doc = libxml2.parseDoc(instance)
|
||||
except:
|
||||
doc = None
|
||||
|
||||
if doc == None:
|
||||
log.write("\nFailed to parse correct instance:\n-----\n")
|
||||
log.write(instance)
|
||||
log.write("\n-----\n")
|
||||
nb_instances_failed = nb_instances_failed + 1
|
||||
return
|
||||
|
||||
if debug:
|
||||
print "instance line %d" % (node.lineNo())
|
||||
|
||||
try:
|
||||
ctxt = schema.relaxNGNewValidCtxt()
|
||||
ret = doc.relaxNGValidateDoc(ctxt)
|
||||
del ctxt
|
||||
except:
|
||||
ret = -1
|
||||
|
||||
doc.freeDoc()
|
||||
# if mem != libxml2.debugMemory(1):
|
||||
# print "validating instance %d line %d leaks" % (
|
||||
# nb_instances_tests, node.lineNo())
|
||||
|
||||
if ret != 0:
|
||||
log.write("\nFailed to validate correct instance:\n-----\n")
|
||||
log.write(instance)
|
||||
log.write("\n-----\n")
|
||||
nb_instances_failed = nb_instances_failed + 1
|
||||
else:
|
||||
nb_instances_success = nb_instances_success + 1
|
||||
|
||||
#
|
||||
# handle an invalid instance
|
||||
#
|
||||
def handle_invalid(node, schema):
|
||||
global log
|
||||
global nb_instances_success
|
||||
global nb_instances_failed
|
||||
|
||||
instance = node.prop("dtd")
|
||||
if instance == None:
|
||||
instance = ""
|
||||
child = node.children
|
||||
while child != None:
|
||||
if child.type != 'text':
|
||||
instance = instance + child.serialize()
|
||||
child = child.next
|
||||
|
||||
# mem = libxml2.debugMemory(1);
|
||||
|
||||
try:
|
||||
doc = libxml2.parseDoc(instance)
|
||||
except:
|
||||
doc = None
|
||||
|
||||
if doc == None:
|
||||
log.write("\nStrange: failed to parse incorrect instance:\n-----\n")
|
||||
log.write(instance)
|
||||
log.write("\n-----\n")
|
||||
return
|
||||
|
||||
if debug:
|
||||
print "instance line %d" % (node.lineNo())
|
||||
|
||||
try:
|
||||
ctxt = schema.relaxNGNewValidCtxt()
|
||||
ret = doc.relaxNGValidateDoc(ctxt)
|
||||
del ctxt
|
||||
|
||||
except:
|
||||
ret = -1
|
||||
|
||||
doc.freeDoc()
|
||||
# mem2 = libxml2.debugMemory(1)
|
||||
# if mem != mem2:
|
||||
# print "validating instance %d line %d leaks %d bytes" % (
|
||||
# nb_instances_tests, node.lineNo(), mem2 - mem)
|
||||
|
||||
if ret == 0:
|
||||
log.write("\nFailed to detect validation problem in instance:\n-----\n")
|
||||
log.write(instance)
|
||||
log.write("\n-----\n")
|
||||
nb_instances_failed = nb_instances_failed + 1
|
||||
else:
|
||||
nb_instances_success = nb_instances_success + 1
|
||||
|
||||
#
|
||||
# handle an incorrect test
|
||||
#
|
||||
def handle_correct(node):
|
||||
global log
|
||||
global nb_schemas_success
|
||||
global nb_schemas_failed
|
||||
|
||||
schema = ""
|
||||
child = node.children
|
||||
while child != None:
|
||||
if child.type != 'text':
|
||||
schema = schema + child.serialize()
|
||||
child = child.next
|
||||
|
||||
try:
|
||||
rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema))
|
||||
rngs = rngp.relaxNGParse()
|
||||
except:
|
||||
rngs = None
|
||||
if rngs == None:
|
||||
log.write("\nFailed to compile correct schema:\n-----\n")
|
||||
log.write(schema)
|
||||
log.write("\n-----\n")
|
||||
nb_schemas_failed = nb_schemas_failed + 1
|
||||
else:
|
||||
nb_schemas_success = nb_schemas_success + 1
|
||||
return rngs
|
||||
|
||||
def handle_incorrect(node):
|
||||
global log
|
||||
global nb_schemas_success
|
||||
global nb_schemas_failed
|
||||
|
||||
schema = ""
|
||||
child = node.children
|
||||
while child != None:
|
||||
if child.type != 'text':
|
||||
schema = schema + child.serialize()
|
||||
child = child.next
|
||||
|
||||
try:
|
||||
rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema))
|
||||
rngs = rngp.relaxNGParse()
|
||||
except:
|
||||
rngs = None
|
||||
if rngs != None:
|
||||
log.write("\nFailed to detect schema error in:\n-----\n")
|
||||
log.write(schema)
|
||||
log.write("\n-----\n")
|
||||
nb_schemas_failed = nb_schemas_failed + 1
|
||||
else:
|
||||
# log.write("\nSuccess detecting schema error in:\n-----\n")
|
||||
# log.write(schema)
|
||||
# log.write("\n-----\n")
|
||||
nb_schemas_success = nb_schemas_success + 1
|
||||
return None
|
||||
|
||||
#
|
||||
# resource handling: keep a dictionary of URL->string mappings
|
||||
#
|
||||
def handle_resource(node, dir):
|
||||
global resources
|
||||
|
||||
try:
|
||||
name = node.prop('name')
|
||||
except:
|
||||
name = None
|
||||
|
||||
if name == None or name == '':
|
||||
log.write("resource has no name")
|
||||
return;
|
||||
|
||||
if dir != None:
|
||||
# name = libxml2.buildURI(name, dir)
|
||||
name = dir + '/' + name
|
||||
|
||||
res = ""
|
||||
child = node.children
|
||||
while child != None:
|
||||
if child.type != 'text':
|
||||
res = res + child.serialize()
|
||||
child = child.next
|
||||
resources[name] = res
|
||||
|
||||
#
|
||||
# dir handling: pseudo directory resources
|
||||
#
|
||||
def handle_dir(node, dir):
|
||||
try:
|
||||
name = node.prop('name')
|
||||
except:
|
||||
name = None
|
||||
|
||||
if name == None or name == '':
|
||||
log.write("resource has no name")
|
||||
return;
|
||||
|
||||
if dir != None:
|
||||
# name = libxml2.buildURI(name, dir)
|
||||
name = dir + '/' + name
|
||||
|
||||
dirs = node.xpathEval('dir')
|
||||
for dir in dirs:
|
||||
handle_dir(dir, name)
|
||||
res = node.xpathEval('resource')
|
||||
for r in res:
|
||||
handle_resource(r, name)
|
||||
|
||||
#
|
||||
# handle a testCase element
|
||||
#
|
||||
def handle_testCase(node):
|
||||
global nb_schemas_tests
|
||||
global nb_instances_tests
|
||||
global resources
|
||||
|
||||
sections = node.xpathEval('string(section)')
|
||||
log.write("\n ======== test %d line %d section %s ==========\n" % (
|
||||
|
||||
nb_schemas_tests, node.lineNo(), sections))
|
||||
resources = {}
|
||||
if debug:
|
||||
print "test %d line %d" % (nb_schemas_tests, node.lineNo())
|
||||
|
||||
dirs = node.xpathEval('dir')
|
||||
for dir in dirs:
|
||||
handle_dir(dir, None)
|
||||
res = node.xpathEval('resource')
|
||||
for r in res:
|
||||
handle_resource(r, None)
|
||||
|
||||
tsts = node.xpathEval('incorrect')
|
||||
if tsts != []:
|
||||
if len(tsts) != 1:
|
||||
print "warning test line %d has more than one <incorrect> example" %(node.lineNo())
|
||||
schema = handle_incorrect(tsts[0])
|
||||
else:
|
||||
tsts = node.xpathEval('correct')
|
||||
if tsts != []:
|
||||
if len(tsts) != 1:
|
||||
print "warning test line %d has more than one <correct> example"% (node.lineNo())
|
||||
schema = handle_correct(tsts[0])
|
||||
else:
|
||||
print "warning <testCase> line %d has no <correct> nor <incorrect> child" % (node.lineNo())
|
||||
|
||||
nb_schemas_tests = nb_schemas_tests + 1;
|
||||
|
||||
valids = node.xpathEval('valid')
|
||||
invalids = node.xpathEval('invalid')
|
||||
nb_instances_tests = nb_instances_tests + len(valids) + len(invalids)
|
||||
if schema != None:
|
||||
for valid in valids:
|
||||
handle_valid(valid, schema)
|
||||
for invalid in invalids:
|
||||
handle_invalid(invalid, schema)
|
||||
|
||||
|
||||
#
|
||||
# handle a testSuite element
|
||||
#
|
||||
def handle_testSuite(node, level = 0):
|
||||
global nb_schemas_tests, nb_schemas_success, nb_schemas_failed
|
||||
global nb_instances_tests, nb_instances_success, nb_instances_failed
|
||||
if level >= 1:
|
||||
old_schemas_tests = nb_schemas_tests
|
||||
old_schemas_success = nb_schemas_success
|
||||
old_schemas_failed = nb_schemas_failed
|
||||
old_instances_tests = nb_instances_tests
|
||||
old_instances_success = nb_instances_success
|
||||
old_instances_failed = nb_instances_failed
|
||||
|
||||
docs = node.xpathEval('documentation')
|
||||
authors = node.xpathEval('author')
|
||||
if docs != []:
|
||||
msg = ""
|
||||
for doc in docs:
|
||||
msg = msg + doc.content + " "
|
||||
if authors != []:
|
||||
msg = msg + "written by "
|
||||
for author in authors:
|
||||
msg = msg + author.content + " "
|
||||
if quiet == 0:
|
||||
print msg
|
||||
sections = node.xpathEval('section')
|
||||
if sections != [] and level <= 0:
|
||||
msg = ""
|
||||
for section in sections:
|
||||
msg = msg + section.content + " "
|
||||
if quiet == 0:
|
||||
print "Tests for section %s" % (msg)
|
||||
for test in node.xpathEval('testCase'):
|
||||
handle_testCase(test)
|
||||
for test in node.xpathEval('testSuite'):
|
||||
handle_testSuite(test, level + 1)
|
||||
|
||||
|
||||
if level >= 1 and sections != []:
|
||||
msg = ""
|
||||
for section in sections:
|
||||
msg = msg + section.content + " "
|
||||
print "Result of tests for section %s" % (msg)
|
||||
if nb_schemas_tests != old_schemas_tests:
|
||||
print "found %d test schemas: %d success %d failures" % (
|
||||
nb_schemas_tests - old_schemas_tests,
|
||||
nb_schemas_success - old_schemas_success,
|
||||
nb_schemas_failed - old_schemas_failed)
|
||||
if nb_instances_tests != old_instances_tests:
|
||||
print "found %d test instances: %d success %d failures" % (
|
||||
nb_instances_tests - old_instances_tests,
|
||||
nb_instances_success - old_instances_success,
|
||||
nb_instances_failed - old_instances_failed)
|
||||
#
|
||||
# Parse the conf file
|
||||
#
|
||||
libxml2.substituteEntitiesDefault(1);
|
||||
testsuite = libxml2.parseFile(CONF)
|
||||
|
||||
#
|
||||
# Error and warnng callbacks
|
||||
#
|
||||
def callback(ctx, str):
|
||||
global log
|
||||
log.write("%s%s" % (ctx, str))
|
||||
|
||||
libxml2.registerErrorHandler(callback, "")
|
||||
|
||||
libxml2.setEntityLoader(resolver)
|
||||
root = testsuite.getRootElement()
|
||||
if root.name != 'testSuite':
|
||||
print "%s doesn't start with a testSuite element, aborting" % (CONF)
|
||||
sys.exit(1)
|
||||
if quiet == 0:
|
||||
print "Running Relax NG testsuite"
|
||||
handle_testSuite(root)
|
||||
|
||||
if quiet == 0:
|
||||
print "\nTOTAL:\n"
|
||||
if quiet == 0 or nb_schemas_failed != 0:
|
||||
print "found %d test schemas: %d success %d failures" % (
|
||||
nb_schemas_tests, nb_schemas_success, nb_schemas_failed)
|
||||
if quiet == 0 or nb_instances_failed != 0:
|
||||
print "found %d test instances: %d success %d failures" % (
|
||||
nb_instances_tests, nb_instances_success, nb_instances_failed)
|
||||
|
||||
|
||||
testsuite.freeDoc()
|
||||
|
||||
# Memory debug specific
|
||||
libxml2.relaxNGCleanupTypes()
|
||||
libxml2.cleanupParser()
|
||||
if libxml2.debugMemory(1) == 0:
|
||||
if quiet == 0:
|
||||
print "OK"
|
||||
else:
|
||||
print "Memory leak %d bytes" % (libxml2.debugMemory(1))
|
||||
libxml2.dumpMemory()
|
||||
@@ -0,0 +1,221 @@
|
||||
#!/usr/bin/python
|
||||
import sys
|
||||
import time
|
||||
import os
|
||||
import string
|
||||
sys.path.insert(0, "python")
|
||||
import libxml2
|
||||
|
||||
#
|
||||
# the testsuite description
|
||||
#
|
||||
DIR="xinclude-test-suite"
|
||||
CONF="testdescr.xml"
|
||||
LOG="check-xinclude-test-suite.log"
|
||||
|
||||
log = open(LOG, "w")
|
||||
|
||||
os.chdir(DIR)
|
||||
|
||||
test_nr = 0
|
||||
test_succeed = 0
|
||||
test_failed = 0
|
||||
test_error = 0
|
||||
#
|
||||
# Error and warning handlers
|
||||
#
|
||||
error_nr = 0
|
||||
error_msg = ''
|
||||
|
||||
def errorHandler(ctx, str):
|
||||
global error_nr
|
||||
global error_msg
|
||||
|
||||
if string.find(str, "error:") >= 0:
|
||||
error_nr = error_nr + 1
|
||||
if len(error_msg) < 300:
|
||||
if len(error_msg) == 0 or error_msg[-1] == '\n':
|
||||
error_msg = error_msg + " >>" + str
|
||||
else:
|
||||
error_msg = error_msg + str
|
||||
|
||||
libxml2.registerErrorHandler(errorHandler, None)
|
||||
|
||||
def testXInclude(filename, id):
|
||||
global error_nr
|
||||
global error_msg
|
||||
global log
|
||||
|
||||
error_nr = 0
|
||||
error_msg = ''
|
||||
|
||||
print "testXInclude(%s, %s)" % (filename, id)
|
||||
return 1
|
||||
|
||||
def runTest(test, basedir):
|
||||
global test_nr
|
||||
global test_failed
|
||||
global test_error
|
||||
global test_succeed
|
||||
global error_msg
|
||||
global log
|
||||
|
||||
fatal_error = 0
|
||||
uri = test.prop('href')
|
||||
id = test.prop('id')
|
||||
type = test.prop('type')
|
||||
if uri == None:
|
||||
print "Test without ID:", uri
|
||||
return -1
|
||||
if id == None:
|
||||
print "Test without URI:", id
|
||||
return -1
|
||||
if type == None:
|
||||
print "Test without URI:", id
|
||||
return -1
|
||||
if basedir != None:
|
||||
URI = basedir + "/" + uri
|
||||
else:
|
||||
URI = uri
|
||||
if os.access(URI, os.R_OK) == 0:
|
||||
print "Test %s missing: base %s uri %s" % (URI, basedir, uri)
|
||||
return -1
|
||||
|
||||
expected = None
|
||||
outputfile = None
|
||||
diff = None
|
||||
if type != 'error':
|
||||
output = test.xpathEval('string(output)')
|
||||
if output == 'No output file.':
|
||||
output = None
|
||||
if output == '':
|
||||
output = None
|
||||
if output != None:
|
||||
if basedir != None:
|
||||
output = basedir + "/" + output
|
||||
if os.access(output, os.R_OK) == 0:
|
||||
print "Result for %s missing: %s" % (id, output)
|
||||
output = None
|
||||
else:
|
||||
try:
|
||||
f = open(output)
|
||||
expected = f.read()
|
||||
outputfile = output
|
||||
except:
|
||||
print "Result for %s unreadable: %s" % (id, output)
|
||||
|
||||
try:
|
||||
# print "testing %s" % (URI)
|
||||
doc = libxml2.parseFile(URI)
|
||||
except:
|
||||
doc = None
|
||||
if doc != None:
|
||||
res = doc.xincludeProcess()
|
||||
if res >= 0 and expected != None:
|
||||
result = doc.serialize()
|
||||
if result != expected:
|
||||
print "Result for %s differs" % (id)
|
||||
open("xinclude.res", "w").write(result)
|
||||
diff = os.popen("diff %s xinclude.res" % outputfile).read()
|
||||
|
||||
doc.freeDoc()
|
||||
else:
|
||||
print "Failed to parse %s" % (URI)
|
||||
res = -1
|
||||
|
||||
|
||||
|
||||
test_nr = test_nr + 1
|
||||
if type == 'success':
|
||||
if res > 0:
|
||||
test_succeed = test_succeed + 1
|
||||
elif res == 0:
|
||||
test_failed = test_failed + 1
|
||||
print "Test %s: no substitution done ???" % (id)
|
||||
elif res < 0:
|
||||
test_error = test_error + 1
|
||||
print "Test %s: failed valid XInclude processing" % (id)
|
||||
elif type == 'error':
|
||||
if res > 0:
|
||||
test_error = test_error + 1
|
||||
print "Test %s: failed to detect invalid XInclude processing" % (id)
|
||||
elif res == 0:
|
||||
test_failed = test_failed + 1
|
||||
print "Test %s: Invalid but no substitution done" % (id)
|
||||
elif res < 0:
|
||||
test_succeed = test_succeed + 1
|
||||
elif type == 'optional':
|
||||
if res > 0:
|
||||
test_succeed = test_succeed + 1
|
||||
else:
|
||||
print "Test %s: failed optional test" % (id)
|
||||
|
||||
# Log the ontext
|
||||
if res != 1:
|
||||
log.write("Test ID %s\n" % (id))
|
||||
log.write(" File: %s\n" % (URI))
|
||||
content = string.strip(test.content)
|
||||
while content[-1] == '\n':
|
||||
content = content[0:-1]
|
||||
log.write(" %s:%s\n\n" % (type, content))
|
||||
if error_msg != '':
|
||||
log.write(" ----\n%s ----\n" % (error_msg))
|
||||
error_msg = ''
|
||||
log.write("\n")
|
||||
if diff != None:
|
||||
log.write("diff from test %s:\n" %(id))
|
||||
log.write(" -----------\n%s\n -----------\n" % (diff));
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
def runTestCases(case):
|
||||
creator = case.prop('creator')
|
||||
if creator != None:
|
||||
print "=>", creator
|
||||
base = case.getBase(None)
|
||||
basedir = case.prop('basedir')
|
||||
if basedir != None:
|
||||
base = libxml2.buildURI(basedir, base)
|
||||
test = case.children
|
||||
while test != None:
|
||||
if test.name == 'testcase':
|
||||
runTest(test, base)
|
||||
if test.name == 'testcases':
|
||||
runTestCases(test)
|
||||
test = test.next
|
||||
|
||||
conf = libxml2.parseFile(CONF)
|
||||
if conf == None:
|
||||
print "Unable to load %s" % CONF
|
||||
sys.exit(1)
|
||||
|
||||
testsuite = conf.getRootElement()
|
||||
if testsuite.name != 'testsuite':
|
||||
print "Expecting TESTSUITE root element: aborting"
|
||||
sys.exit(1)
|
||||
|
||||
profile = testsuite.prop('PROFILE')
|
||||
if profile != None:
|
||||
print profile
|
||||
|
||||
start = time.time()
|
||||
|
||||
case = testsuite.children
|
||||
while case != None:
|
||||
if case.name == 'testcases':
|
||||
old_test_nr = test_nr
|
||||
old_test_succeed = test_succeed
|
||||
old_test_failed = test_failed
|
||||
old_test_error = test_error
|
||||
runTestCases(case)
|
||||
print " Ran %d tests: %d suceeded, %d failed and %d generated an error" % (
|
||||
test_nr - old_test_nr, test_succeed - old_test_succeed,
|
||||
test_failed - old_test_failed, test_error - old_test_error)
|
||||
case = case.next
|
||||
|
||||
conf.freeDoc()
|
||||
log.close()
|
||||
|
||||
print "Ran %d tests: %d suceeded, %d failed and %d generated an error in %.2f s." % (
|
||||
test_nr, test_succeed, test_failed, test_error, time.time() - start)
|
||||
@@ -0,0 +1,409 @@
|
||||
#!/usr/bin/python
|
||||
import sys
|
||||
import time
|
||||
import os
|
||||
import string
|
||||
sys.path.insert(0, "python")
|
||||
import libxml2
|
||||
|
||||
test_nr = 0
|
||||
test_succeed = 0
|
||||
test_failed = 0
|
||||
test_error = 0
|
||||
|
||||
#
|
||||
# the testsuite description
|
||||
#
|
||||
CONF="xml-test-suite/xmlconf/xmlconf.xml"
|
||||
LOG="check-xml-test-suite.log"
|
||||
|
||||
log = open(LOG, "w")
|
||||
|
||||
#
|
||||
# Error and warning handlers
|
||||
#
|
||||
error_nr = 0
|
||||
error_msg = ''
|
||||
def errorHandler(ctx, str):
|
||||
global error_nr
|
||||
global error_msg
|
||||
|
||||
error_nr = error_nr + 1
|
||||
if len(error_msg) < 300:
|
||||
if len(error_msg) == 0 or error_msg[-1] == '\n':
|
||||
error_msg = error_msg + " >>" + str
|
||||
else:
|
||||
error_msg = error_msg + str
|
||||
|
||||
libxml2.registerErrorHandler(errorHandler, None)
|
||||
|
||||
#warning_nr = 0
|
||||
#warning = ''
|
||||
#def warningHandler(ctx, str):
|
||||
# global warning_nr
|
||||
# global warning
|
||||
#
|
||||
# warning_nr = warning_nr + 1
|
||||
# warning = warning + str
|
||||
#
|
||||
#libxml2.registerWarningHandler(warningHandler, None)
|
||||
|
||||
#
|
||||
# Used to load the XML testsuite description
|
||||
#
|
||||
def loadNoentDoc(filename):
|
||||
ctxt = libxml2.createFileParserCtxt(filename)
|
||||
if ctxt == None:
|
||||
return None
|
||||
ctxt.replaceEntities(1)
|
||||
ctxt.parseDocument()
|
||||
try:
|
||||
doc = ctxt.doc()
|
||||
except:
|
||||
doc = None
|
||||
if ctxt.wellFormed() != 1:
|
||||
doc.freeDoc()
|
||||
return None
|
||||
return doc
|
||||
|
||||
#
|
||||
# The conformance testing routines
|
||||
#
|
||||
|
||||
def testNotWf(filename, id):
|
||||
global error_nr
|
||||
global error_msg
|
||||
global log
|
||||
|
||||
error_nr = 0
|
||||
error_msg = ''
|
||||
|
||||
ctxt = libxml2.createFileParserCtxt(filename)
|
||||
if ctxt == None:
|
||||
return -1
|
||||
ret = ctxt.parseDocument()
|
||||
|
||||
try:
|
||||
doc = ctxt.doc()
|
||||
except:
|
||||
doc = None
|
||||
if doc != None:
|
||||
doc.freeDoc()
|
||||
if ret == 0 or ctxt.wellFormed() != 0:
|
||||
print "%s: error: Well Formedness error not detected" % (id)
|
||||
log.write("%s: error: Well Formedness error not detected\n" % (id))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
def testNotWfEnt(filename, id):
|
||||
global error_nr
|
||||
global error_msg
|
||||
global log
|
||||
|
||||
error_nr = 0
|
||||
error_msg = ''
|
||||
|
||||
ctxt = libxml2.createFileParserCtxt(filename)
|
||||
if ctxt == None:
|
||||
return -1
|
||||
ctxt.replaceEntities(1)
|
||||
ret = ctxt.parseDocument()
|
||||
|
||||
try:
|
||||
doc = ctxt.doc()
|
||||
except:
|
||||
doc = None
|
||||
if doc != None:
|
||||
doc.freeDoc()
|
||||
if ret == 0 or ctxt.wellFormed() != 0:
|
||||
print "%s: error: Well Formedness error not detected" % (id)
|
||||
log.write("%s: error: Well Formedness error not detected\n" % (id))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
def testNotWfEntDtd(filename, id):
|
||||
global error_nr
|
||||
global error_msg
|
||||
global log
|
||||
|
||||
error_nr = 0
|
||||
error_msg = ''
|
||||
|
||||
ctxt = libxml2.createFileParserCtxt(filename)
|
||||
if ctxt == None:
|
||||
return -1
|
||||
ctxt.replaceEntities(1)
|
||||
ctxt.loadSubset(1)
|
||||
ret = ctxt.parseDocument()
|
||||
|
||||
try:
|
||||
doc = ctxt.doc()
|
||||
except:
|
||||
doc = None
|
||||
if doc != None:
|
||||
doc.freeDoc()
|
||||
if ret == 0 or ctxt.wellFormed() != 0:
|
||||
print "%s: error: Well Formedness error not detected" % (id)
|
||||
log.write("%s: error: Well Formedness error not detected\n" % (id))
|
||||
return 0
|
||||
return 1
|
||||
|
||||
def testWfEntDtd(filename, id):
|
||||
global error_nr
|
||||
global error_msg
|
||||
global log
|
||||
|
||||
error_nr = 0
|
||||
error_msg = ''
|
||||
|
||||
ctxt = libxml2.createFileParserCtxt(filename)
|
||||
if ctxt == None:
|
||||
return -1
|
||||
ctxt.replaceEntities(1)
|
||||
ctxt.loadSubset(1)
|
||||
ret = ctxt.parseDocument()
|
||||
|
||||
try:
|
||||
doc = ctxt.doc()
|
||||
except:
|
||||
doc = None
|
||||
if doc == None or ret != 0 or ctxt.wellFormed() == 0:
|
||||
print "%s: error: wrongly failed to parse the document" % (id)
|
||||
log.write("%s: error: wrongly failed to parse the document\n" % (id))
|
||||
if doc != None:
|
||||
doc.freeDoc()
|
||||
return 0
|
||||
if error_nr != 0:
|
||||
print "%s: warning: WF document generated an error msg" % (id)
|
||||
log.write("%s: error: WF document generated an error msg\n" % (id))
|
||||
doc.freeDoc()
|
||||
return 2
|
||||
doc.freeDoc()
|
||||
return 1
|
||||
|
||||
def testError(filename, id):
|
||||
global error_nr
|
||||
global error_msg
|
||||
global log
|
||||
|
||||
error_nr = 0
|
||||
error_msg = ''
|
||||
|
||||
ctxt = libxml2.createFileParserCtxt(filename)
|
||||
if ctxt == None:
|
||||
return -1
|
||||
ctxt.replaceEntities(1)
|
||||
ctxt.loadSubset(1)
|
||||
ret = ctxt.parseDocument()
|
||||
|
||||
try:
|
||||
doc = ctxt.doc()
|
||||
except:
|
||||
doc = None
|
||||
if doc != None:
|
||||
doc.freeDoc()
|
||||
if ctxt.wellFormed() == 0:
|
||||
print "%s: warning: failed to parse the document but accepted" % (id)
|
||||
log.write("%s: warning: failed to parse the document but accepte\n" % (id))
|
||||
return 2
|
||||
if error_nr != 0:
|
||||
print "%s: warning: WF document generated an error msg" % (id)
|
||||
log.write("%s: error: WF document generated an error msg\n" % (id))
|
||||
return 2
|
||||
return 1
|
||||
|
||||
def testInvalid(filename, id):
|
||||
global error_nr
|
||||
global error_msg
|
||||
global log
|
||||
|
||||
error_nr = 0
|
||||
error_msg = ''
|
||||
|
||||
ctxt = libxml2.createFileParserCtxt(filename)
|
||||
if ctxt == None:
|
||||
return -1
|
||||
ctxt.validate(1)
|
||||
ret = ctxt.parseDocument()
|
||||
|
||||
try:
|
||||
doc = ctxt.doc()
|
||||
except:
|
||||
doc = None
|
||||
valid = ctxt.isValid()
|
||||
if doc == None:
|
||||
print "%s: error: wrongly failed to parse the document" % (id)
|
||||
log.write("%s: error: wrongly failed to parse the document\n" % (id))
|
||||
return 0
|
||||
if valid == 1:
|
||||
print "%s: error: Validity error not detected" % (id)
|
||||
log.write("%s: error: Validity error not detected\n" % (id))
|
||||
doc.freeDoc()
|
||||
return 0
|
||||
if error_nr == 0:
|
||||
print "%s: warning: Validity error not reported" % (id)
|
||||
log.write("%s: warning: Validity error not reported\n" % (id))
|
||||
doc.freeDoc()
|
||||
return 2
|
||||
|
||||
doc.freeDoc()
|
||||
return 1
|
||||
|
||||
def testValid(filename, id):
|
||||
global error_nr
|
||||
global error_msg
|
||||
|
||||
error_nr = 0
|
||||
error_msg = ''
|
||||
|
||||
ctxt = libxml2.createFileParserCtxt(filename)
|
||||
if ctxt == None:
|
||||
return -1
|
||||
ctxt.validate(1)
|
||||
ctxt.parseDocument()
|
||||
|
||||
try:
|
||||
doc = ctxt.doc()
|
||||
except:
|
||||
doc = None
|
||||
valid = ctxt.isValid()
|
||||
if doc == None:
|
||||
print "%s: error: wrongly failed to parse the document" % (id)
|
||||
log.write("%s: error: wrongly failed to parse the document\n" % (id))
|
||||
return 0
|
||||
if valid != 1:
|
||||
print "%s: error: Validity check failed" % (id)
|
||||
log.write("%s: error: Validity check failed\n" % (id))
|
||||
doc.freeDoc()
|
||||
return 0
|
||||
if error_nr != 0 or valid != 1:
|
||||
print "%s: warning: valid document reported an error" % (id)
|
||||
log.write("%s: warning: valid document reported an error\n" % (id))
|
||||
doc.freeDoc()
|
||||
return 2
|
||||
doc.freeDoc()
|
||||
return 1
|
||||
|
||||
def runTest(test):
|
||||
global test_nr
|
||||
global test_succeed
|
||||
global test_failed
|
||||
global error_msg
|
||||
global log
|
||||
|
||||
uri = test.prop('URI')
|
||||
id = test.prop('ID')
|
||||
if uri == None:
|
||||
print "Test without ID:", uri
|
||||
return -1
|
||||
if id == None:
|
||||
print "Test without URI:", id
|
||||
return -1
|
||||
base = test.getBase(None)
|
||||
URI = libxml2.buildURI(uri, base)
|
||||
if os.access(URI, os.R_OK) == 0:
|
||||
print "Test %s missing: base %s uri %s" % (URI, base, uri)
|
||||
return -1
|
||||
type = test.prop('TYPE')
|
||||
if type == None:
|
||||
print "Test %s missing TYPE" % (id)
|
||||
return -1
|
||||
|
||||
extra = None
|
||||
if type == "invalid":
|
||||
res = testInvalid(URI, id)
|
||||
elif type == "valid":
|
||||
res = testValid(URI, id)
|
||||
elif type == "not-wf":
|
||||
extra = test.prop('ENTITIES')
|
||||
# print URI
|
||||
#if extra == None:
|
||||
# res = testNotWfEntDtd(URI, id)
|
||||
#elif extra == 'none':
|
||||
# res = testNotWf(URI, id)
|
||||
#elif extra == 'general':
|
||||
# res = testNotWfEnt(URI, id)
|
||||
#elif extra == 'both' or extra == 'parameter':
|
||||
res = testNotWfEntDtd(URI, id)
|
||||
#else:
|
||||
# print "Unknow value %s for an ENTITIES test value" % (extra)
|
||||
# return -1
|
||||
elif type == "error":
|
||||
res = testError(URI, id)
|
||||
else:
|
||||
# TODO skipped for now
|
||||
return -1
|
||||
|
||||
test_nr = test_nr + 1
|
||||
if res > 0:
|
||||
test_succeed = test_succeed + 1
|
||||
elif res == 0:
|
||||
test_failed = test_failed + 1
|
||||
elif res < 0:
|
||||
test_error = test_error + 1
|
||||
|
||||
# Log the ontext
|
||||
if res != 1:
|
||||
log.write(" File: %s\n" % (URI))
|
||||
content = string.strip(test.content)
|
||||
while content[-1] == '\n':
|
||||
content = content[0:-1]
|
||||
if extra != None:
|
||||
log.write(" %s:%s:%s\n" % (type, extra, content))
|
||||
else:
|
||||
log.write(" %s:%s\n\n" % (type, content))
|
||||
if error_msg != '':
|
||||
log.write(" ----\n%s ----\n" % (error_msg))
|
||||
error_msg = ''
|
||||
log.write("\n")
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
def runTestCases(case):
|
||||
profile = case.prop('PROFILE')
|
||||
if profile != None and \
|
||||
string.find(profile, "IBM XML Conformance Test Suite - Production") < 0:
|
||||
print "=>", profile
|
||||
test = case.children
|
||||
while test != None:
|
||||
if test.name == 'TEST':
|
||||
runTest(test)
|
||||
if test.name == 'TESTCASES':
|
||||
runTestCases(test)
|
||||
test = test.next
|
||||
|
||||
conf = loadNoentDoc(CONF)
|
||||
if conf == None:
|
||||
print "Unable to load %s" % CONF
|
||||
sys.exit(1)
|
||||
|
||||
testsuite = conf.getRootElement()
|
||||
if testsuite.name != 'TESTSUITE':
|
||||
print "Expecting TESTSUITE root element: aborting"
|
||||
sys.exit(1)
|
||||
|
||||
profile = testsuite.prop('PROFILE')
|
||||
if profile != None:
|
||||
print profile
|
||||
|
||||
start = time.time()
|
||||
|
||||
case = testsuite.children
|
||||
while case != None:
|
||||
if case.name == 'TESTCASES':
|
||||
old_test_nr = test_nr
|
||||
old_test_succeed = test_succeed
|
||||
old_test_failed = test_failed
|
||||
old_test_error = test_error
|
||||
runTestCases(case)
|
||||
print " Ran %d tests: %d suceeded, %d failed and %d generated an error" % (
|
||||
test_nr - old_test_nr, test_succeed - old_test_succeed,
|
||||
test_failed - old_test_failed, test_error - old_test_error)
|
||||
case = case.next
|
||||
|
||||
conf.freeDoc()
|
||||
log.close()
|
||||
|
||||
print "Ran %d tests: %d suceeded, %d failed and %d generated an error in %.2f s." % (
|
||||
test_nr, test_succeed, test_failed, test_error, time.time() - start)
|
||||
@@ -0,0 +1,420 @@
|
||||
#!/usr/bin/python
|
||||
import sys
|
||||
import time
|
||||
import os
|
||||
import string
|
||||
import StringIO
|
||||
sys.path.insert(0, "python")
|
||||
import libxml2
|
||||
|
||||
# Memory debug specific
|
||||
libxml2.debugMemory(1)
|
||||
debug = 0
|
||||
verbose = 0
|
||||
quiet = 1
|
||||
|
||||
#
|
||||
# the testsuite description
|
||||
#
|
||||
CONF=os.path.join(os.path.dirname(__file__), "test/xsdtest/xsdtestsuite.xml")
|
||||
LOG="check-xsddata-test-suite.log"
|
||||
|
||||
log = open(LOG, "w")
|
||||
nb_schemas_tests = 0
|
||||
nb_schemas_success = 0
|
||||
nb_schemas_failed = 0
|
||||
nb_instances_tests = 0
|
||||
nb_instances_success = 0
|
||||
nb_instances_failed = 0
|
||||
|
||||
libxml2.lineNumbersDefault(1)
|
||||
#
|
||||
# Error and warnng callbacks
|
||||
#
|
||||
def callback(ctx, str):
|
||||
global log
|
||||
log.write("%s%s" % (ctx, str))
|
||||
|
||||
libxml2.registerErrorHandler(callback, "")
|
||||
|
||||
#
|
||||
# Resolver callback
|
||||
#
|
||||
resources = {}
|
||||
def resolver(URL, ID, ctxt):
|
||||
global resources
|
||||
|
||||
if resources.has_key(URL):
|
||||
return(StringIO.StringIO(resources[URL]))
|
||||
log.write("Resolver failure: asked %s\n" % (URL))
|
||||
log.write("resources: %s\n" % (resources))
|
||||
return None
|
||||
|
||||
#
|
||||
# handle a valid instance
|
||||
#
|
||||
def handle_valid(node, schema):
|
||||
global log
|
||||
global nb_instances_success
|
||||
global nb_instances_failed
|
||||
|
||||
instance = node.prop("dtd")
|
||||
if instance == None:
|
||||
instance = ""
|
||||
child = node.children
|
||||
while child != None:
|
||||
if child.type != 'text':
|
||||
instance = instance + child.serialize()
|
||||
child = child.next
|
||||
|
||||
mem = libxml2.debugMemory(1);
|
||||
try:
|
||||
doc = libxml2.parseDoc(instance)
|
||||
except:
|
||||
doc = None
|
||||
|
||||
if doc == None:
|
||||
log.write("\nFailed to parse correct instance:\n-----\n")
|
||||
log.write(instance)
|
||||
log.write("\n-----\n")
|
||||
nb_instances_failed = nb_instances_failed + 1
|
||||
return
|
||||
|
||||
if debug:
|
||||
print "instance line %d" % (node.lineNo())
|
||||
|
||||
try:
|
||||
ctxt = schema.relaxNGNewValidCtxt()
|
||||
ret = doc.relaxNGValidateDoc(ctxt)
|
||||
del ctxt
|
||||
except:
|
||||
ret = -1
|
||||
|
||||
doc.freeDoc()
|
||||
if mem != libxml2.debugMemory(1):
|
||||
print "validating instance %d line %d leaks" % (
|
||||
nb_instances_tests, node.lineNo())
|
||||
|
||||
if ret != 0:
|
||||
log.write("\nFailed to validate correct instance:\n-----\n")
|
||||
log.write(instance)
|
||||
log.write("\n-----\n")
|
||||
nb_instances_failed = nb_instances_failed + 1
|
||||
else:
|
||||
nb_instances_success = nb_instances_success + 1
|
||||
|
||||
#
|
||||
# handle an invalid instance
|
||||
#
|
||||
def handle_invalid(node, schema):
|
||||
global log
|
||||
global nb_instances_success
|
||||
global nb_instances_failed
|
||||
|
||||
instance = node.prop("dtd")
|
||||
if instance == None:
|
||||
instance = ""
|
||||
child = node.children
|
||||
while child != None:
|
||||
if child.type != 'text':
|
||||
instance = instance + child.serialize()
|
||||
child = child.next
|
||||
|
||||
# mem = libxml2.debugMemory(1);
|
||||
|
||||
try:
|
||||
doc = libxml2.parseDoc(instance)
|
||||
except:
|
||||
doc = None
|
||||
|
||||
if doc == None:
|
||||
log.write("\nStrange: failed to parse incorrect instance:\n-----\n")
|
||||
log.write(instance)
|
||||
log.write("\n-----\n")
|
||||
return
|
||||
|
||||
if debug:
|
||||
print "instance line %d" % (node.lineNo())
|
||||
|
||||
try:
|
||||
ctxt = schema.relaxNGNewValidCtxt()
|
||||
ret = doc.relaxNGValidateDoc(ctxt)
|
||||
del ctxt
|
||||
|
||||
except:
|
||||
ret = -1
|
||||
|
||||
doc.freeDoc()
|
||||
# if mem != libxml2.debugMemory(1):
|
||||
# print "validating instance %d line %d leaks" % (
|
||||
# nb_instances_tests, node.lineNo())
|
||||
|
||||
if ret == 0:
|
||||
log.write("\nFailed to detect validation problem in instance:\n-----\n")
|
||||
log.write(instance)
|
||||
log.write("\n-----\n")
|
||||
nb_instances_failed = nb_instances_failed + 1
|
||||
else:
|
||||
nb_instances_success = nb_instances_success + 1
|
||||
|
||||
#
|
||||
# handle an incorrect test
|
||||
#
|
||||
def handle_correct(node):
|
||||
global log
|
||||
global nb_schemas_success
|
||||
global nb_schemas_failed
|
||||
|
||||
schema = ""
|
||||
child = node.children
|
||||
while child != None:
|
||||
if child.type != 'text':
|
||||
schema = schema + child.serialize()
|
||||
child = child.next
|
||||
|
||||
try:
|
||||
rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema))
|
||||
rngs = rngp.relaxNGParse()
|
||||
except:
|
||||
rngs = None
|
||||
if rngs == None:
|
||||
log.write("\nFailed to compile correct schema:\n-----\n")
|
||||
log.write(schema)
|
||||
log.write("\n-----\n")
|
||||
nb_schemas_failed = nb_schemas_failed + 1
|
||||
else:
|
||||
nb_schemas_success = nb_schemas_success + 1
|
||||
return rngs
|
||||
|
||||
def handle_incorrect(node):
|
||||
global log
|
||||
global nb_schemas_success
|
||||
global nb_schemas_failed
|
||||
|
||||
schema = ""
|
||||
child = node.children
|
||||
while child != None:
|
||||
if child.type != 'text':
|
||||
schema = schema + child.serialize()
|
||||
child = child.next
|
||||
|
||||
try:
|
||||
rngp = libxml2.relaxNGNewMemParserCtxt(schema, len(schema))
|
||||
rngs = rngp.relaxNGParse()
|
||||
except:
|
||||
rngs = None
|
||||
if rngs != None:
|
||||
log.write("\nFailed to detect schema error in:\n-----\n")
|
||||
log.write(schema)
|
||||
log.write("\n-----\n")
|
||||
nb_schemas_failed = nb_schemas_failed + 1
|
||||
else:
|
||||
# log.write("\nSuccess detecting schema error in:\n-----\n")
|
||||
# log.write(schema)
|
||||
# log.write("\n-----\n")
|
||||
nb_schemas_success = nb_schemas_success + 1
|
||||
return None
|
||||
|
||||
#
|
||||
# resource handling: keep a dictionary of URL->string mappings
|
||||
#
|
||||
def handle_resource(node, dir):
|
||||
global resources
|
||||
|
||||
try:
|
||||
name = node.prop('name')
|
||||
except:
|
||||
name = None
|
||||
|
||||
if name == None or name == '':
|
||||
log.write("resource has no name")
|
||||
return;
|
||||
|
||||
if dir != None:
|
||||
# name = libxml2.buildURI(name, dir)
|
||||
name = dir + '/' + name
|
||||
|
||||
res = ""
|
||||
child = node.children
|
||||
while child != None:
|
||||
if child.type != 'text':
|
||||
res = res + child.serialize()
|
||||
child = child.next
|
||||
resources[name] = res
|
||||
|
||||
#
|
||||
# dir handling: pseudo directory resources
|
||||
#
|
||||
def handle_dir(node, dir):
|
||||
try:
|
||||
name = node.prop('name')
|
||||
except:
|
||||
name = None
|
||||
|
||||
if name == None or name == '':
|
||||
log.write("resource has no name")
|
||||
return;
|
||||
|
||||
if dir != None:
|
||||
# name = libxml2.buildURI(name, dir)
|
||||
name = dir + '/' + name
|
||||
|
||||
dirs = node.xpathEval('dir')
|
||||
for dir in dirs:
|
||||
handle_dir(dir, name)
|
||||
res = node.xpathEval('resource')
|
||||
for r in res:
|
||||
handle_resource(r, name)
|
||||
|
||||
#
|
||||
# handle a testCase element
|
||||
#
|
||||
def handle_testCase(node):
|
||||
global nb_schemas_tests
|
||||
global nb_instances_tests
|
||||
global resources
|
||||
|
||||
sections = node.xpathEval('string(section)')
|
||||
log.write("\n ======== test %d line %d section %s ==========\n" % (
|
||||
|
||||
nb_schemas_tests, node.lineNo(), sections))
|
||||
resources = {}
|
||||
if debug:
|
||||
print "test %d line %d" % (nb_schemas_tests, node.lineNo())
|
||||
|
||||
dirs = node.xpathEval('dir')
|
||||
for dir in dirs:
|
||||
handle_dir(dir, None)
|
||||
res = node.xpathEval('resource')
|
||||
for r in res:
|
||||
handle_resource(r, None)
|
||||
|
||||
tsts = node.xpathEval('incorrect')
|
||||
if tsts != []:
|
||||
if len(tsts) != 1:
|
||||
print "warning test line %d has more than one <incorrect> example" %(node.lineNo())
|
||||
schema = handle_incorrect(tsts[0])
|
||||
else:
|
||||
tsts = node.xpathEval('correct')
|
||||
if tsts != []:
|
||||
if len(tsts) != 1:
|
||||
print "warning test line %d has more than one <correct> example"% (node.lineNo())
|
||||
schema = handle_correct(tsts[0])
|
||||
else:
|
||||
print "warning <testCase> line %d has no <correct> nor <incorrect> child" % (node.lineNo())
|
||||
|
||||
nb_schemas_tests = nb_schemas_tests + 1;
|
||||
|
||||
valids = node.xpathEval('valid')
|
||||
invalids = node.xpathEval('invalid')
|
||||
nb_instances_tests = nb_instances_tests + len(valids) + len(invalids)
|
||||
if schema != None:
|
||||
for valid in valids:
|
||||
handle_valid(valid, schema)
|
||||
for invalid in invalids:
|
||||
handle_invalid(invalid, schema)
|
||||
|
||||
|
||||
#
|
||||
# handle a testSuite element
|
||||
#
|
||||
def handle_testSuite(node, level = 0):
|
||||
global nb_schemas_tests, nb_schemas_success, nb_schemas_failed
|
||||
global nb_instances_tests, nb_instances_success, nb_instances_failed
|
||||
if verbose and level >= 0:
|
||||
old_schemas_tests = nb_schemas_tests
|
||||
old_schemas_success = nb_schemas_success
|
||||
old_schemas_failed = nb_schemas_failed
|
||||
old_instances_tests = nb_instances_tests
|
||||
old_instances_success = nb_instances_success
|
||||
old_instances_failed = nb_instances_failed
|
||||
|
||||
docs = node.xpathEval('documentation')
|
||||
authors = node.xpathEval('author')
|
||||
if docs != []:
|
||||
msg = ""
|
||||
for doc in docs:
|
||||
msg = msg + doc.content + " "
|
||||
if authors != []:
|
||||
msg = msg + "written by "
|
||||
for author in authors:
|
||||
msg = msg + author.content + " "
|
||||
if quiet == 0:
|
||||
print msg
|
||||
sections = node.xpathEval('section')
|
||||
if verbose and sections != [] and level <= 0:
|
||||
msg = ""
|
||||
for section in sections:
|
||||
msg = msg + section.content + " "
|
||||
if quiet == 0:
|
||||
print "Tests for section %s" % (msg)
|
||||
for test in node.xpathEval('testCase'):
|
||||
handle_testCase(test)
|
||||
for test in node.xpathEval('testSuite'):
|
||||
handle_testSuite(test, level + 1)
|
||||
|
||||
|
||||
if verbose and level >= 0 :
|
||||
if sections != []:
|
||||
msg = ""
|
||||
for section in sections:
|
||||
msg = msg + section.content + " "
|
||||
print "Result of tests for section %s" % (msg)
|
||||
elif docs != []:
|
||||
msg = ""
|
||||
for doc in docs:
|
||||
msg = msg + doc.content + " "
|
||||
print "Result of tests for %s" % (msg)
|
||||
|
||||
if nb_schemas_tests != old_schemas_tests:
|
||||
print "found %d test schemas: %d success %d failures" % (
|
||||
nb_schemas_tests - old_schemas_tests,
|
||||
nb_schemas_success - old_schemas_success,
|
||||
nb_schemas_failed - old_schemas_failed)
|
||||
if nb_instances_tests != old_instances_tests:
|
||||
print "found %d test instances: %d success %d failures" % (
|
||||
nb_instances_tests - old_instances_tests,
|
||||
nb_instances_success - old_instances_success,
|
||||
nb_instances_failed - old_instances_failed)
|
||||
#
|
||||
# Parse the conf file
|
||||
#
|
||||
libxml2.substituteEntitiesDefault(1);
|
||||
testsuite = libxml2.parseFile(CONF)
|
||||
|
||||
#
|
||||
# Error and warnng callbacks
|
||||
#
|
||||
def callback(ctx, str):
|
||||
global log
|
||||
log.write("%s%s" % (ctx, str))
|
||||
|
||||
libxml2.registerErrorHandler(callback, "")
|
||||
|
||||
libxml2.setEntityLoader(resolver)
|
||||
root = testsuite.getRootElement()
|
||||
if root.name != 'testSuite':
|
||||
print "%s doesn't start with a testSuite element, aborting" % (CONF)
|
||||
sys.exit(1)
|
||||
if quiet == 0:
|
||||
print "Running Relax NG testsuite"
|
||||
handle_testSuite(root)
|
||||
|
||||
if quiet == 0 or nb_schemas_failed != 0:
|
||||
print "\nTOTAL:\nfound %d test schemas: %d success %d failures" % (
|
||||
nb_schemas_tests, nb_schemas_success, nb_schemas_failed)
|
||||
if quiet == 0 or nb_instances_failed != 0:
|
||||
print "found %d test instances: %d success %d failures" % (
|
||||
nb_instances_tests, nb_instances_success, nb_instances_failed)
|
||||
|
||||
testsuite.freeDoc()
|
||||
|
||||
# Memory debug specific
|
||||
libxml2.relaxNGCleanupTypes()
|
||||
libxml2.cleanupParser()
|
||||
if libxml2.debugMemory(1) == 0:
|
||||
if quiet == 0:
|
||||
print "OK"
|
||||
else:
|
||||
print "Memory leak %d bytes" % (libxml2.debugMemory(1))
|
||||
libxml2.dumpMemory()
|
||||
336
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/chvalid.c
Normal file
336
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/chvalid.c
Normal file
@@ -0,0 +1,336 @@
|
||||
/*
|
||||
* chvalid.c: this module implements the character range
|
||||
* validation APIs
|
||||
*
|
||||
* This file is automatically generated from the cvs source
|
||||
* definition files using the genChRanges.py Python script
|
||||
*
|
||||
* Generation date: Mon Mar 27 11:09:48 2006
|
||||
* Sources: chvalid.def
|
||||
* William Brack <wbrack@mmm.com.hk>
|
||||
*/
|
||||
|
||||
#define IN_LIBXML
|
||||
#include "libxml.h"
|
||||
#include <libxml/chvalid.h>
|
||||
|
||||
/*
|
||||
* The initial tables ({func_name}_tab) are used to validate whether a
|
||||
* single-byte character is within the specified group. Each table
|
||||
* contains 256 bytes, with each byte representing one of the 256
|
||||
* possible characters. If the table byte is set, the character is
|
||||
* allowed.
|
||||
*
|
||||
*/
|
||||
const unsigned char xmlIsPubidChar_tab[256] = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
|
||||
0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x01,
|
||||
0x01, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x00, 0x01, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
|
||||
0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00 };
|
||||
|
||||
static const xmlChSRange xmlIsBaseChar_srng[] = { {0x100, 0x131},
|
||||
{0x134, 0x13e}, {0x141, 0x148}, {0x14a, 0x17e}, {0x180, 0x1c3},
|
||||
{0x1cd, 0x1f0}, {0x1f4, 0x1f5}, {0x1fa, 0x217}, {0x250, 0x2a8},
|
||||
{0x2bb, 0x2c1}, {0x386, 0x386}, {0x388, 0x38a}, {0x38c, 0x38c},
|
||||
{0x38e, 0x3a1}, {0x3a3, 0x3ce}, {0x3d0, 0x3d6}, {0x3da, 0x3da},
|
||||
{0x3dc, 0x3dc}, {0x3de, 0x3de}, {0x3e0, 0x3e0}, {0x3e2, 0x3f3},
|
||||
{0x401, 0x40c}, {0x40e, 0x44f}, {0x451, 0x45c}, {0x45e, 0x481},
|
||||
{0x490, 0x4c4}, {0x4c7, 0x4c8}, {0x4cb, 0x4cc}, {0x4d0, 0x4eb},
|
||||
{0x4ee, 0x4f5}, {0x4f8, 0x4f9}, {0x531, 0x556}, {0x559, 0x559},
|
||||
{0x561, 0x586}, {0x5d0, 0x5ea}, {0x5f0, 0x5f2}, {0x621, 0x63a},
|
||||
{0x641, 0x64a}, {0x671, 0x6b7}, {0x6ba, 0x6be}, {0x6c0, 0x6ce},
|
||||
{0x6d0, 0x6d3}, {0x6d5, 0x6d5}, {0x6e5, 0x6e6}, {0x905, 0x939},
|
||||
{0x93d, 0x93d}, {0x958, 0x961}, {0x985, 0x98c}, {0x98f, 0x990},
|
||||
{0x993, 0x9a8}, {0x9aa, 0x9b0}, {0x9b2, 0x9b2}, {0x9b6, 0x9b9},
|
||||
{0x9dc, 0x9dd}, {0x9df, 0x9e1}, {0x9f0, 0x9f1}, {0xa05, 0xa0a},
|
||||
{0xa0f, 0xa10}, {0xa13, 0xa28}, {0xa2a, 0xa30}, {0xa32, 0xa33},
|
||||
{0xa35, 0xa36}, {0xa38, 0xa39}, {0xa59, 0xa5c}, {0xa5e, 0xa5e},
|
||||
{0xa72, 0xa74}, {0xa85, 0xa8b}, {0xa8d, 0xa8d}, {0xa8f, 0xa91},
|
||||
{0xa93, 0xaa8}, {0xaaa, 0xab0}, {0xab2, 0xab3}, {0xab5, 0xab9},
|
||||
{0xabd, 0xabd}, {0xae0, 0xae0}, {0xb05, 0xb0c}, {0xb0f, 0xb10},
|
||||
{0xb13, 0xb28}, {0xb2a, 0xb30}, {0xb32, 0xb33}, {0xb36, 0xb39},
|
||||
{0xb3d, 0xb3d}, {0xb5c, 0xb5d}, {0xb5f, 0xb61}, {0xb85, 0xb8a},
|
||||
{0xb8e, 0xb90}, {0xb92, 0xb95}, {0xb99, 0xb9a}, {0xb9c, 0xb9c},
|
||||
{0xb9e, 0xb9f}, {0xba3, 0xba4}, {0xba8, 0xbaa}, {0xbae, 0xbb5},
|
||||
{0xbb7, 0xbb9}, {0xc05, 0xc0c}, {0xc0e, 0xc10}, {0xc12, 0xc28},
|
||||
{0xc2a, 0xc33}, {0xc35, 0xc39}, {0xc60, 0xc61}, {0xc85, 0xc8c},
|
||||
{0xc8e, 0xc90}, {0xc92, 0xca8}, {0xcaa, 0xcb3}, {0xcb5, 0xcb9},
|
||||
{0xcde, 0xcde}, {0xce0, 0xce1}, {0xd05, 0xd0c}, {0xd0e, 0xd10},
|
||||
{0xd12, 0xd28}, {0xd2a, 0xd39}, {0xd60, 0xd61}, {0xe01, 0xe2e},
|
||||
{0xe30, 0xe30}, {0xe32, 0xe33}, {0xe40, 0xe45}, {0xe81, 0xe82},
|
||||
{0xe84, 0xe84}, {0xe87, 0xe88}, {0xe8a, 0xe8a}, {0xe8d, 0xe8d},
|
||||
{0xe94, 0xe97}, {0xe99, 0xe9f}, {0xea1, 0xea3}, {0xea5, 0xea5},
|
||||
{0xea7, 0xea7}, {0xeaa, 0xeab}, {0xead, 0xeae}, {0xeb0, 0xeb0},
|
||||
{0xeb2, 0xeb3}, {0xebd, 0xebd}, {0xec0, 0xec4}, {0xf40, 0xf47},
|
||||
{0xf49, 0xf69}, {0x10a0, 0x10c5}, {0x10d0, 0x10f6}, {0x1100, 0x1100},
|
||||
{0x1102, 0x1103}, {0x1105, 0x1107}, {0x1109, 0x1109}, {0x110b, 0x110c},
|
||||
{0x110e, 0x1112}, {0x113c, 0x113c}, {0x113e, 0x113e}, {0x1140, 0x1140},
|
||||
{0x114c, 0x114c}, {0x114e, 0x114e}, {0x1150, 0x1150}, {0x1154, 0x1155},
|
||||
{0x1159, 0x1159}, {0x115f, 0x1161}, {0x1163, 0x1163}, {0x1165, 0x1165},
|
||||
{0x1167, 0x1167}, {0x1169, 0x1169}, {0x116d, 0x116e}, {0x1172, 0x1173},
|
||||
{0x1175, 0x1175}, {0x119e, 0x119e}, {0x11a8, 0x11a8}, {0x11ab, 0x11ab},
|
||||
{0x11ae, 0x11af}, {0x11b7, 0x11b8}, {0x11ba, 0x11ba}, {0x11bc, 0x11c2},
|
||||
{0x11eb, 0x11eb}, {0x11f0, 0x11f0}, {0x11f9, 0x11f9}, {0x1e00, 0x1e9b},
|
||||
{0x1ea0, 0x1ef9}, {0x1f00, 0x1f15}, {0x1f18, 0x1f1d}, {0x1f20, 0x1f45},
|
||||
{0x1f48, 0x1f4d}, {0x1f50, 0x1f57}, {0x1f59, 0x1f59}, {0x1f5b, 0x1f5b},
|
||||
{0x1f5d, 0x1f5d}, {0x1f5f, 0x1f7d}, {0x1f80, 0x1fb4}, {0x1fb6, 0x1fbc},
|
||||
{0x1fbe, 0x1fbe}, {0x1fc2, 0x1fc4}, {0x1fc6, 0x1fcc}, {0x1fd0, 0x1fd3},
|
||||
{0x1fd6, 0x1fdb}, {0x1fe0, 0x1fec}, {0x1ff2, 0x1ff4}, {0x1ff6, 0x1ffc},
|
||||
{0x2126, 0x2126}, {0x212a, 0x212b}, {0x212e, 0x212e}, {0x2180, 0x2182},
|
||||
{0x3041, 0x3094}, {0x30a1, 0x30fa}, {0x3105, 0x312c}, {0xac00, 0xd7a3}};
|
||||
const xmlChRangeGroup xmlIsBaseCharGroup =
|
||||
{197, 0, xmlIsBaseChar_srng, (xmlChLRangePtr)0};
|
||||
|
||||
static const xmlChSRange xmlIsChar_srng[] = { {0x100, 0xd7ff},
|
||||
{0xe000, 0xfffd}};
|
||||
static const xmlChLRange xmlIsChar_lrng[] = { {0x10000, 0x10ffff}};
|
||||
const xmlChRangeGroup xmlIsCharGroup =
|
||||
{2, 1, xmlIsChar_srng, xmlIsChar_lrng};
|
||||
|
||||
static const xmlChSRange xmlIsCombining_srng[] = { {0x300, 0x345},
|
||||
{0x360, 0x361}, {0x483, 0x486}, {0x591, 0x5a1}, {0x5a3, 0x5b9},
|
||||
{0x5bb, 0x5bd}, {0x5bf, 0x5bf}, {0x5c1, 0x5c2}, {0x5c4, 0x5c4},
|
||||
{0x64b, 0x652}, {0x670, 0x670}, {0x6d6, 0x6dc}, {0x6dd, 0x6df},
|
||||
{0x6e0, 0x6e4}, {0x6e7, 0x6e8}, {0x6ea, 0x6ed}, {0x901, 0x903},
|
||||
{0x93c, 0x93c}, {0x93e, 0x94c}, {0x94d, 0x94d}, {0x951, 0x954},
|
||||
{0x962, 0x963}, {0x981, 0x983}, {0x9bc, 0x9bc}, {0x9be, 0x9be},
|
||||
{0x9bf, 0x9bf}, {0x9c0, 0x9c4}, {0x9c7, 0x9c8}, {0x9cb, 0x9cd},
|
||||
{0x9d7, 0x9d7}, {0x9e2, 0x9e3}, {0xa02, 0xa02}, {0xa3c, 0xa3c},
|
||||
{0xa3e, 0xa3e}, {0xa3f, 0xa3f}, {0xa40, 0xa42}, {0xa47, 0xa48},
|
||||
{0xa4b, 0xa4d}, {0xa70, 0xa71}, {0xa81, 0xa83}, {0xabc, 0xabc},
|
||||
{0xabe, 0xac5}, {0xac7, 0xac9}, {0xacb, 0xacd}, {0xb01, 0xb03},
|
||||
{0xb3c, 0xb3c}, {0xb3e, 0xb43}, {0xb47, 0xb48}, {0xb4b, 0xb4d},
|
||||
{0xb56, 0xb57}, {0xb82, 0xb83}, {0xbbe, 0xbc2}, {0xbc6, 0xbc8},
|
||||
{0xbca, 0xbcd}, {0xbd7, 0xbd7}, {0xc01, 0xc03}, {0xc3e, 0xc44},
|
||||
{0xc46, 0xc48}, {0xc4a, 0xc4d}, {0xc55, 0xc56}, {0xc82, 0xc83},
|
||||
{0xcbe, 0xcc4}, {0xcc6, 0xcc8}, {0xcca, 0xccd}, {0xcd5, 0xcd6},
|
||||
{0xd02, 0xd03}, {0xd3e, 0xd43}, {0xd46, 0xd48}, {0xd4a, 0xd4d},
|
||||
{0xd57, 0xd57}, {0xe31, 0xe31}, {0xe34, 0xe3a}, {0xe47, 0xe4e},
|
||||
{0xeb1, 0xeb1}, {0xeb4, 0xeb9}, {0xebb, 0xebc}, {0xec8, 0xecd},
|
||||
{0xf18, 0xf19}, {0xf35, 0xf35}, {0xf37, 0xf37}, {0xf39, 0xf39},
|
||||
{0xf3e, 0xf3e}, {0xf3f, 0xf3f}, {0xf71, 0xf84}, {0xf86, 0xf8b},
|
||||
{0xf90, 0xf95}, {0xf97, 0xf97}, {0xf99, 0xfad}, {0xfb1, 0xfb7},
|
||||
{0xfb9, 0xfb9}, {0x20d0, 0x20dc}, {0x20e1, 0x20e1}, {0x302a, 0x302f},
|
||||
{0x3099, 0x3099}, {0x309a, 0x309a}};
|
||||
const xmlChRangeGroup xmlIsCombiningGroup =
|
||||
{95, 0, xmlIsCombining_srng, (xmlChLRangePtr)0};
|
||||
|
||||
static const xmlChSRange xmlIsDigit_srng[] = { {0x660, 0x669},
|
||||
{0x6f0, 0x6f9}, {0x966, 0x96f}, {0x9e6, 0x9ef}, {0xa66, 0xa6f},
|
||||
{0xae6, 0xaef}, {0xb66, 0xb6f}, {0xbe7, 0xbef}, {0xc66, 0xc6f},
|
||||
{0xce6, 0xcef}, {0xd66, 0xd6f}, {0xe50, 0xe59}, {0xed0, 0xed9},
|
||||
{0xf20, 0xf29}};
|
||||
const xmlChRangeGroup xmlIsDigitGroup =
|
||||
{14, 0, xmlIsDigit_srng, (xmlChLRangePtr)0};
|
||||
|
||||
static const xmlChSRange xmlIsExtender_srng[] = { {0x2d0, 0x2d0},
|
||||
{0x2d1, 0x2d1}, {0x387, 0x387}, {0x640, 0x640}, {0xe46, 0xe46},
|
||||
{0xec6, 0xec6}, {0x3005, 0x3005}, {0x3031, 0x3035}, {0x309d, 0x309e},
|
||||
{0x30fc, 0x30fe}};
|
||||
const xmlChRangeGroup xmlIsExtenderGroup =
|
||||
{10, 0, xmlIsExtender_srng, (xmlChLRangePtr)0};
|
||||
|
||||
static const xmlChSRange xmlIsIdeographic_srng[] = { {0x3007, 0x3007},
|
||||
{0x3021, 0x3029}, {0x4e00, 0x9fa5}};
|
||||
const xmlChRangeGroup xmlIsIdeographicGroup =
|
||||
{3, 0, xmlIsIdeographic_srng, (xmlChLRangePtr)0};
|
||||
|
||||
|
||||
/**
|
||||
* xmlCharInRange:
|
||||
* @val: character to be validated
|
||||
* @rptr: pointer to range to be used to validate
|
||||
*
|
||||
* Does a binary search of the range table to determine if char
|
||||
* is valid
|
||||
*
|
||||
* Returns: true if character valid, false otherwise
|
||||
*/
|
||||
int
|
||||
xmlCharInRange (unsigned int val, const xmlChRangeGroup *rptr) {
|
||||
int low, high, mid;
|
||||
const xmlChSRange *sptr;
|
||||
const xmlChLRange *lptr;
|
||||
|
||||
if (rptr == NULL) return(0);
|
||||
if (val < 0x10000) { /* is val in 'short' or 'long' array? */
|
||||
if (rptr->nbShortRange == 0)
|
||||
return 0;
|
||||
low = 0;
|
||||
high = rptr->nbShortRange - 1;
|
||||
sptr = rptr->shortRange;
|
||||
while (low <= high) {
|
||||
mid = (low + high) / 2;
|
||||
if ((unsigned short) val < sptr[mid].low) {
|
||||
high = mid - 1;
|
||||
} else {
|
||||
if ((unsigned short) val > sptr[mid].high) {
|
||||
low = mid + 1;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (rptr->nbLongRange == 0) {
|
||||
return 0;
|
||||
}
|
||||
low = 0;
|
||||
high = rptr->nbLongRange - 1;
|
||||
lptr = rptr->longRange;
|
||||
while (low <= high) {
|
||||
mid = (low + high) / 2;
|
||||
if (val < lptr[mid].low) {
|
||||
high = mid - 1;
|
||||
} else {
|
||||
if (val > lptr[mid].high) {
|
||||
low = mid + 1;
|
||||
} else {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* xmlIsBaseChar:
|
||||
* @ch: character to validate
|
||||
*
|
||||
* This function is DEPRECATED.
|
||||
* Use xmlIsBaseChar_ch or xmlIsBaseCharQ instead
|
||||
*
|
||||
* Returns true if argument valid, false otherwise
|
||||
*/
|
||||
int
|
||||
xmlIsBaseChar(unsigned int ch) {
|
||||
return(xmlIsBaseCharQ(ch));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* xmlIsBlank:
|
||||
* @ch: character to validate
|
||||
*
|
||||
* This function is DEPRECATED.
|
||||
* Use xmlIsBlank_ch or xmlIsBlankQ instead
|
||||
*
|
||||
* Returns true if argument valid, false otherwise
|
||||
*/
|
||||
int
|
||||
xmlIsBlank(unsigned int ch) {
|
||||
return(xmlIsBlankQ(ch));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* xmlIsChar:
|
||||
* @ch: character to validate
|
||||
*
|
||||
* This function is DEPRECATED.
|
||||
* Use xmlIsChar_ch or xmlIsCharQ instead
|
||||
*
|
||||
* Returns true if argument valid, false otherwise
|
||||
*/
|
||||
int
|
||||
xmlIsChar(unsigned int ch) {
|
||||
return(xmlIsCharQ(ch));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* xmlIsCombining:
|
||||
* @ch: character to validate
|
||||
*
|
||||
* This function is DEPRECATED.
|
||||
* Use xmlIsCombiningQ instead
|
||||
*
|
||||
* Returns true if argument valid, false otherwise
|
||||
*/
|
||||
int
|
||||
xmlIsCombining(unsigned int ch) {
|
||||
return(xmlIsCombiningQ(ch));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* xmlIsDigit:
|
||||
* @ch: character to validate
|
||||
*
|
||||
* This function is DEPRECATED.
|
||||
* Use xmlIsDigit_ch or xmlIsDigitQ instead
|
||||
*
|
||||
* Returns true if argument valid, false otherwise
|
||||
*/
|
||||
int
|
||||
xmlIsDigit(unsigned int ch) {
|
||||
return(xmlIsDigitQ(ch));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* xmlIsExtender:
|
||||
* @ch: character to validate
|
||||
*
|
||||
* This function is DEPRECATED.
|
||||
* Use xmlIsExtender_ch or xmlIsExtenderQ instead
|
||||
*
|
||||
* Returns true if argument valid, false otherwise
|
||||
*/
|
||||
int
|
||||
xmlIsExtender(unsigned int ch) {
|
||||
return(xmlIsExtenderQ(ch));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* xmlIsIdeographic:
|
||||
* @ch: character to validate
|
||||
*
|
||||
* This function is DEPRECATED.
|
||||
* Use xmlIsIdeographicQ instead
|
||||
*
|
||||
* Returns true if argument valid, false otherwise
|
||||
*/
|
||||
int
|
||||
xmlIsIdeographic(unsigned int ch) {
|
||||
return(xmlIsIdeographicQ(ch));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* xmlIsPubidChar:
|
||||
* @ch: character to validate
|
||||
*
|
||||
* This function is DEPRECATED.
|
||||
* Use xmlIsPubidChar_ch or xmlIsPubidCharQ instead
|
||||
*
|
||||
* Returns true if argument valid, false otherwise
|
||||
*/
|
||||
int
|
||||
xmlIsPubidChar(unsigned int ch) {
|
||||
return(xmlIsPubidCharQ(ch));
|
||||
}
|
||||
|
||||
#define bottom_chvalid
|
||||
#include "elfgcchack.h"
|
||||
361
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/chvalid.def
Normal file
361
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/chvalid.def
Normal file
@@ -0,0 +1,361 @@
|
||||
name xmlIsChar
|
||||
ur 0x9
|
||||
ur 0xA
|
||||
ur 0xD
|
||||
ur 0x20..0xFF
|
||||
ur 0x0100..0xD7FF
|
||||
ur 0xE000..0xFFFD
|
||||
ur 0x10000..0x10FFFF
|
||||
end xmlIsChar
|
||||
|
||||
name xmlIsPubidChar
|
||||
ur 0x20 0x0d 0x0a 'a'..'z' 'A'..'Z' '0'..'9'
|
||||
ur '-' 0x27 '(' ')' '+' ',' '.' '/'
|
||||
ur ':' '=' '?' ';' '!' '*' '#' '@'
|
||||
ur '$' '_' '%'
|
||||
end
|
||||
|
||||
name xmlIsBlank
|
||||
ur 0x09 0x0a 0x0d 0x20
|
||||
end xmlIsBlank
|
||||
|
||||
name xmlIsBaseChar
|
||||
ur 0x0041..0x005A
|
||||
ur 0x0061..0x007A
|
||||
ur 0x00C0..0x00D6
|
||||
ur 0x00D8..0x00F6
|
||||
ur 0x00F8..0x00FF
|
||||
ur 0x0100..0x0131
|
||||
ur 0x0134..0x013E
|
||||
ur 0x0141..0x0148
|
||||
ur 0x014A..0x017E
|
||||
ur 0x0180..0x01C3
|
||||
ur 0x01CD..0x01F0
|
||||
ur 0x01F4..0x01F5
|
||||
ur 0x01FA..0x0217
|
||||
ur 0x0250..0x02A8
|
||||
ur 0x02BB..0x02C1
|
||||
ur 0x0386
|
||||
ur 0x0388..0x038A
|
||||
ur 0x038C
|
||||
ur 0x038E..0x03A1
|
||||
ur 0x03A3..0x03CE
|
||||
ur 0x03D0..0x03D6
|
||||
ur 0x03DA
|
||||
ur 0x03DC
|
||||
ur 0x03DE
|
||||
ur 0x03E0
|
||||
ur 0x03E2..0x03F3
|
||||
ur 0x0401..0x040C
|
||||
ur 0x040E..0x044F
|
||||
ur 0x0451..0x045C
|
||||
ur 0x045E..0x0481
|
||||
ur 0x0490..0x04C4
|
||||
ur 0x04C7..0x04C8
|
||||
ur 0x04CB..0x04CC
|
||||
ur 0x04D0..0x04EB
|
||||
ur 0x04EE..0x04F5
|
||||
ur 0x04F8..0x04F9
|
||||
ur 0x0531..0x0556
|
||||
ur 0x0559
|
||||
ur 0x0561..0x0586
|
||||
ur 0x05D0..0x05EA
|
||||
ur 0x05F0..0x05F2
|
||||
ur 0x0621..0x063A
|
||||
ur 0x0641..0x064A
|
||||
ur 0x0671..0x06B7
|
||||
ur 0x06BA..0x06BE
|
||||
ur 0x06C0..0x06CE
|
||||
ur 0x06D0..0x06D3
|
||||
ur 0x06D5
|
||||
ur 0x06E5..0x06E6
|
||||
ur 0x0905..0x0939
|
||||
ur 0x093D
|
||||
ur 0x0958..0x0961
|
||||
ur 0x0985..0x098C
|
||||
ur 0x098F..0x0990
|
||||
ur 0x0993..0x09A8
|
||||
ur 0x09AA..0x09B0
|
||||
ur 0x09B2
|
||||
ur 0x09B6..0x09B9
|
||||
ur 0x09DC..0x09DD
|
||||
ur 0x09DF..0x09E1
|
||||
ur 0x09F0..0x09F1
|
||||
ur 0x0A05..0x0A0A
|
||||
ur 0x0A0F..0x0A10
|
||||
ur 0x0A13..0x0A28
|
||||
ur 0x0A2A..0x0A30
|
||||
ur 0x0A32..0x0A33
|
||||
ur 0x0A35..0x0A36
|
||||
ur 0x0A38..0x0A39
|
||||
ur 0x0A59..0x0A5C
|
||||
ur 0x0A5E
|
||||
ur 0x0A72..0x0A74
|
||||
ur 0x0A85..0x0A8B
|
||||
ur 0x0A8D
|
||||
ur 0x0A8F..0x0A91
|
||||
ur 0x0A93..0x0AA8
|
||||
ur 0x0AAA..0x0AB0
|
||||
ur 0x0AB2..0x0AB3
|
||||
ur 0x0AB5..0x0AB9
|
||||
ur 0x0ABD
|
||||
ur 0x0AE0
|
||||
ur 0x0B05..0x0B0C
|
||||
ur 0x0B0F..0x0B10
|
||||
ur 0x0B13..0x0B28
|
||||
ur 0x0B2A..0x0B30
|
||||
ur 0x0B32..0x0B33
|
||||
ur 0x0B36..0x0B39
|
||||
ur 0x0B3D
|
||||
ur 0x0B5C..0x0B5D
|
||||
ur 0x0B5F..0x0B61
|
||||
ur 0x0B85..0x0B8A
|
||||
ur 0x0B8E..0x0B90
|
||||
ur 0x0B92..0x0B95
|
||||
ur 0x0B99..0x0B9A
|
||||
ur 0x0B9C
|
||||
ur 0x0B9E..0x0B9F
|
||||
ur 0x0BA3..0x0BA4
|
||||
ur 0x0BA8..0x0BAA
|
||||
ur 0x0BAE..0x0BB5
|
||||
ur 0x0BB7..0x0BB9
|
||||
ur 0x0C05..0x0C0C
|
||||
ur 0x0C0E..0x0C10
|
||||
ur 0x0C12..0x0C28
|
||||
ur 0x0C2A..0x0C33
|
||||
ur 0x0C35..0x0C39
|
||||
ur 0x0C60..0x0C61
|
||||
ur 0x0C85..0x0C8C
|
||||
ur 0x0C8E..0x0C90
|
||||
ur 0x0C92..0x0CA8
|
||||
ur 0x0CAA..0x0CB3
|
||||
ur 0x0CB5..0x0CB9
|
||||
ur 0x0CDE
|
||||
ur 0x0CE0..0x0CE1
|
||||
ur 0x0D05..0x0D0C
|
||||
ur 0x0D0E..0x0D10
|
||||
ur 0x0D12..0x0D28
|
||||
ur 0x0D2A..0x0D39
|
||||
ur 0x0D60..0x0D61
|
||||
ur 0x0E01..0x0E2E
|
||||
ur 0x0E30
|
||||
ur 0x0E32..0x0E33
|
||||
ur 0x0E40..0x0E45
|
||||
ur 0x0E81..0x0E82
|
||||
ur 0x0E84
|
||||
ur 0x0E87..0x0E88
|
||||
ur 0x0E8A
|
||||
ur 0x0E8D
|
||||
ur 0x0E94..0x0E97
|
||||
ur 0x0E99..0x0E9F
|
||||
ur 0x0EA1..0x0EA3
|
||||
ur 0x0EA5
|
||||
ur 0x0EA7
|
||||
ur 0x0EAA..0x0EAB
|
||||
ur 0x0EAD..0x0EAE
|
||||
ur 0x0EB0
|
||||
ur 0x0EB2..0x0EB3
|
||||
ur 0x0EBD
|
||||
ur 0x0EC0..0x0EC4
|
||||
ur 0x0F40..0x0F47
|
||||
ur 0x0F49..0x0F69
|
||||
ur 0x10A0..0x10C5
|
||||
ur 0x10D0..0x10F6
|
||||
ur 0x1100
|
||||
ur 0x1102..0x1103
|
||||
ur 0x1105..0x1107
|
||||
ur 0x1109
|
||||
ur 0x110B..0x110C
|
||||
ur 0x110E..0x1112
|
||||
ur 0x113C
|
||||
ur 0x113E
|
||||
ur 0x1140
|
||||
ur 0x114C
|
||||
ur 0x114E
|
||||
ur 0x1150
|
||||
ur 0x1154..0x1155
|
||||
ur 0x1159
|
||||
ur 0x115F..0x1161
|
||||
ur 0x1163
|
||||
ur 0x1165
|
||||
ur 0x1167
|
||||
ur 0x1169
|
||||
ur 0x116D..0x116E
|
||||
ur 0x1172..0x1173
|
||||
ur 0x1175
|
||||
ur 0x119E
|
||||
ur 0x11A8
|
||||
ur 0x11AB
|
||||
ur 0x11AE..0x11AF
|
||||
ur 0x11B7..0x11B8
|
||||
ur 0x11BA
|
||||
ur 0x11BC..0x11C2
|
||||
ur 0x11EB
|
||||
ur 0x11F0
|
||||
ur 0x11F9
|
||||
ur 0x1E00..0x1E9B
|
||||
ur 0x1EA0..0x1EF9
|
||||
ur 0x1F00..0x1F15
|
||||
ur 0x1F18..0x1F1D
|
||||
ur 0x1F20..0x1F45
|
||||
ur 0x1F48..0x1F4D
|
||||
ur 0x1F50..0x1F57
|
||||
ur 0x1F59
|
||||
ur 0x1F5B
|
||||
ur 0x1F5D
|
||||
ur 0x1F5F..0x1F7D
|
||||
ur 0x1F80..0x1FB4
|
||||
ur 0x1FB6..0x1FBC
|
||||
ur 0x1FBE
|
||||
ur 0x1FC2..0x1FC4
|
||||
ur 0x1FC6..0x1FCC
|
||||
ur 0x1FD0..0x1FD3
|
||||
ur 0x1FD6..0x1FDB
|
||||
ur 0x1FE0..0x1FEC
|
||||
ur 0x1FF2..0x1FF4
|
||||
ur 0x1FF6..0x1FFC
|
||||
ur 0x2126
|
||||
ur 0x212A..0x212B
|
||||
ur 0x212E
|
||||
ur 0x2180..0x2182
|
||||
ur 0x3041..0x3094
|
||||
ur 0x30A1..0x30FA
|
||||
ur 0x3105..0x312C
|
||||
ur 0xAC00..0xD7A3
|
||||
end xmlIsBaseChar
|
||||
|
||||
name xmlIsIdeographic
|
||||
ur 0x4E00..0x9FA5
|
||||
ur 0x3007
|
||||
ur 0x3021..0x3029
|
||||
end xmlIsIdeographic
|
||||
|
||||
name xmlIsCombining
|
||||
ur 0x0300..0x0345
|
||||
ur 0x0360..0x0361
|
||||
ur 0x0483..0x0486
|
||||
ur 0x0591..0x05A1
|
||||
ur 0x05A3..0x05B9
|
||||
ur 0x05BB..0x05BD
|
||||
ur 0x05BF
|
||||
ur 0x05C1..0x05C2
|
||||
ur 0x05C4
|
||||
ur 0x064B..0x0652
|
||||
ur 0x0670
|
||||
ur 0x06D6..0x06DC
|
||||
ur 0x06DD..0x06DF
|
||||
ur 0x06E0..0x06E4
|
||||
ur 0x06E7..0x06E8
|
||||
ur 0x06EA..0x06ED
|
||||
ur 0x0901..0x0903
|
||||
ur 0x093C
|
||||
ur 0x093E..0x094C
|
||||
ur 0x094D
|
||||
ur 0x0951..0x0954
|
||||
ur 0x0962..0x0963
|
||||
ur 0x0981..0x0983
|
||||
ur 0x09BC
|
||||
ur 0x09BE
|
||||
ur 0x09BF
|
||||
ur 0x09C0..0x09C4
|
||||
ur 0x09C7..0x09C8
|
||||
ur 0x09CB..0x09CD
|
||||
ur 0x09D7
|
||||
ur 0x09E2..0x09E3
|
||||
ur 0x0A02
|
||||
ur 0x0A3C
|
||||
ur 0x0A3E
|
||||
ur 0x0A3F
|
||||
ur 0x0A40..0x0A42
|
||||
ur 0x0A47..0x0A48
|
||||
ur 0x0A4B..0x0A4D
|
||||
ur 0x0A70..0x0A71
|
||||
ur 0x0A81..0x0A83
|
||||
ur 0x0ABC
|
||||
ur 0x0ABE..0x0AC5
|
||||
ur 0x0AC7..0x0AC9
|
||||
ur 0x0ACB..0x0ACD
|
||||
ur 0x0B01..0x0B03
|
||||
ur 0x0B3C
|
||||
ur 0x0B3E..0x0B43
|
||||
ur 0x0B47..0x0B48
|
||||
ur 0x0B4B..0x0B4D
|
||||
ur 0x0B56..0x0B57
|
||||
ur 0x0B82..0x0B83
|
||||
ur 0x0BBE..0x0BC2
|
||||
ur 0x0BC6..0x0BC8
|
||||
ur 0x0BCA..0x0BCD
|
||||
ur 0x0BD7
|
||||
ur 0x0C01..0x0C03
|
||||
ur 0x0C3E..0x0C44
|
||||
ur 0x0C46..0x0C48
|
||||
ur 0x0C4A..0x0C4D
|
||||
ur 0x0C55..0x0C56
|
||||
ur 0x0C82..0x0C83
|
||||
ur 0x0CBE..0x0CC4
|
||||
ur 0x0CC6..0x0CC8
|
||||
ur 0x0CCA..0x0CCD
|
||||
ur 0x0CD5..0x0CD6
|
||||
ur 0x0D02..0x0D03
|
||||
ur 0x0D3E..0x0D43
|
||||
ur 0x0D46..0x0D48
|
||||
ur 0x0D4A..0x0D4D
|
||||
ur 0x0D57
|
||||
ur 0x0E31
|
||||
ur 0x0E34..0x0E3A
|
||||
ur 0x0E47..0x0E4E
|
||||
ur 0x0EB1
|
||||
ur 0x0EB4..0x0EB9
|
||||
ur 0x0EBB..0x0EBC
|
||||
ur 0x0EC8..0x0ECD
|
||||
ur 0x0F18..0x0F19
|
||||
ur 0x0F35
|
||||
ur 0x0F37
|
||||
ur 0x0F39
|
||||
ur 0x0F3E
|
||||
ur 0x0F3F
|
||||
ur 0x0F71..0x0F84
|
||||
ur 0x0F86..0x0F8B
|
||||
ur 0x0F90..0x0F95
|
||||
ur 0x0F97
|
||||
ur 0x0F99..0x0FAD
|
||||
ur 0x0FB1..0x0FB7
|
||||
ur 0x0FB9
|
||||
ur 0x20D0..0x20DC
|
||||
ur 0x20E1
|
||||
ur 0x302A..0x302F
|
||||
ur 0x3099
|
||||
ur 0x309A
|
||||
end xmlIsCombining
|
||||
|
||||
name xmlIsDigit
|
||||
ur 0x0030..0x0039
|
||||
ur 0x0660..0x0669
|
||||
ur 0x06F0..0x06F9
|
||||
ur 0x0966..0x096F
|
||||
ur 0x09E6..0x09EF
|
||||
ur 0x0A66..0x0A6F
|
||||
ur 0x0AE6..0x0AEF
|
||||
ur 0x0B66..0x0B6F
|
||||
ur 0x0BE7..0x0BEF
|
||||
ur 0x0C66..0x0C6F
|
||||
ur 0x0CE6..0x0CEF
|
||||
ur 0x0D66..0x0D6F
|
||||
ur 0x0E50..0x0E59
|
||||
ur 0x0ED0..0x0ED9
|
||||
ur 0x0F20..0x0F29
|
||||
end xmlIsDigit
|
||||
|
||||
name xmlIsExtender
|
||||
ur 0x00B7
|
||||
ur 0x02D0
|
||||
ur 0x02D1
|
||||
ur 0x0387
|
||||
ur 0x0640
|
||||
ur 0x0E46
|
||||
ur 0x0EC6
|
||||
ur 0x3005
|
||||
ur 0x3031..0x3035
|
||||
ur 0x309D..0x309E
|
||||
ur 0x30FC..0x30FE
|
||||
end xmlIsExtender
|
||||
1599
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/configure.in
Normal file
1599
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/configure.in
Normal file
File diff suppressed because it is too large
Load Diff
43
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/dbgen.pl
Normal file
43
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/dbgen.pl
Normal file
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
$size = shift;
|
||||
|
||||
if ($size eq "")
|
||||
{
|
||||
die "usage: dbgen.pl [size]\n";
|
||||
}
|
||||
|
||||
@firstnames = ("Al", "Bob", "Charles", "David", "Egon", "Farbood",
|
||||
"George", "Hank", "Inki", "James");
|
||||
@lastnames = ("Aranow", "Barker", "Corsetti", "Dershowitz", "Engleman",
|
||||
"Franklin", "Grice", "Haverford", "Ilvedson", "Jones");
|
||||
@states = ("AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA",
|
||||
"HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD",
|
||||
"MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ",
|
||||
"NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC",
|
||||
"SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY");
|
||||
|
||||
print "<?xml version=\"1.0\"?>\n";
|
||||
print "\n";
|
||||
print "<table>\n";
|
||||
|
||||
for ($i=0; $i<$size; $i++)
|
||||
{
|
||||
$first = $firstnames [$i % 10];
|
||||
$last = $lastnames [($i / 10) % 10];
|
||||
$state = $states [($i / 100) % 50];
|
||||
$zip = 22000 + $i / 5000;
|
||||
|
||||
printf " <row>\n";
|
||||
printf " <id>%04d</id>\n", $i;
|
||||
printf " <firstname>$first</firstname>\n", $i;
|
||||
printf " <lastname>$last</lastname>\n", $i;
|
||||
printf " <street>%d Any St.</street>\n", ($i % 100) + 1;
|
||||
printf " <city>Anytown</city>\n";
|
||||
printf " <state>$state</state>\n";
|
||||
printf " <zip>%d</zip>\n", $zip;
|
||||
printf " </row>\n";
|
||||
}
|
||||
|
||||
print "</table>\n";
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
$size = shift;
|
||||
|
||||
if ($size eq "")
|
||||
{
|
||||
die "usage: dbgen.pl [size]\n";
|
||||
}
|
||||
|
||||
@firstnames = ("Al", "Bob", "Charles", "David", "Egon", "Farbood",
|
||||
"George", "Hank", "Inki", "James");
|
||||
@lastnames = ("Aranow", "Barker", "Corsetti", "Dershowitz", "Engleman",
|
||||
"Franklin", "Grice", "Haverford", "Ilvedson", "Jones");
|
||||
@states = ("AL", "AK", "AZ", "AR", "CA", "CO", "CT", "DE", "FL", "GA",
|
||||
"HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MD",
|
||||
"MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ",
|
||||
"NM", "NY", "NC", "ND", "OH", "OK", "OR", "PA", "RI", "SC",
|
||||
"SD", "TN", "TX", "UT", "VT", "VA", "WA", "WV", "WI", "WY");
|
||||
|
||||
print "<?xml version=\"1.0\"?>\n";
|
||||
print "\n";
|
||||
print "<table>\n";
|
||||
|
||||
for ($i=0; $i<$size; $i++)
|
||||
{
|
||||
$first = $firstnames [$i % 10];
|
||||
$last = $lastnames [($i / 10) % 10];
|
||||
$state = $states [($i / 100) % 50];
|
||||
$zip = 22000 + $i / 5000;
|
||||
|
||||
printf " <row\n";
|
||||
printf " id='%04d'\n", $i;
|
||||
printf " firstname='$first'\n", $i;
|
||||
printf " lastname='$last'\n", $i;
|
||||
printf " street='%d Any St.'\n", ($i % 100) + 1;
|
||||
printf " city='Anytown'\n";
|
||||
printf " state='$state'\n";
|
||||
printf " zip='%d'/>\n", $zip;
|
||||
}
|
||||
|
||||
print "</table>\n";
|
||||
|
||||
3421
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/debugXML.c
Normal file
3421
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/debugXML.c
Normal file
File diff suppressed because it is too large
Load Diff
1259
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/dict.c
Normal file
1259
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/dict.c
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
1001
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/doc/APIchunk24.html
Normal file
1001
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/doc/APIchunk24.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
3590
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/doc/APIfiles.html
Normal file
3590
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/doc/APIfiles.html
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
3586
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/doc/APIsymbols.html
Normal file
3586
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/doc/APIsymbols.html
Normal file
File diff suppressed because one or more lines are too long
@@ -0,0 +1,49 @@
|
||||
#!/bin/awk -f
|
||||
function translate(str) {
|
||||
while (sub(/&/, "#amp;", str) == 1);
|
||||
while (sub(/#amp;/, "\\&", str) == 1); # fun isn't it ?
|
||||
while (sub(/</, "\\<", str) == 1);
|
||||
while (sub(/>/, "\\>", str) == 1);
|
||||
sub(/[0-9][0-9][0-9][0-9][0-9]+/, "<bug number='&'/>", str)
|
||||
return(str)
|
||||
}
|
||||
BEGIN {
|
||||
nb_entry = 0
|
||||
in_entry = 0
|
||||
in_item = 0
|
||||
print "<?xml version='1.0' encoding='ISO-8859-1'?>"
|
||||
print "<log>"
|
||||
}
|
||||
END {
|
||||
if (in_item == 1) printf("%s</item>\n", translate(item))
|
||||
if (in_entry == 1) print " </entry>"
|
||||
print "</log>"
|
||||
}
|
||||
/^[ \t]*$/ { next }
|
||||
/^[A-Za-z0-9]/ {
|
||||
match($0, "\(.*\) \([A-Z]+\) \([0-9][0-9][0-9][0-9]\) \(.*\) <\(.*\)>", loge)
|
||||
if (in_item == 1) printf("%s</item>\n", translate(item))
|
||||
if (in_entry == 1) print " </entry>"
|
||||
nb_entry = nb_entry + 1
|
||||
if (nb_entry > 50) {
|
||||
in_entry = 0
|
||||
in_item = 0
|
||||
exit
|
||||
}
|
||||
in_entry = 1
|
||||
in_item = 0
|
||||
printf(" <entry date='%s' timezone='%s' year='%s'\n who='%s' email='%s'>\n", loge[1], loge[2], loge[3], loge[4], loge[5])
|
||||
}
|
||||
/^[ \t]*\*/ {
|
||||
if (in_item == 1) printf("%s</item>\n", translate(item))
|
||||
in_item = 1
|
||||
printf(" <item>")
|
||||
match($0, "[ \t]*. *\(.*\)", loge)
|
||||
item = loge[1]
|
||||
}
|
||||
/^[ \t]*[a-zA-Z0-9\#]/ {
|
||||
if (in_item == 1) {
|
||||
match($0, "[ \t]*\(.*\)[ \t]*", loge)
|
||||
item = sprintf("%s %s", item, loge[1])
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,117 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- this stylesheet builds the ChangeLog.html -->
|
||||
<xsl:stylesheet version="1.0"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
|
||||
<!-- Import the rest of the site stylesheets -->
|
||||
<xsl:import href="site.xsl"/>
|
||||
|
||||
<!-- Generate XHTML-1.0 transitional -->
|
||||
<xsl:output method="xml" encoding="UTF-8" indent="yes"
|
||||
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
|
||||
|
||||
<xsl:param name="module">libxml2</xsl:param>
|
||||
|
||||
<!-- The table of content for the HTML page -->
|
||||
<xsl:variable name="menu_name">API Menu</xsl:variable>
|
||||
<xsl:variable name="develtoc">
|
||||
<form action="../search.php"
|
||||
enctype="application/x-www-form-urlencoded" method="get">
|
||||
<input name="query" type="text" size="20" value=""/>
|
||||
<input name="submit" type="submit" value="Search ..."/>
|
||||
</form>
|
||||
<ul><!-- style="margin-left: -1em" -->
|
||||
<li><a style="font-weight:bold"
|
||||
href="{$href_base}index.html">Main Menu</a></li>
|
||||
<li><a style="font-weight:bold"
|
||||
href="{$href_base}docs.html">Developer Menu</a></li>
|
||||
<li><a style="font-weight:bold"
|
||||
href="{$href_base}html/index.html">Modules Index</a></li>
|
||||
<li><a style="font-weight:bold"
|
||||
href="{$href_base}examples/index.html">Code Examples</a></li>
|
||||
<li><a style="font-weight:bold"
|
||||
href="index.html">API Menu</a></li>
|
||||
<li><a href="html/libxml-parser.html">Parser API</a></li>
|
||||
<li><a href="html/libxml-tree.html">Tree API</a></li>
|
||||
<li><a href="html/libxml-xmlreader.html">Reader API</a></li>
|
||||
<li><a href="{$href_base}guidelines.html">XML Guidelines</a></li>
|
||||
</ul>
|
||||
</xsl:variable>
|
||||
|
||||
<xsl:template match="bug">
|
||||
<a href="http://bugzilla.gnome.org/show_bug.cgi?id={@number}">
|
||||
<xsl:value-of select="@number"/></a>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="item">
|
||||
<li><xsl:apply-templates/></li>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="entry">
|
||||
|
||||
<p>
|
||||
<b><xsl:value-of select="@who"/></b>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:value-of select="@date"/>
|
||||
<xsl:text> </xsl:text>
|
||||
<xsl:value-of select="@timezone"/>
|
||||
<ul>
|
||||
<xsl:apply-templates select="item"/>
|
||||
</ul>
|
||||
</p>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="log">
|
||||
<xsl:variable name="title">ChangeLog last entries of <xsl:value-of select="$module"/></xsl:variable>
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="style"/>
|
||||
<xsl:element name="title">
|
||||
<xsl:value-of select="$title"/>
|
||||
</xsl:element>
|
||||
</head>
|
||||
<body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000">
|
||||
<xsl:call-template name="titlebox">
|
||||
<xsl:with-param name="title" select="$title"/>
|
||||
</xsl:call-template>
|
||||
<table border="0" cellpadding="4" cellspacing="0" width="100%" align="center">
|
||||
<tr>
|
||||
<td bgcolor="#8b7765">
|
||||
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
||||
<tr>
|
||||
<td valign="top" width="200" bgcolor="#8b7765">
|
||||
<xsl:call-template name="develtoc"/>
|
||||
</td>
|
||||
<td valign="top" bgcolor="#8b7765">
|
||||
<table border="0" cellspacing="0" cellpadding="1" width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000">
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellpadding="3" cellspacing="1" width="100%">
|
||||
<tr>
|
||||
<td bgcolor="#fffacd">
|
||||
<xsl:apply-templates select="entry"/>
|
||||
<p><a href="{$href_base}bugs.html">Daniel Veillard</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
64
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/doc/DOM.fig
Normal file
64
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/doc/DOM.fig
Normal file
@@ -0,0 +1,64 @@
|
||||
#FIG 3.2
|
||||
Landscape
|
||||
Center
|
||||
Inches
|
||||
Letter
|
||||
100.00
|
||||
Single
|
||||
-2
|
||||
1200 2
|
||||
2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
|
||||
825 1125 2625 1125 2625 3375 825 3375 825 1125
|
||||
2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
|
||||
4125 1125 5925 1125 5925 3375 4125 3375 4125 1125
|
||||
2 4 0 1 0 7 0 0 -1 0.000 0 0 7 0 0 5
|
||||
2025 3075 2025 1650 1050 1650 1050 3075 2025 3075
|
||||
2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
|
||||
1425 1875 1575 1875 1575 2025 1425 2025 1425 1875
|
||||
2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
|
||||
1200 2175 1350 2175 1350 2325 1200 2325 1200 2175
|
||||
2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
|
||||
1500 2175 1650 2175 1650 2325 1500 2325 1500 2175
|
||||
2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
|
||||
1800 2175 1950 2175 1950 2325 1800 2325 1800 2175
|
||||
2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
|
||||
1500 2475 1650 2475 1650 2625 1500 2625 1500 2475
|
||||
2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
|
||||
1725 2700 1875 2700 1875 2850 1725 2850 1725 2700
|
||||
2 2 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 5
|
||||
1275 2700 1425 2700 1425 2850 1275 2850 1275 2700
|
||||
2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
|
||||
1500 2025 1350 2175
|
||||
2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
|
||||
1500 2025 1575 2175
|
||||
2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
|
||||
1500 2025 1875 2175
|
||||
2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
|
||||
1575 2325 1575 2475
|
||||
2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
|
||||
1650 2625 1725 2700
|
||||
2 1 0 1 0 7 0 0 -1 0.000 0 0 -1 0 0 2
|
||||
1500 2625 1425 2700
|
||||
2 3 0 2 0 7 0 0 -1 6.000 0 0 -1 0 0 5
|
||||
2550 1725 2175 1950 2175 2850 2550 3075 2550 1725
|
||||
2 3 0 2 0 7 0 0 -1 6.000 0 0 -1 0 0 5
|
||||
4575 1725 4200 1950 4200 2850 4575 3075 4575 1725
|
||||
2 2 0 1 0 7 0 0 -1 4.000 0 0 -1 0 0 5
|
||||
2700 2025 4050 2025 4050 2775 2700 2775 2700 2025
|
||||
2 1 0 2 0 7 0 0 -1 6.000 0 0 -1 0 0 2
|
||||
5025 2025 4575 2175
|
||||
2 1 1 2 0 7 0 0 -1 6.000 0 0 -1 1 0 3
|
||||
1 1 2.00 120.00 240.00
|
||||
4575 2175 4200 2250 2025 2250
|
||||
2 1 1 2 0 7 0 0 -1 6.000 0 0 -1 0 0 3
|
||||
2025 2475 4200 2475 4575 2550
|
||||
2 1 0 2 0 7 0 0 -1 6.000 0 0 -1 1 0 2
|
||||
1 1 2.00 120.00 240.00
|
||||
4575 2550 5025 2625
|
||||
4 0 0 0 0 0 18 0.0000 4 255 1155 1050 825 Program 1\001
|
||||
4 0 0 0 0 0 18 0.0000 4 255 1155 4425 900 Program 2\001
|
||||
4 0 0 0 0 0 18 0.0000 4 195 585 1350 1500 XML\001
|
||||
4 0 0 0 0 0 18 0.0000 4 195 975 3000 3075 CORBA\001
|
||||
4 0 0 0 0 0 18 0.0000 4 195 735 3000 3375 ORBit\001
|
||||
4 0 0 0 0 0 18 0.0000 4 195 1395 2175 1575 DOM server\001
|
||||
4 0 0 0 0 0 18 0.0000 4 195 1335 4200 1650 DOM client\001
|
||||
BIN
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/doc/DOM.gif
Normal file
BIN
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/doc/DOM.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 3.1 KiB |
File diff suppressed because one or more lines are too long
299
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/doc/FAQ.html
Normal file
299
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/doc/FAQ.html
Normal file
@@ -0,0 +1,299 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css">
|
||||
TD {font-family: Verdana,Arial,Helvetica}
|
||||
BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em}
|
||||
H1 {font-family: Verdana,Arial,Helvetica}
|
||||
H2 {font-family: Verdana,Arial,Helvetica}
|
||||
H3 {font-family: Verdana,Arial,Helvetica}
|
||||
A:link, A:visited, A:active { text-decoration: underline }
|
||||
</style><title>FAQ</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>FAQ</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation & DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Table of Contents:</p><ul>
|
||||
<li><a href="FAQ.html#License">License(s)</a></li>
|
||||
<li><a href="FAQ.html#Installati">Installation</a></li>
|
||||
<li><a href="FAQ.html#Compilatio">Compilation</a></li>
|
||||
<li><a href="FAQ.html#Developer">Developer corner</a></li>
|
||||
</ul><h3><a name="License" id="License">License</a>(s)</h3><ol>
|
||||
<li><em>Licensing Terms for libxml</em>
|
||||
<p>libxml2 is released under the <a href="http://www.opensource.org/licenses/mit-license.html">MIT
|
||||
License</a>; see the file Copyright in the distribution for the precise
|
||||
wording</p>
|
||||
</li>
|
||||
<li><em>Can I embed libxml2 in a proprietary application ?</em>
|
||||
<p>Yes. The MIT License allows you to keep proprietary the changes you
|
||||
made to libxml, but it would be graceful to send-back bug fixes and
|
||||
improvements as patches for possible incorporation in the main
|
||||
development tree.</p>
|
||||
</li>
|
||||
</ol><h3><a name="Installati" id="Installati">Installation</a></h3><ol>
|
||||
<li><strong><span style="background-color: #FF0000">Do Not Use
|
||||
libxml1</span></strong>, use libxml2</li>
|
||||
<p></p>
|
||||
<li><em>Where can I get libxml</em> ?
|
||||
<p>The original distribution comes from <a href="ftp://xmlsoft.org/libxml2/">xmlsoft.org</a> or <a href="ftp://ftp.gnome.org/pub/GNOME/sources/libxml2/2.6/">gnome.org</a></p>
|
||||
<p>Most Linux and BSD distributions include libxml, this is probably the
|
||||
safer way for end-users to use libxml.</p>
|
||||
<p>David Doolin provides precompiled Windows versions at <a href="http://www.ce.berkeley.edu/~doolin/code/libxmlwin32/ ">http://www.ce.berkeley.edu/~doolin/code/libxmlwin32/</a></p>
|
||||
</li>
|
||||
<p></p>
|
||||
<li><em>I see libxml and libxml2 releases, which one should I install ?</em>
|
||||
<ul>
|
||||
<li>If you are not constrained by backward compatibility issues with
|
||||
existing applications, install libxml2 only</li>
|
||||
<li>If you are not doing development, you can safely install both.
|
||||
Usually the packages <a href="http://rpmfind.net/linux/RPM/libxml.html">libxml</a> and <a href="http://rpmfind.net/linux/RPM/libxml2.html">libxml2</a> are
|
||||
compatible (this is not the case for development packages).</li>
|
||||
<li>If you are a developer and your system provides separate packaging
|
||||
for shared libraries and the development components, it is possible
|
||||
to install libxml and libxml2, and also <a href="http://rpmfind.net/linux/RPM/libxml-devel.html">libxml-devel</a>
|
||||
and <a href="http://rpmfind.net/linux/RPM/libxml2-devel.html">libxml2-devel</a>
|
||||
too for libxml2 >= 2.3.0</li>
|
||||
<li>If you are developing a new application, please develop against
|
||||
libxml2(-devel)</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><em>I can't install the libxml package, it conflicts with libxml0</em>
|
||||
<p>You probably have an old libxml0 package used to provide the shared
|
||||
library for libxml.so.0, you can probably safely remove it. The libxml
|
||||
packages provided on <a href="ftp://xmlsoft.org/libxml2/">xmlsoft.org</a> provide
|
||||
libxml.so.0</p>
|
||||
</li>
|
||||
<li><em>I can't install the libxml(2) RPM package due to failed
|
||||
dependencies</em>
|
||||
<p>The most generic solution is to re-fetch the latest src.rpm , and
|
||||
rebuild it locally with</p>
|
||||
<p><code>rpm --rebuild libxml(2)-xxx.src.rpm</code>.</p>
|
||||
<p>If everything goes well it will generate two binary rpm packages (one
|
||||
providing the shared libs and xmllint, and the other one, the -devel
|
||||
package, providing includes, static libraries and scripts needed to build
|
||||
applications with libxml(2)) that you can install locally.</p>
|
||||
</li>
|
||||
</ol><h3><a name="Compilatio" id="Compilatio">Compilation</a></h3><ol>
|
||||
<li><em>What is the process to compile libxml2 ?</em>
|
||||
<p>As most UNIX libraries libxml2 follows the "standard":</p>
|
||||
<p><code>gunzip -c xxx.tar.gz | tar xvf -</code></p>
|
||||
<p><code>cd libxml-xxxx</code></p>
|
||||
<p><code>./configure --help</code></p>
|
||||
<p>to see the options, then the compilation/installation proper</p>
|
||||
<p><code>./configure [possible options]</code></p>
|
||||
<p><code>make</code></p>
|
||||
<p><code>make install</code></p>
|
||||
<p>At that point you may have to rerun ldconfig or a similar utility to
|
||||
update your list of installed shared libs.</p>
|
||||
</li>
|
||||
<li><em>What other libraries are needed to compile/install libxml2 ?</em>
|
||||
<p>Libxml2 does not require any other library, the normal C ANSI API
|
||||
should be sufficient (please report any violation to this rule you may
|
||||
find).</p>
|
||||
<p>However if found at configuration time libxml2 will detect and use the
|
||||
following libs:</p>
|
||||
<ul>
|
||||
<li><a href="http://www.info-zip.org/pub/infozip/zlib/">libz</a> : a
|
||||
highly portable and available widely compression library.</li>
|
||||
<li>iconv: a powerful character encoding conversion library. It is
|
||||
included by default in recent glibc libraries, so it doesn't need to
|
||||
be installed specifically on Linux. It now seems a <a href="http://www.opennc.org/onlinepubs/7908799/xsh/iconv.html">part
|
||||
of the official UNIX</a> specification. Here is one <a href="http://www.gnu.org/software/libiconv/">implementation of the
|
||||
library</a> which source can be found <a href="ftp://ftp.ilog.fr/pub/Users/haible/gnu/">here</a>.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<p></p>
|
||||
<li><em>Make check fails on some platforms</em>
|
||||
<p>Sometimes the regression tests' results don't completely match the
|
||||
value produced by the parser, and the makefile uses diff to print the
|
||||
delta. On some platforms the diff return breaks the compilation process;
|
||||
if the diff is small this is probably not a serious problem.</p>
|
||||
<p>Sometimes (especially on Solaris) make checks fail due to limitations
|
||||
in make. Try using GNU-make instead.</p>
|
||||
</li>
|
||||
<li><em>I use the SVN version and there is no configure script</em>
|
||||
<p>The configure script (and other Makefiles) are generated. Use the
|
||||
autogen.sh script to regenerate the configure script and Makefiles,
|
||||
like:</p>
|
||||
<p><code>./autogen.sh --prefix=/usr --disable-shared</code></p>
|
||||
</li>
|
||||
<li><em>I have troubles when running make tests with gcc-3.0</em>
|
||||
<p>It seems the initial release of gcc-3.0 has a problem with the
|
||||
optimizer which miscompiles the URI module. Please use another
|
||||
compiler.</p>
|
||||
</li>
|
||||
</ol><h3><a name="Developer" id="Developer">Developer</a> corner</h3><ol>
|
||||
<li><em>Troubles compiling or linking programs using libxml2</em>
|
||||
<p>Usually the problem comes from the fact that the compiler doesn't get
|
||||
the right compilation or linking flags. There is a small shell script
|
||||
<code>xml2-config</code> which is installed as part of libxml2 usual
|
||||
install process which provides those flags. Use</p>
|
||||
<p><code>xml2-config --cflags</code></p>
|
||||
<p>to get the compilation flags and</p>
|
||||
<p><code>xml2-config --libs</code></p>
|
||||
<p>to get the linker flags. Usually this is done directly from the
|
||||
Makefile as:</p>
|
||||
<p><code>CFLAGS=`xml2-config --cflags`</code></p>
|
||||
<p><code>LIBS=`xml2-config --libs`</code></p>
|
||||
</li>
|
||||
<li><em>I want to install my own copy of libxml2 in my home directory and
|
||||
link my programs against it, but it doesn't work</em>
|
||||
<p>There are many different ways to accomplish this. Here is one way to
|
||||
do this under Linux. Suppose your home directory is <code>/home/user.
|
||||
</code>Then:</p>
|
||||
<ul>
|
||||
<li>Create a subdirectory, let's call it <code>myxml</code></li>
|
||||
<li>unpack the libxml2 distribution into that subdirectory</li>
|
||||
<li>chdir into the unpacked distribution
|
||||
(<code>/home/user/myxml/libxml2 </code>)</li>
|
||||
<li>configure the library using the "<code>--prefix</code>" switch,
|
||||
specifying an installation subdirectory in
|
||||
<code>/home/user/myxml</code>, e.g.
|
||||
<p><code>./configure --prefix /home/user/myxml/xmlinst</code> {other
|
||||
configuration options}</p>
|
||||
</li>
|
||||
<li>now run <code>make</code> followed by <code>make install</code></li>
|
||||
<li>At this point, the installation subdirectory contains the complete
|
||||
"private" include files, library files and binary program files (e.g.
|
||||
xmllint), located in
|
||||
<p><code>/home/user/myxml/xmlinst/lib,
|
||||
/home/user/myxml/xmlinst/include </code> and <code>
|
||||
/home/user/myxml/xmlinst/bin</code></p>
|
||||
respectively.</li>
|
||||
<li>In order to use this "private" library, you should first add it to
|
||||
the beginning of your default PATH (so that your own private program
|
||||
files such as xmllint will be used instead of the normal system
|
||||
ones). To do this, the Bash command would be
|
||||
<p><code>export PATH=/home/user/myxml/xmlinst/bin:$PATH</code></p>
|
||||
</li>
|
||||
<li>Now suppose you have a program <code>test1.c</code> that you would
|
||||
like to compile with your "private" library. Simply compile it using
|
||||
the command
|
||||
<p><code>gcc `xml2-config --cflags --libs` -o test test.c</code></p>
|
||||
Note that, because your PATH has been set with <code>
|
||||
/home/user/myxml/xmlinst/bin</code> at the beginning, the xml2-config
|
||||
program which you just installed will be used instead of the system
|
||||
default one, and this will <em>automatically</em> get the correct
|
||||
libraries linked with your program.</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
<p></p>
|
||||
<li><em>xmlDocDump() generates output on one line.</em>
|
||||
<p>Libxml2 will not <strong>invent</strong> spaces in the content of a
|
||||
document since <strong>all spaces in the content of a document are
|
||||
significant</strong>. If you build a tree from the API and want
|
||||
indentation:</p>
|
||||
<ol>
|
||||
<li>the correct way is to generate those yourself too.</li>
|
||||
<li>the dangerous way is to ask libxml2 to add those blanks to your
|
||||
content <strong>modifying the content of your document in the
|
||||
process</strong>. The result may not be what you expect. There is
|
||||
<strong>NO</strong> way to guarantee that such a modification won't
|
||||
affect other parts of the content of your document. See <a href="http://xmlsoft.org/html/libxml-parser.html#xmlKeepBlanksDefault">xmlKeepBlanksDefault
|
||||
()</a> and <a href="http://xmlsoft.org/html/libxml-tree.html#xmlSaveFormatFile">xmlSaveFormatFile
|
||||
()</a></li>
|
||||
</ol>
|
||||
</li>
|
||||
<p></p>
|
||||
<li><em>Extra nodes in the document:</em>
|
||||
<p><em>For an XML file as below:</em></p>
|
||||
<pre><?xml version="1.0"?>
|
||||
<PLAN xmlns="http://www.argus.ca/autotest/1.0/">
|
||||
<NODE CommFlag="0"/>
|
||||
<NODE CommFlag="1"/>
|
||||
</PLAN></pre>
|
||||
<p><em>after parsing it with the function
|
||||
pxmlDoc=xmlParseFile(...);</em></p>
|
||||
<p><em>I want to the get the content of the first node (node with the
|
||||
CommFlag="0")</em></p>
|
||||
<p><em>so I did it as following;</em></p>
|
||||
<pre>xmlNodePtr pnode;
|
||||
pnode=pxmlDoc->children->children;</pre>
|
||||
<p><em>but it does not work. If I change it to</em></p>
|
||||
<pre>pnode=pxmlDoc->children->children->next;</pre>
|
||||
<p><em>then it works. Can someone explain it to me.</em></p>
|
||||
<p></p>
|
||||
<p>In XML all characters in the content of the document are significant
|
||||
<strong>including blanks and formatting line breaks</strong>.</p>
|
||||
<p>The extra nodes you are wondering about are just that, text nodes with
|
||||
the formatting spaces which are part of the document but that people tend
|
||||
to forget. There is a function <a href="http://xmlsoft.org/html/libxml-parser.html">xmlKeepBlanksDefault
|
||||
()</a> to remove those at parse time, but that's an heuristic, and its
|
||||
use should be limited to cases where you are certain there is no
|
||||
mixed-content in the document.</p>
|
||||
</li>
|
||||
<li><em>I get compilation errors of existing code like when accessing
|
||||
<strong>root</strong> or <strong>child fields</strong> of nodes.</em>
|
||||
<p>You are compiling code developed for libxml version 1 and using a
|
||||
libxml2 development environment. Either switch back to libxml v1 devel or
|
||||
even better fix the code to compile with libxml2 (or both) by <a href="upgrade.html">following the instructions</a>.</p>
|
||||
</li>
|
||||
<li><em>I get compilation errors about non existing
|
||||
<strong>xmlRootNode</strong> or <strong>xmlChildrenNode</strong>
|
||||
fields.</em>
|
||||
<p>The source code you are using has been <a href="upgrade.html">upgraded</a> to be able to compile with both libxml
|
||||
and libxml2, but you need to install a more recent version:
|
||||
libxml(-devel) >= 1.8.8 or libxml2(-devel) >= 2.1.0</p>
|
||||
</li>
|
||||
<li><em>Random crashes in threaded applications</em>
|
||||
<p>Read and follow all advices on the <a href="threads.html">thread
|
||||
safety</a> page, and make 100% sure you never call xmlCleanupParser()
|
||||
while the library or an XML document might still be in use by another
|
||||
thread.</p>
|
||||
</li>
|
||||
<li><em>The example provided in the web page does not compile.</em>
|
||||
<p>It's hard to maintain the documentation in sync with the code
|
||||
<grin/> ...</p>
|
||||
<p>Check the previous points 1/ and 2/ raised before, and please send
|
||||
patches.</p>
|
||||
</li>
|
||||
<li><em>Where can I get more examples and information than provided on the
|
||||
web page?</em>
|
||||
<p>Ideally a libxml2 book would be nice. I have no such plan ... But you
|
||||
can:</p>
|
||||
<ul>
|
||||
<li>check more deeply the <a href="html/libxml-lib.html">existing
|
||||
generated doc</a></li>
|
||||
<li>have a look at <a href="examples/index.html">the set of
|
||||
examples</a>.</li>
|
||||
<li>look for examples of use for libxml2 function using the Gnome code
|
||||
or by asking on Google.</li>
|
||||
<li><a href="http://svn.gnome.org/viewvc/libxml2/trunk/">Browse
|
||||
the libxml2 source</a> , I try to write code as clean and documented
|
||||
as possible, so looking at it may be helpful. In particular the code
|
||||
of <a href="http://svn.gnome.org/viewvc/libxml2/trunk/xmllint.c?view=markup">xmllint.c</a> and of the various testXXX.c test programs should
|
||||
provide good examples of how to do things with the library.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<p></p>
|
||||
<li><em>What about C++ ?</em>
|
||||
<p>libxml2 is written in pure C in order to allow easy reuse on a number
|
||||
of platforms, including embedded systems. I don't intend to convert to
|
||||
C++.</p>
|
||||
<p>There is however a C++ wrapper which may fulfill your needs:</p>
|
||||
<ul>
|
||||
<li>by Ari Johnson <ari@btigate.com>:
|
||||
<p>Website: <a href="http://libxmlplusplus.sourceforge.net/">http://libxmlplusplus.sourceforge.net/</a></p>
|
||||
<p>Download: <a href="http://sourceforge.net/project/showfiles.php?group_id=12999">http://sourceforge.net/project/showfiles.php?group_id=12999</a></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><em>How to validate a document a posteriori ?</em>
|
||||
<p>It is possible to validate documents which had not been validated at
|
||||
initial parsing time or documents which have been built from scratch
|
||||
using the API. Use the <a href="http://xmlsoft.org/html/libxml-valid.html#xmlValidateDtd">xmlValidateDtd()</a>
|
||||
function. It is also possible to simply add a DTD to an existing
|
||||
document:</p>
|
||||
<pre>xmlDocPtr doc; /* your existing document */
|
||||
xmlDtdPtr dtd = xmlParseDTD(NULL, filename_of_dtd); /* parse the DTD */
|
||||
|
||||
dtd->name = xmlStrDup((xmlChar*)"root_name"); /* use the given root */
|
||||
|
||||
doc->intSubset = dtd;
|
||||
if (doc->children == NULL) xmlAddChild((xmlNodePtr)doc, (xmlNodePtr)dtd);
|
||||
else xmlAddPrevSibling(doc->children, (xmlNodePtr)dtd);
|
||||
</pre>
|
||||
</li>
|
||||
<li><em>So what is this funky "xmlChar" used all the time?</em>
|
||||
<p>It is a null terminated sequence of utf-8 characters. And only utf-8!
|
||||
You need to convert strings encoded in different ways to utf-8 before
|
||||
passing them to the API. This can be accomplished with the iconv library
|
||||
for instance.</p>
|
||||
</li>
|
||||
<li>etc ...</li>
|
||||
</ol><p></p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 8.0 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 3.0 KiB |
351
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/doc/Makefile.am
Normal file
351
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/doc/Makefile.am
Normal file
@@ -0,0 +1,351 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
SUBDIRS = . devhelp examples
|
||||
|
||||
# The top-level SGML file.
|
||||
DOC_MAIN_XML_FILE=gnome-xml.xml
|
||||
|
||||
# The directory containing the source code (if it contains documentation).
|
||||
DOC_SOURCE_DIR=..
|
||||
|
||||
# A file in win32 depends upon one of the doc files
|
||||
WIN32_DIR=$(top_srcdir)/win32
|
||||
|
||||
PAGES= architecture.html bugs.html contribs.html docs.html DOM.html \
|
||||
downloads.html entities.html example.html help.html index.html \
|
||||
interface.html intro.html library.html namespaces.html news.html \
|
||||
tree.html xmldtd.html XMLinfo.html XSLT.html
|
||||
APIPAGES=APIconstructors.html APIfiles.html APIfunctions.html \
|
||||
APIsymbols.html APIchunk0.html
|
||||
|
||||
if REBUILD_DOCS
|
||||
EXTRA_DIST_wc = xmlcatalog_man.xml $(wildcard tutorial/*.html) \
|
||||
$(wildcard tutorial/*.c) $(wildcard tutorial/*.pdf) \
|
||||
$(wildcard tutorial/images/*.png) \
|
||||
$(wildcard tutorial/images/callouts/*.png) $(wildcard API*.html) \
|
||||
$(wildcard *.1) $(wildcard *.xsl) $(wildcard *.html) \
|
||||
$(wildcard *.gif) w3c.png $(wildcard html/*.html) \
|
||||
$(wildcard html/*.png) libxml2-api.xml index.py search.php \
|
||||
apibuild.py libxml2.xsa xmllint.xml xmlcatalog_man.xml \
|
||||
README.docs symbols.xml
|
||||
endif
|
||||
|
||||
# Expanded form of EXTRA_DIST_wc
|
||||
#
|
||||
EXTRA_DIST = \
|
||||
APIchunk0.html \
|
||||
APIchunk1.html \
|
||||
APIchunk2.html \
|
||||
APIchunk3.html \
|
||||
APIchunk4.html \
|
||||
APIchunk5.html \
|
||||
APIchunk6.html \
|
||||
APIchunk7.html \
|
||||
APIchunk8.html \
|
||||
APIchunk9.html \
|
||||
APIchunk10.html \
|
||||
APIchunk11.html \
|
||||
APIchunk12.html \
|
||||
APIchunk13.html \
|
||||
APIchunk14.html \
|
||||
APIchunk15.html \
|
||||
APIchunk16.html \
|
||||
APIchunk17.html \
|
||||
APIchunk18.html \
|
||||
APIchunk19.html \
|
||||
APIchunk20.html \
|
||||
APIchunk21.html \
|
||||
APIchunk22.html \
|
||||
APIchunk23.html \
|
||||
APIchunk24.html \
|
||||
APIchunk25.html \
|
||||
APIchunk26.html \
|
||||
APIchunk27.html \
|
||||
APIchunk28.html \
|
||||
APIchunk29.html \
|
||||
APIconstructors.html \
|
||||
APIfiles.html \
|
||||
APIfunctions.html \
|
||||
APIsymbols.html \
|
||||
ChangeLog.xsl \
|
||||
DOM.gif \
|
||||
DOM.html \
|
||||
FAQ.html \
|
||||
Libxml2-Logo-180x168.gif \
|
||||
Libxml2-Logo-90x34.gif \
|
||||
README.docs \
|
||||
XMLinfo.html \
|
||||
XSLT.html \
|
||||
api.xsl \
|
||||
apibuild.py \
|
||||
architecture.html \
|
||||
bugs.html \
|
||||
catalog.gif \
|
||||
catalog.html \
|
||||
checkapisym.xsl \
|
||||
contribs.html \
|
||||
docs.html \
|
||||
downloads.html \
|
||||
elfgcchack.xsl \
|
||||
encoding.html \
|
||||
entities.html \
|
||||
example.html \
|
||||
guidelines.html \
|
||||
help.html \
|
||||
html/book1.html \
|
||||
html/home.png \
|
||||
html/index.html \
|
||||
html/left.png \
|
||||
html/libxml-DOCBparser.html \
|
||||
html/libxml-HTMLparser.html \
|
||||
html/libxml-HTMLtree.html \
|
||||
html/libxml-SAX.html \
|
||||
html/libxml-SAX2.html \
|
||||
html/libxml-c14n.html \
|
||||
html/libxml-catalog.html \
|
||||
html/libxml-chvalid.html \
|
||||
html/libxml-debugXML.html \
|
||||
html/libxml-dict.html \
|
||||
html/libxml-encoding.html \
|
||||
html/libxml-entities.html \
|
||||
html/libxml-globals.html \
|
||||
html/libxml-hash.html \
|
||||
html/libxml-lib.html \
|
||||
html/libxml-list.html \
|
||||
html/libxml-nanoftp.html \
|
||||
html/libxml-nanohttp.html \
|
||||
html/libxml-parser.html \
|
||||
html/libxml-parserInternals.html \
|
||||
html/libxml-pattern.html \
|
||||
html/libxml-relaxng.html \
|
||||
html/libxml-schemasInternals.html \
|
||||
html/libxml-schematron.html \
|
||||
html/libxml-threads.html \
|
||||
html/libxml-tree.html \
|
||||
html/libxml-uri.html \
|
||||
html/libxml-valid.html \
|
||||
html/libxml-xinclude.html \
|
||||
html/libxml-xlink.html \
|
||||
html/libxml-xmlIO.html \
|
||||
html/libxml-xmlautomata.html \
|
||||
html/libxml-xmlerror.html \
|
||||
html/libxml-xmlexports.html \
|
||||
html/libxml-xmlmemory.html \
|
||||
html/libxml-xmlmodule.html \
|
||||
html/libxml-xmlreader.html \
|
||||
html/libxml-xmlregexp.html \
|
||||
html/libxml-xmlsave.html \
|
||||
html/libxml-xmlschemas.html \
|
||||
html/libxml-xmlschemastypes.html \
|
||||
html/libxml-xmlstring.html \
|
||||
html/libxml-xmlunicode.html \
|
||||
html/libxml-xmlversion.html \
|
||||
html/libxml-xmlwriter.html \
|
||||
html/libxml-xpath.html \
|
||||
html/libxml-xpathInternals.html \
|
||||
html/libxml-xpointer.html \
|
||||
html/libxml-xzlib.html \
|
||||
html/right.png \
|
||||
html/up.png \
|
||||
index.html \
|
||||
index.py \
|
||||
interface.html \
|
||||
intro.html \
|
||||
library.html \
|
||||
libxml.gif \
|
||||
libxml2-api.xml \
|
||||
libxml2.xsa \
|
||||
namespaces.html \
|
||||
newapi.xsl \
|
||||
news.html \
|
||||
news.xsl \
|
||||
python.html \
|
||||
redhat.gif \
|
||||
search.php \
|
||||
searches.html \
|
||||
searches.xsl \
|
||||
site.xsl \
|
||||
smallfootonly.gif \
|
||||
structure.gif \
|
||||
symbols.xml \
|
||||
syms.xsl \
|
||||
threads.html \
|
||||
tree.html \
|
||||
tutorial/apa.html \
|
||||
tutorial/apb.html \
|
||||
tutorial/apc.html \
|
||||
tutorial/apd.html \
|
||||
tutorial/ape.html \
|
||||
tutorial/apf.html \
|
||||
tutorial/apg.html \
|
||||
tutorial/aph.html \
|
||||
tutorial/api.html \
|
||||
tutorial/ar01s02.html \
|
||||
tutorial/ar01s03.html \
|
||||
tutorial/ar01s04.html \
|
||||
tutorial/ar01s05.html \
|
||||
tutorial/ar01s06.html \
|
||||
tutorial/ar01s07.html \
|
||||
tutorial/ar01s08.html \
|
||||
tutorial/ar01s09.html \
|
||||
tutorial/images/blank.png \
|
||||
tutorial/images/callouts/1.png \
|
||||
tutorial/images/callouts/10.png \
|
||||
tutorial/images/callouts/2.png \
|
||||
tutorial/images/callouts/3.png \
|
||||
tutorial/images/callouts/4.png \
|
||||
tutorial/images/callouts/5.png \
|
||||
tutorial/images/callouts/6.png \
|
||||
tutorial/images/callouts/7.png \
|
||||
tutorial/images/callouts/8.png \
|
||||
tutorial/images/callouts/9.png \
|
||||
tutorial/images/caution.png \
|
||||
tutorial/images/draft.png \
|
||||
tutorial/images/home.png \
|
||||
tutorial/images/important.png \
|
||||
tutorial/images/next.png \
|
||||
tutorial/images/note.png \
|
||||
tutorial/images/prev.png \
|
||||
tutorial/images/tip.png \
|
||||
tutorial/images/toc-blank.png \
|
||||
tutorial/images/toc-minus.png \
|
||||
tutorial/images/toc-plus.png \
|
||||
tutorial/images/up.png \
|
||||
tutorial/images/warning.png \
|
||||
tutorial/includeaddattribute.c \
|
||||
tutorial/includeaddkeyword.c \
|
||||
tutorial/includeconvert.c \
|
||||
tutorial/includegetattribute.c \
|
||||
tutorial/includekeyword.c \
|
||||
tutorial/includexpath.c \
|
||||
tutorial/index.html \
|
||||
tutorial/ix01.html \
|
||||
tutorial/xmltutorial.pdf \
|
||||
upgrade.html \
|
||||
w3c.png \
|
||||
wiki.xsl \
|
||||
xml.html \
|
||||
xmlcatalog.1 \
|
||||
xmlcatalog_man.html \
|
||||
xmlcatalog_man.xml \
|
||||
xmldtd.html \
|
||||
xmlio.html \
|
||||
xmllint.1 \
|
||||
xmllint.html \
|
||||
xmllint.xml \
|
||||
xmlmem.html \
|
||||
xmlreader.html \
|
||||
xsa.xsl
|
||||
|
||||
man_MANS = xmllint.1 xmlcatalog.1
|
||||
|
||||
if REBUILD_DOCS
|
||||
docs: web $(top_builddir)/NEWS libxml2.xsa $(man_MANS)
|
||||
|
||||
api: libxml2-api.xml libxml2-refs.xml $(APIPAGES) $(srcdir)/html/index.html $(WIN32_DIR)/libxml2.def.src ../elfgcchack.h $(srcdir)/site.xsl
|
||||
|
||||
web: $(PAGES)
|
||||
|
||||
../elfgcchack.h: $(srcdir)/elfgcchack.xsl $(srcdir)/libxml2-api.xml
|
||||
-@(if [ -x $(XSLTPROC) ] ; then \
|
||||
echo "Rebuilding the elfgcchack.h header" ; \
|
||||
$(XSLTPROC) --nonet $(srcdir)/elfgcchack.xsl $(srcdir)/libxml2-api.xml > elfgcchack.h ; \
|
||||
if [ "`diff -q elfgcchack.h ../elfgcchack.h`" ] ; then \
|
||||
echo "updating ../elfgcchack.h"; \
|
||||
cp elfgcchack.h ../elfgcchack.h; \
|
||||
fi ; rm -f elfgcchack.h ; fi );
|
||||
|
||||
$(PAGES): xml.html $(srcdir)/site.xsl
|
||||
-@(if [ -x $(XSLTPROC) ] ; then \
|
||||
echo "Rebuilding the HTML Web pages from xml.html" ; \
|
||||
$(XSLTPROC) --nonet --html --path $(srcdir) $(srcdir)/site.xsl $(srcdir)/xml.html > index.html ; fi );
|
||||
-@(if [ -x $(XMLLINT) ] ; then \
|
||||
echo "Validating the HTML Web pages" ; \
|
||||
$(XMLLINT) --nonet --valid --noout $(PAGES) ; fi );
|
||||
|
||||
$(top_builddir)/NEWS: $(srcdir)/news.xsl $(srcdir)/news.html
|
||||
-@(if [ -x $(XSLTPROC) ] ; then \
|
||||
$(XSLTPROC) --nonet $(srcdir)/news.xsl $(srcdir)/news.html > $(top_builddir)/NEWS ; fi );
|
||||
|
||||
libxml2.xsa: $(srcdir)/xsa.xsl $(srcdir)/news.html
|
||||
-@(if [ -x $(XSLTPROC) ] ; then \
|
||||
echo "Rebuilding the NEWS file" ; \
|
||||
$(XSLTPROC) --nonet $(srcdir)/xsa.xsl $(srcdir)/news.html > libxml2.xsa ; fi );
|
||||
|
||||
$(APIPAGES): libxml2-api.xml libxml2-refs.xml $(srcdir)/site.xsl $(srcdir)/api.xsl
|
||||
-@(if [ -x $(XSLTPROC) ] ; then \
|
||||
echo "Rebuilding the HTML API pages from libxml2-refs.xml" ; \
|
||||
$(XSLTPROC) --nonet --html $(srcdir)/api.xsl \
|
||||
$(srcdir)/xml.html ; fi );
|
||||
-@(if [ -x $(XMLLINT) ] ; then \
|
||||
echo "Validating the HTML API pages" ; \
|
||||
$(XMLLINT) --nonet --valid --noout API*.html ; fi );
|
||||
|
||||
$(srcdir)/html/index.html: libxml2-api.xml $(srcdir)/newapi.xsl
|
||||
-@(if [ -x $(XSLTPROC) ] ; then \
|
||||
echo "Rebuilding the HTML pages from the XML API" ; \
|
||||
$(XSLTPROC) --nonet $(srcdir)/newapi.xsl $(srcdir)/libxml2-api.xml ; fi )
|
||||
-@(if [ -x $(XMLLINT) ] ; then \
|
||||
echo "Validating the resulting XHTML pages" ; \
|
||||
$(XMLLINT) --nonet --valid --noout html/*.html ; fi );
|
||||
|
||||
wiki: libxml2-api.xml $(srcdir)/wiki.xsl
|
||||
-@(if [ -x $(XSLTPROC) ] ; then \
|
||||
echo "Rebuilding the wiki HTML pages from the XML API" ; \
|
||||
$(XSLTPROC) --nonet $(srcdir)/wiki.xsl $(srcdir)/libxml2-api.xml; fi )
|
||||
|
||||
$(WIN32_DIR)/libxml2.def.src: libxml2-api.xml
|
||||
-@(if [ -x $(XSLTPROC) ] ; then \
|
||||
$(XSLTPROC) -o $(WIN32_DIR)/libxml2.def.src \
|
||||
--nonet $(WIN32_DIR)/defgen.xsl libxml2-api.xml ; fi )
|
||||
|
||||
source_file_deps = \
|
||||
$(filter-out %/xmlversion.h, $(wildcard $(top_srcdir)/include/libxml/*.h)) \
|
||||
$(top_srcdir)/include/libxml/xmlversion.h.in \
|
||||
$(wildcard $(top_srcdir)/*.c)
|
||||
|
||||
libxml2-api.xml libxml2-refs.xml ../libxml2.syms: apibuild.py symbols.xml syms.xsl checkapisym.xsl $(source_file_deps)
|
||||
test -f $(top_srcdir)/include/libxml/xmlversion.h
|
||||
(cd $(srcdir) && ./apibuild.py)
|
||||
($(XSLTPROC) $(srcdir)/checkapisym.xsl $(srcdir)/libxml2-api.xml)
|
||||
($(XSLTPROC) -o ../libxml2.syms $(srcdir)/syms.xsl $(srcdir)/symbols.xml)
|
||||
-@(cd .. ; $(MAKE) rebuild_testapi)
|
||||
|
||||
|
||||
xmllint.1: xmllint.xml
|
||||
-@($(XSLTPROC) --nonet xmllint.xml)
|
||||
|
||||
xmlcatalog.1: xmlcatalog_man.xml
|
||||
-@($(XSLTPROC) --nonet xmlcatalog_man.xml)
|
||||
|
||||
check-extra-dist:
|
||||
for f in $(EXTRA_DIST_wc) ; do echo $$f; done | sort -u >tmp.EXTRA_DIST_wc
|
||||
for f in $(EXTRA_DIST) ; do echo $$f; done | sort >tmp.EXTRA_DIST
|
||||
diff -u tmp.EXTRA_DIST_wc tmp.EXTRA_DIST
|
||||
rm -f tmp.EXTRA_DIST_wc tmp.EXTRA_DIST
|
||||
endif
|
||||
|
||||
clean-local:
|
||||
rm -f *~ *.bak *.hierarchy *.signals *-unused.txt
|
||||
|
||||
maintainer-clean-local: clean-local
|
||||
rm -rf libxml-decl-list.txt libxml-decl.txt
|
||||
|
||||
rebuild: api docs
|
||||
|
||||
install-data-local:
|
||||
$(MKDIR_P) $(DESTDIR)$(HTML_DIR)
|
||||
-$(INSTALL) -m 0644 $(srcdir)/xml.html $(srcdir)/encoding.html $(srcdir)/FAQ.html $(srcdir)/structure.gif $(srcdir)/DOM.gif $(srcdir)/smallfootonly.gif $(srcdir)/redhat.gif $(srcdir)/libxml.gif $(srcdir)/w3c.png $(srcdir)/Libxml2-Logo-180x168.gif $(srcdir)/Libxml2-Logo-90x34.gif $(DESTDIR)$(HTML_DIR)
|
||||
$(MKDIR_P) $(DESTDIR)$(HTML_DIR)/html
|
||||
-$(INSTALL) -m 0644 $(srcdir)/html/*.html $(DESTDIR)$(HTML_DIR)/html
|
||||
-$(INSTALL) -m 0644 $(srcdir)/html/*.png $(DESTDIR)$(HTML_DIR)/html
|
||||
$(MKDIR_P) $(DESTDIR)$(HTML_DIR)/tutorial
|
||||
-$(INSTALL) -m 0644 $(srcdir)/tutorial/*.* \
|
||||
$(DESTDIR)$(HTML_DIR)/tutorial
|
||||
$(MKDIR_P) $(DESTDIR)$(HTML_DIR)/tutorial/images
|
||||
-$(INSTALL) -m 0644 $(srcdir)/tutorial/images/*.* \
|
||||
$(DESTDIR)$(HTML_DIR)/tutorial/images
|
||||
$(MKDIR_P) $(DESTDIR)$(HTML_DIR)/tutorial/images/callouts
|
||||
-$(INSTALL) -m 0644 $(srcdir)/tutorial/images/callouts/*.* \
|
||||
$(DESTDIR)$(HTML_DIR)/tutorial/images/callouts
|
||||
|
||||
.PHONY: docs api web wiki rebuild
|
||||
@@ -0,0 +1,24 @@
|
||||
|
||||
XML toolkit from the GNOME project
|
||||
|
||||
Full documentation is available on-line at
|
||||
http://xmlsoft.org/
|
||||
|
||||
This code is released under the MIT Licence see the Copyright file.
|
||||
|
||||
To report bugs, follow the instructions at:
|
||||
http://xmlsoft.org/bugs.html
|
||||
|
||||
A mailing-list xml@gnome.org is available, to subscribe:
|
||||
http://mail.gnome.org/mailman/listinfo/xml
|
||||
|
||||
The list archive is at:
|
||||
http://mail.gnome.org/archives/xml/
|
||||
|
||||
All technical answers asked privately will be automatically answered on
|
||||
the list and archived for public access unless pricacy is explicitely
|
||||
required and justified.
|
||||
|
||||
Daniel Veillard
|
||||
|
||||
$Id$
|
||||
@@ -0,0 +1,35 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css">
|
||||
TD {font-family: Verdana,Arial,Helvetica}
|
||||
BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em}
|
||||
H1 {font-family: Verdana,Arial,Helvetica}
|
||||
H2 {font-family: Verdana,Arial,Helvetica}
|
||||
H3 {font-family: Verdana,Arial,Helvetica}
|
||||
A:link, A:visited, A:active { text-decoration: underline }
|
||||
</style><title>XML</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>XML</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation & DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p><a href="http://www.w3.org/TR/REC-xml">XML is a standard</a> for
|
||||
markup-based structured documents. Here is <a name="example" id="example">an example XML
|
||||
document</a>:</p><pre><?xml version="1.0"?>
|
||||
<EXAMPLE prop1="gnome is great" prop2="&amp; linux too">
|
||||
<head>
|
||||
<title>Welcome to Gnome</title>
|
||||
</head>
|
||||
<chapter>
|
||||
<title>The Linux adventure</title>
|
||||
<p>bla bla bla ...</p>
|
||||
<image href="linus.gif"/>
|
||||
<p>...</p>
|
||||
</chapter>
|
||||
</EXAMPLE></pre><p>The first line specifies that it is an XML document and gives useful
|
||||
information about its encoding. Then the rest of the document is a text
|
||||
format whose structure is specified by tags between brackets. <strong>Each
|
||||
tag opened has to be closed</strong>. XML is pedantic about this. However, if
|
||||
a tag is empty (no content), a single tag can serve as both the opening and
|
||||
closing tag if it ends with <code>/></code> rather than with
|
||||
<code>></code>. Note that, for example, the image tag has no content (just
|
||||
an attribute) and is closed by ending the tag with <code>/></code>.</p><p>XML can be applied successfully to a wide range of tasks, ranging from
|
||||
long term structured document maintenance (where it follows the steps of
|
||||
SGML) to simple data encoding mechanisms like configuration file formatting
|
||||
(glade), spreadsheets (gnumeric), or even shorter lived documents such as
|
||||
WebDAV where it is used to encode remote calls between a client and a
|
||||
server.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
|
||||
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css">
|
||||
TD {font-family: Verdana,Arial,Helvetica}
|
||||
BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em}
|
||||
H1 {font-family: Verdana,Arial,Helvetica}
|
||||
H2 {font-family: Verdana,Arial,Helvetica}
|
||||
H3 {font-family: Verdana,Arial,Helvetica}
|
||||
A:link, A:visited, A:active { text-decoration: underline }
|
||||
</style><title>XSLT</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>XSLT</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation & DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Check <a href="http://xmlsoft.org/XSLT">the separate libxslt page</a></p><p><a href="http://www.w3.org/TR/xslt">XSL Transformations</a>, is a
|
||||
language for transforming XML documents into other XML documents (or
|
||||
HTML/textual output).</p><p>A separate library called libxslt is available implementing XSLT-1.0 for
|
||||
libxml2. This module "libxslt" too can be found in the Gnome SVN base.</p><p>You can check the progresses on the libxslt <a href="http://xmlsoft.org/XSLT/ChangeLog.html">Changelog</a>.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
|
||||
394
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/doc/api.xsl
Normal file
394
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/doc/api.xsl
Normal file
@@ -0,0 +1,394 @@
|
||||
<?xml version="1.0"?>
|
||||
<!-- this stylesheet builds the API*.html , it works based on libxml2-refs.xml
|
||||
-->
|
||||
<xsl:stylesheet version="1.0"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:exsl="http://exslt.org/common"
|
||||
extension-element-prefixes="exsl"
|
||||
exclude-result-prefixes="exsl">
|
||||
|
||||
<!-- Import the rest of the site stylesheets -->
|
||||
<xsl:import href="site.xsl"/>
|
||||
|
||||
<!-- Generate XHTML-1.0 transitional -->
|
||||
<xsl:output method="xml" encoding="UTF-8" indent="yes"
|
||||
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
|
||||
|
||||
<xsl:variable name="href_base" select="''"/>
|
||||
<xsl:variable name="apirefs" select="document('libxml2-refs.xml')"/>
|
||||
<xsl:variable name="module" select="$apirefs/apirefs/@name"/>
|
||||
<xsl:key name="refhref" match="reference" use="@name"/>
|
||||
|
||||
<xsl:template match="ref" mode="anchor">
|
||||
<xsl:variable name="name" select="@name"/>
|
||||
<xsl:for-each select="document('libxml2-refs.xml')">
|
||||
<a href="{key('refhref', $name)/@href}"><xsl:value-of select="$name"/></a><br/>
|
||||
</xsl:for-each>
|
||||
</xsl:template>
|
||||
<xsl:template match="type" mode="reflist">
|
||||
<h2>Type <xsl:value-of select="@name"/>:</h2>
|
||||
<p>
|
||||
<xsl:for-each select="ref">
|
||||
<xsl:apply-templates mode="anchor" select="."/>
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
</xsl:for-each>
|
||||
</p>
|
||||
</xsl:template>
|
||||
<xsl:template match="letter" mode="reflist">
|
||||
<h2>Letter <xsl:value-of select="@name"/>:</h2>
|
||||
<p>
|
||||
<xsl:for-each select="ref">
|
||||
<xsl:apply-templates mode="anchor" select="."/>
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
</xsl:for-each>
|
||||
</p>
|
||||
</xsl:template>
|
||||
<xsl:template match="file" mode="reflist">
|
||||
<h2><a name="{@name}">Module <xsl:value-of select="@name"/></a>:</h2>
|
||||
<p>
|
||||
<xsl:for-each select="ref">
|
||||
<xsl:apply-templates mode="anchor" select="."/>
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
</xsl:for-each>
|
||||
</p>
|
||||
</xsl:template>
|
||||
<xsl:template match="letter" mode="wordlist">
|
||||
<h2>Letter <xsl:value-of select="@name"/>:</h2>
|
||||
<dl>
|
||||
<xsl:for-each select="word">
|
||||
<dt><xsl:value-of select="@name"/></dt>
|
||||
<dd>
|
||||
<xsl:for-each select="ref">
|
||||
<xsl:apply-templates mode="anchor" select="."/>
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
</xsl:for-each>
|
||||
</dd>
|
||||
</xsl:for-each>
|
||||
</dl>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="constructors">
|
||||
<xsl:message>Generating API Constructors</xsl:message>
|
||||
<xsl:variable name="title">List of constructors for <xsl:value-of select="$module"/></xsl:variable>
|
||||
<xsl:document href="APIconstructors.html" method="xml" encoding="UTF-8"
|
||||
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="style"/>
|
||||
<xsl:element name="title">
|
||||
<xsl:value-of select="$title"/>
|
||||
</xsl:element>
|
||||
</head>
|
||||
<body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000">
|
||||
<xsl:call-template name="titlebox">
|
||||
<xsl:with-param name="title" select="$title"/>
|
||||
</xsl:call-template>
|
||||
<table border="0" cellpadding="4" cellspacing="0" width="100%" align="center">
|
||||
<tr>
|
||||
<td bgcolor="#8b7765">
|
||||
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
||||
<tr>
|
||||
<td valign="top" width="200" bgcolor="#8b7765">
|
||||
<xsl:call-template name="develtoc"/>
|
||||
</td>
|
||||
<td valign="top" bgcolor="#8b7765">
|
||||
<table border="0" cellspacing="0" cellpadding="1" width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000">
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellpadding="3" cellspacing="1" width="100%">
|
||||
<tr>
|
||||
<td bgcolor="#fffacd">
|
||||
<xsl:apply-templates mode="reflist" select="type"/>
|
||||
<p><a href="{$href_base}bugs.html">Daniel Veillard</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:document>
|
||||
</xsl:template>
|
||||
<xsl:template match="files">
|
||||
<xsl:message>Generating API List of synbols per file</xsl:message>
|
||||
<xsl:variable name="title">List of Symbols per Module for <xsl:value-of select="$module"/></xsl:variable>
|
||||
<xsl:document href="APIfiles.html" method="xml" encoding="UTF-8"
|
||||
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="style"/>
|
||||
<xsl:element name="title">
|
||||
<xsl:value-of select="$title"/>
|
||||
</xsl:element>
|
||||
</head>
|
||||
<body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000">
|
||||
<xsl:call-template name="titlebox">
|
||||
<xsl:with-param name="title" select="$title"/>
|
||||
</xsl:call-template>
|
||||
<table border="0" cellpadding="4" cellspacing="0" width="100%" align="center">
|
||||
<tr>
|
||||
<td bgcolor="#8b7765">
|
||||
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
||||
<tr>
|
||||
<td valign="top" width="200" bgcolor="#8b7765">
|
||||
<xsl:call-template name="develtoc"/>
|
||||
</td>
|
||||
<td valign="top" bgcolor="#8b7765">
|
||||
<table border="0" cellspacing="0" cellpadding="1" width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000">
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellpadding="3" cellspacing="1" width="100%">
|
||||
<tr>
|
||||
<td bgcolor="#fffacd">
|
||||
<xsl:apply-templates mode="reflist" select="file"/>
|
||||
<p><a href="{$href_base}bugs.html">Daniel Veillard</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:document>
|
||||
</xsl:template>
|
||||
<xsl:template match="functions">
|
||||
<xsl:message>Generating API Functions by Type</xsl:message>
|
||||
<xsl:variable name="title">List of function manipulating types in <xsl:value-of select="$module"/></xsl:variable>
|
||||
<xsl:document href="APIfunctions.html" method="xml" encoding="UTF-8"
|
||||
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="style"/>
|
||||
<xsl:element name="title">
|
||||
<xsl:value-of select="$title"/>
|
||||
</xsl:element>
|
||||
</head>
|
||||
<body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000">
|
||||
<xsl:call-template name="titlebox">
|
||||
<xsl:with-param name="title" select="$title"/>
|
||||
</xsl:call-template>
|
||||
<table border="0" cellpadding="4" cellspacing="0" width="100%" align="center">
|
||||
<tr>
|
||||
<td bgcolor="#8b7765">
|
||||
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
||||
<tr>
|
||||
<td valign="top" width="200" bgcolor="#8b7765">
|
||||
<xsl:call-template name="develtoc"/>
|
||||
</td>
|
||||
<td valign="top" bgcolor="#8b7765">
|
||||
<table border="0" cellspacing="0" cellpadding="1" width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000">
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellpadding="3" cellspacing="1" width="100%">
|
||||
<tr>
|
||||
<td bgcolor="#fffacd">
|
||||
<xsl:apply-templates mode="reflist" select="type"/>
|
||||
<p><a href="{$href_base}bugs.html">Daniel Veillard</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:document>
|
||||
</xsl:template>
|
||||
<xsl:template match="alpha">
|
||||
<xsl:message>Generating API Alphabetic list</xsl:message>
|
||||
<xsl:variable name="title">Alphabetic List of Symbols in <xsl:value-of select="$module"/></xsl:variable>
|
||||
<xsl:document href="APIsymbols.html" method="xml" encoding="UTF-8"
|
||||
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="style"/>
|
||||
<xsl:element name="title">
|
||||
<xsl:value-of select="$title"/>
|
||||
</xsl:element>
|
||||
</head>
|
||||
<body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000">
|
||||
<xsl:call-template name="titlebox">
|
||||
<xsl:with-param name="title" select="$title"/>
|
||||
</xsl:call-template>
|
||||
<table border="0" cellpadding="4" cellspacing="0" width="100%" align="center">
|
||||
<tr>
|
||||
<td bgcolor="#8b7765">
|
||||
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
||||
<tr>
|
||||
<td valign="top" width="200" bgcolor="#8b7765">
|
||||
<xsl:call-template name="develtoc"/>
|
||||
</td>
|
||||
<td valign="top" bgcolor="#8b7765">
|
||||
<table border="0" cellspacing="0" cellpadding="1" width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000">
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellpadding="3" cellspacing="1" width="100%">
|
||||
<tr>
|
||||
<td bgcolor="#fffacd">
|
||||
<xsl:apply-templates mode="reflist" select="letter"/>
|
||||
<p><a href="{$href_base}bugs.html">Daniel Veillard</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:document>
|
||||
</xsl:template>
|
||||
<xsl:template name="apichunks">
|
||||
<h2 align="center">
|
||||
<xsl:for-each select="/apirefs/index/chunks/chunk">
|
||||
<xsl:variable name="name" select="@name"/>
|
||||
<xsl:variable name="start" select="@start"/>
|
||||
<xsl:variable name="end" select="@end"/>
|
||||
<xsl:variable name="block" select="concat($start, '-', $end)"/>
|
||||
<a href="API{$name}.html"><xsl:value-of select="$block"/></a>
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
</xsl:for-each>
|
||||
</h2>
|
||||
</xsl:template>
|
||||
<xsl:template match="chunk">
|
||||
<xsl:variable name="name" select="@name"/>
|
||||
<xsl:variable name="start" select="@start"/>
|
||||
<xsl:variable name="end" select="@end"/>
|
||||
<xsl:variable name="block" select="concat($start, '-', $end)"/>
|
||||
<xsl:variable name="target" select="/apirefs/index/chunk[@name = $name]"/>
|
||||
<xsl:variable name="title">API Alphabetic Index <xsl:value-of select="$block"/> for <xsl:value-of select="$module"/></xsl:variable>
|
||||
<xsl:document href="API{$name}.html" method="xml" encoding="UTF-8"
|
||||
doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<xsl:call-template name="style"/>
|
||||
<xsl:element name="title">
|
||||
<xsl:value-of select="$title"/>
|
||||
</xsl:element>
|
||||
</head>
|
||||
<body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000">
|
||||
<xsl:call-template name="titlebox">
|
||||
<xsl:with-param name="title" select="$title"/>
|
||||
</xsl:call-template>
|
||||
<table border="0" cellpadding="4" cellspacing="0" width="100%" align="center">
|
||||
<tr>
|
||||
<td bgcolor="#8b7765">
|
||||
<table border="0" cellspacing="0" cellpadding="2" width="100%">
|
||||
<tr>
|
||||
<td valign="top" width="200" bgcolor="#8b7765">
|
||||
<xsl:call-template name="develtoc"/>
|
||||
</td>
|
||||
<td valign="top" bgcolor="#8b7765">
|
||||
<table border="0" cellspacing="0" cellpadding="1" width="100%">
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000">
|
||||
<tr>
|
||||
<td>
|
||||
<table border="0" cellpadding="3" cellspacing="1" width="100%">
|
||||
<tr>
|
||||
<td bgcolor="#fffacd">
|
||||
<xsl:call-template name="apichunks"/>
|
||||
<xsl:apply-templates mode="wordlist"
|
||||
select="$target/letter"/>
|
||||
<xsl:call-template name="apichunks"/>
|
||||
<p><a href="{$href_base}bugs.html">Daniel Veillard</a></p>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
</html>
|
||||
</xsl:document>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="index">
|
||||
<xsl:message>Generating API Index</xsl:message>
|
||||
<xsl:apply-templates select="chunks/chunk"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="apirefs">
|
||||
<xsl:message>Generating API Cross References</xsl:message>
|
||||
<xsl:apply-templates select="constructors"/>
|
||||
<xsl:apply-templates select="functions"/>
|
||||
<xsl:apply-templates select="alpha"/>
|
||||
<xsl:apply-templates select="files"/>
|
||||
<xsl:apply-templates select="index"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="/">
|
||||
<xsl:apply-templates select="$apirefs/apirefs"/>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
2151
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/doc/apibuild.py
Normal file
2151
ActiveX/Common/DocxFormat/Source/XML/libxml2/XML/doc/apibuild.py
Normal file
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
@@ -0,0 +1,70 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /><link rel="SHORTCUT ICON" href="/favicon.ico" /><style type="text/css">
|
||||
TD {font-family: Verdana,Arial,Helvetica}
|
||||
BODY {font-family: Verdana,Arial,Helvetica; margin-top: 2em; margin-left: 0em; margin-right: 0em}
|
||||
H1 {font-family: Verdana,Arial,Helvetica}
|
||||
H2 {font-family: Verdana,Arial,Helvetica}
|
||||
H3 {font-family: Verdana,Arial,Helvetica}
|
||||
A:link, A:visited, A:active { text-decoration: underline }
|
||||
</style><title>Reporting bugs and getting help</title></head><body bgcolor="#8b7765" text="#000000" link="#a06060" vlink="#000000"><table border="0" width="100%" cellpadding="5" cellspacing="0" align="center"><tr><td width="120"><a href="http://swpat.ffii.org/"><img src="epatents.png" alt="Action against software patents" /></a></td><td width="180"><a href="http://www.gnome.org/"><img src="gnome2.png" alt="Gnome2 Logo" /></a><a href="http://www.w3.org/Status"><img src="w3c.png" alt="W3C Logo" /></a><a href="http://www.redhat.com/"><img src="redhat.gif" alt="Red Hat Logo" /></a><div align="left"><a href="http://xmlsoft.org/"><img src="Libxml2-Logo-180x168.gif" alt="Made with Libxml2 Logo" /></a></div></td><td><table border="0" width="90%" cellpadding="2" cellspacing="0" align="center" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3" bgcolor="#fffacd"><tr><td align="center"><h1>The XML C parser and toolkit of Gnome</h1><h2>Reporting bugs and getting help</h2></td></tr></table></td></tr></table></td></tr></table><table border="0" cellpadding="4" cellspacing="0" width="100%" align="center"><tr><td bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="2" width="100%"><tr><td valign="top" width="200" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Main Menu</b></center></td></tr><tr><td bgcolor="#fffacd"><form action="search.php" enctype="application/x-www-form-urlencoded" method="get"><input name="query" type="text" size="20" value="" /><input name="submit" type="submit" value="Search ..." /></form><ul><li><a href="index.html">Home</a></li><li><a href="html/index.html">Reference Manual</a></li><li><a href="intro.html">Introduction</a></li><li><a href="FAQ.html">FAQ</a></li><li><a href="docs.html" style="font-weight:bold">Developer Menu</a></li><li><a href="bugs.html">Reporting bugs and getting help</a></li><li><a href="help.html">How to help</a></li><li><a href="downloads.html">Downloads</a></li><li><a href="news.html">Releases</a></li><li><a href="XMLinfo.html">XML</a></li><li><a href="XSLT.html">XSLT</a></li><li><a href="xmldtd.html">Validation & DTDs</a></li><li><a href="encoding.html">Encodings support</a></li><li><a href="catalog.html">Catalog support</a></li><li><a href="namespaces.html">Namespaces</a></li><li><a href="contribs.html">Contributions</a></li><li><a href="examples/index.html" style="font-weight:bold">Code Examples</a></li><li><a href="html/index.html" style="font-weight:bold">API Menu</a></li><li><a href="guidelines.html">XML Guidelines</a></li><li><a href="ChangeLog.html">Recent Changes</a></li></ul></td></tr></table><table width="100%" border="0" cellspacing="1" cellpadding="3"><tr><td colspan="1" bgcolor="#eecfa1" align="center"><center><b>Related links</b></center></td></tr><tr><td bgcolor="#fffacd"><ul><li><a href="http://mail.gnome.org/archives/xml/">Mail archive</a></li><li><a href="http://xmlsoft.org/XSLT/">XSLT libxslt</a></li><li><a href="http://phd.cs.unibo.it/gdome2/">DOM gdome2</a></li><li><a href="http://www.aleksey.com/xmlsec/">XML-DSig xmlsec</a></li><li><a href="ftp://xmlsoft.org/">FTP</a></li><li><a href="http://www.zlatkovic.com/projects/libxml/">Windows binaries</a></li><li><a href="http://opencsw.org/packages/libxml2">Solaris binaries</a></li><li><a href="http://www.explain.com.au/oss/libxml2xslt.html">MacOsX binaries</a></li><li><a href="http://lxml.de/">lxml Python bindings</a></li><li><a href="http://cpan.uwinnipeg.ca/dist/XML-LibXML">Perl bindings</a></li><li><a href="http://libxmlplusplus.sourceforge.net/">C++ bindings</a></li><li><a href="http://www.zend.com/php5/articles/php5-xmlphp.php#Heading4">PHP bindings</a></li><li><a href="http://sourceforge.net/projects/libxml2-pas/">Pascal bindings</a></li><li><a href="http://libxml.rubyforge.org/">Ruby bindings</a></li><li><a href="http://tclxml.sourceforge.net/">Tcl bindings</a></li><li><a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Bug Tracker</a></li></ul></td></tr></table></td></tr></table></td><td valign="top" bgcolor="#8b7765"><table border="0" cellspacing="0" cellpadding="1" width="100%"><tr><td><table border="0" cellspacing="0" cellpadding="1" width="100%" bgcolor="#000000"><tr><td><table border="0" cellpadding="3" cellspacing="1" width="100%"><tr><td bgcolor="#fffacd"><p>Well, bugs or missing features are always possible, and I will make a
|
||||
point of fixing them in a timely fashion. The best way to report a bug is to
|
||||
use the <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">Gnome
|
||||
bug tracking database</a> (make sure to use the "libxml2" module name). I
|
||||
look at reports there regularly and it's good to have a reminder when a bug
|
||||
is still open. Be sure to specify that the bug is for the package libxml2.</p><p>For small problems you can try to get help on IRC, the #xml channel on
|
||||
irc.gnome.org (port 6667) usually have a few person subscribed which may help
|
||||
(but there is no guarantee and if a real issue is raised it should go on the
|
||||
mailing-list for archival).</p><p>There is also a mailing-list <a href="mailto:xml@gnome.org">xml@gnome.org</a> for libxml, with an <a href="http://mail.gnome.org/archives/xml/">on-line archive</a> (<a href="http://xmlsoft.org/messages">old</a>). To subscribe to this list,
|
||||
please visit the <a href="http://mail.gnome.org/mailman/listinfo/xml">associated Web</a> page and
|
||||
follow the instructions. <strong>Do not send code, I won't debug it</strong>
|
||||
(but patches are really appreciated!).</p><p>Please note that with the current amount of virus and SPAM, sending mail
|
||||
to the list without being subscribed won't work. There is *far too many
|
||||
bounces* (in the order of a thousand a day !) I cannot approve them manually
|
||||
anymore. If your mail to the list bounced waiting for administrator approval,
|
||||
it is LOST ! Repost it and fix the problem triggering the error. Also please
|
||||
note that <span style="color: #FF0000; background-color: #FFFFFF">emails with
|
||||
a legal warning asking to not copy or redistribute freely the information
|
||||
they contain</span> are <strong>NOT</strong> acceptable for the mailing-list,
|
||||
such mail will as much as possible be discarded automatically, and are less
|
||||
likely to be answered if they made it to the list, <strong>DO NOT</strong>
|
||||
post to the list from an email address where such legal requirements are
|
||||
automatically added, get private paying support if you can't share
|
||||
information.</p><p>Check the following <strong><span style="color: #FF0000">before
|
||||
posting</span></strong>:</p><ul>
|
||||
<li>Read the <a href="FAQ.html">FAQ</a> and <a href="search.php">use the
|
||||
search engine</a> to get information related to your problem.</li>
|
||||
<li>Make sure you are <a href="ftp://xmlsoft.org/libxml2/">using a recent
|
||||
version</a>, and that the problem still shows up in a recent version.</li>
|
||||
<li>Check the <a href="http://mail.gnome.org/archives/xml/">list
|
||||
archives</a> to see if the problem was reported already. In this case
|
||||
there is probably a fix available, similarly check the <a href="http://bugzilla.gnome.org/buglist.cgi?product=libxml2">registered
|
||||
open bugs</a>.</li>
|
||||
<li>Make sure you can reproduce the bug with xmllint or one of the test
|
||||
programs found in source in the distribution.</li>
|
||||
<li>Please send the command showing the error as well as the input (as an
|
||||
attachment)</li>
|
||||
</ul><p>Then send the bug with associated information to reproduce it to the <a href="mailto:xml@gnome.org">xml@gnome.org</a> list; if it's really libxml
|
||||
related I will approve it. Please do not send mail to me directly, it makes
|
||||
things really hard to track and in some cases I am not the best person to
|
||||
answer a given question, ask on the list.</p><p>To <span style="color: #E50000">be really clear about support</span>:</p><ul>
|
||||
<li>Support or help <span style="color: #E50000">requests MUST be sent to
|
||||
the list or on bugzilla</span> in case of problems, so that the Question
|
||||
and Answers can be shared publicly. Failing to do so carries the implicit
|
||||
message "I want free support but I don't want to share the benefits with
|
||||
others" and is not welcome. I will automatically Carbon-Copy the
|
||||
xml@gnome.org mailing list for any technical reply made about libxml2 or
|
||||
libxslt.</li>
|
||||
<li>There is <span style="color: #E50000">no guarantee of support</span>. If
|
||||
your question remains unanswered after a week, repost it, making sure you
|
||||
gave all the detail needed and the information requested.</li>
|
||||
<li>Failing to provide information as requested or double checking first
|
||||
for prior feedback also carries the implicit message "the time of the
|
||||
library maintainers is less valuable than my time" and might not be
|
||||
welcome.</li>
|
||||
</ul><p>Of course, bugs reported with a suggested patch for fixing them will
|
||||
probably be processed faster than those without.</p><p>If you're looking for help, a quick look at <a href="http://mail.gnome.org/archives/xml/">the list archive</a> may actually
|
||||
provide the answer. I usually send source samples when answering libxml2
|
||||
usage questions. The <a href="http://xmlsoft.org/html/book1.html">auto-generated documentation</a> is
|
||||
not as polished as I would like (i need to learn more about DocBook), but
|
||||
it's a good starting point.</p><p><a href="bugs.html">Daniel Veillard</a></p></td></tr></table></td></tr></table></td></tr></table></td></tr></table></td></tr></table></body></html>
|
||||
@@ -0,0 +1,414 @@
|
||||
#! /bin/bash
|
||||
|
||||
usage()
|
||||
{
|
||||
cat <<EOF
|
||||
Usage: $pname [OPTION]
|
||||
|
||||
Known values for OPTION are:
|
||||
--prefix=DIR change the output directory for catalog files
|
||||
[default $DIR]
|
||||
--show display the output filenames and paths
|
||||
--version=x.y.z change the DocBook version [default $VERSION]
|
||||
--debug display script action information
|
||||
--help display this help and exit
|
||||
EOF
|
||||
}
|
||||
|
||||
setdefault()
|
||||
{
|
||||
echo Unable to update root catalog $ROOTCATALOG
|
||||
ROOTCATALOG=$HOME/xmlcatalog
|
||||
CATALOG=$HOME/dbkxmlcatalog
|
||||
DIR=$HOME
|
||||
CAT=xmlcatalog
|
||||
echo Using $ROOTCATALOG as the root catalog
|
||||
echo Remember to export XML_CATALOG_FILES=$ROOTCATALOG
|
||||
echo
|
||||
prefix=1
|
||||
}
|
||||
|
||||
fixname()
|
||||
{
|
||||
#
|
||||
# ROOTCATALOG contains the full pathname for the catalog. We will
|
||||
# split that into the directory name and the filename, then we will
|
||||
# see if the directory exists. If it does not, we will attempt to
|
||||
# create it.
|
||||
#
|
||||
if test $verbose = 1
|
||||
then
|
||||
echo Checking path $ROOTCATALOG for permissions
|
||||
fi
|
||||
# First we split the filename and directory name
|
||||
CAT=`basename $ROOTCATALOG`
|
||||
DIR=`dirname $ROOTCATALOG`
|
||||
if test "$DIR" = ""
|
||||
then
|
||||
echo Unable to isolate directory name from '$ROOTCATALOG' - exiting
|
||||
exit 1
|
||||
fi
|
||||
CATALOG=${DIR}/docbook
|
||||
parent=`dirname $DIR`
|
||||
if test "$parent" == ""
|
||||
then
|
||||
parent=/
|
||||
fi
|
||||
if [ ! -d $DIR ]
|
||||
then
|
||||
if test $verbose = 1
|
||||
then
|
||||
echo Directory $DIR missing - I will try to create it
|
||||
fi
|
||||
if [ ! -w $parent ]
|
||||
then
|
||||
if test $verbose = 1
|
||||
then
|
||||
echo No write permission for directory $parent
|
||||
fi
|
||||
setdefault
|
||||
else
|
||||
newdir=1
|
||||
fi
|
||||
else
|
||||
if [ -f $ROOTCATALOG -a ! -w $ROOTCATALOG ] ||
|
||||
[ -e $ROOTCATALOG -a ! -f $ROOTCATALOG ] ||
|
||||
[ ! -e $ROOTCATALOG -a ! -w $DIR ]
|
||||
then
|
||||
setdefault
|
||||
fi
|
||||
fi
|
||||
|
||||
}
|
||||
finddbx()
|
||||
{
|
||||
dtd421=""
|
||||
s="//OASIS//DTD DocBook XML V${VERSION}//EN"
|
||||
found=`find $1 -name docbookx.dtd -exec grep -l "$s" {} \;`
|
||||
for dtd in $found; do
|
||||
docbookdir=`dirname $dtd`
|
||||
echo Found DocBook XML $VERSION DTD in $docbookdir
|
||||
#
|
||||
# The original script had a check for write permission on the file
|
||||
# but I can't see why it should be necessary
|
||||
#
|
||||
dtd421=$dtd
|
||||
break
|
||||
done
|
||||
}
|
||||
|
||||
#
|
||||
# Preset script control params
|
||||
show=0
|
||||
prefix=0
|
||||
newdir=0
|
||||
verbose=0
|
||||
#
|
||||
# Isolate the script name for messages
|
||||
pname=`basename $0`
|
||||
VERSION=4.1.2
|
||||
|
||||
if test "$XML_CATALOG_FILES" != ""
|
||||
then
|
||||
ROOTCATALOG=$XML_CATALOG_FILES
|
||||
else
|
||||
ROOTCATALOG=/etc/xml/catalog
|
||||
fi
|
||||
|
||||
#
|
||||
# Interpret script parameters
|
||||
while test $# -gt 0; do
|
||||
case "$1" in
|
||||
-*=*) optarg=`echo "$1" | sed 's/[-_a-zA-Z0-9]*=//'` ;;
|
||||
*) optarg= ;;
|
||||
esac
|
||||
|
||||
case "$1" in
|
||||
-p=* | --prefix=*)
|
||||
ROOTCATALOG=$optarg/catalog
|
||||
prefix=1
|
||||
;;
|
||||
|
||||
-s | --show)
|
||||
show=1
|
||||
;;
|
||||
|
||||
-v=* | --version=*)
|
||||
VERSION=$optarg
|
||||
;;
|
||||
|
||||
-d | --debug)
|
||||
verbose=1
|
||||
;;
|
||||
|
||||
-h | --help)
|
||||
usage
|
||||
exit 0
|
||||
;;
|
||||
|
||||
* )
|
||||
echo Invalid argument "$1"
|
||||
usage
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
fixname
|
||||
if test $prefix != 0
|
||||
then
|
||||
export XML_CATALOG_FILES=$ROOTCATALOG
|
||||
fi
|
||||
if test $show != 0
|
||||
then
|
||||
echo XML Catalog is $ROOTCATALOG
|
||||
echo Docbook Catalog is $CATALOG
|
||||
exit 0
|
||||
fi
|
||||
if test $newdir!=0
|
||||
then
|
||||
mkdir -p $DIR
|
||||
chmod 755 $DIR
|
||||
fi
|
||||
|
||||
echo Starting run
|
||||
#
|
||||
# create the catalogs root and docbook specific
|
||||
#
|
||||
if [ ! -r $ROOTCATALOG ] ; then
|
||||
echo creating XML Catalog root $ROOTCATALOG
|
||||
xmlcatalog --noout --create $ROOTCATALOG
|
||||
fi
|
||||
if [ ! -r $ROOTCATALOG ] ; then
|
||||
echo Failed creating XML Catalog root $ROOTCATALOG
|
||||
exit 1
|
||||
fi
|
||||
if [ ! -r $CATALOG ] ; then
|
||||
echo creating DocBook XML Catalog $CATALOG
|
||||
xmlcatalog --noout --create $CATALOG
|
||||
fi
|
||||
if [ ! -r $CATALOG ] ; then
|
||||
echo Failed creating DocBook XML Catalog $CATALOG
|
||||
exit 1
|
||||
fi
|
||||
|
||||
#
|
||||
# find the prefix for DocBook DTD
|
||||
#
|
||||
finddbx /usr/share/xml
|
||||
if [ "$dtd421" = "" ] ; then
|
||||
finddbx $HOME
|
||||
fi
|
||||
if [ "$dtd421" = "" ] ; then
|
||||
finddbx /usr/local
|
||||
fi
|
||||
if [ "$dtd421" = "" ] ; then
|
||||
finddbx /usr/share/sgml
|
||||
fi
|
||||
|
||||
if [ "$dtd421" = "" ] ; then
|
||||
echo could not locate version $VERSION of DocBook XML
|
||||
exit 1
|
||||
fi
|
||||
|
||||
xmlcatalog --noout --add "public" \
|
||||
"-//OASIS//ELEMENTS DocBook XML Information Pool V${VERSION}//EN" \
|
||||
"file://$docbookdir/dbpoolx.mod" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"-//OASIS//DTD DocBook XML V${VERSION}//EN" \
|
||||
"file://$docbookdir/docbookx.dtd" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"-//OASIS//ENTITIES DocBook XML Character Entities V${VERSION}//EN" \
|
||||
"file://$docbookdir/dbcentx.mod" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"-//OASIS//ENTITIES DocBook XML Notations V${VERSION}//EN" \
|
||||
"file://$docbookdir/dbnotnx.mod" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"-//OASIS//ENTITIES DocBook XML Additional General Entities V${VERSION}//EN" \
|
||||
"file://$docbookdir/dbgenent.mod" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"-//OASIS//ELEMENTS DocBook XML Document Hierarchy V${VERSION}//EN" \
|
||||
"file://$docbookdir/dbhierx.mod" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"-//OASIS//DTD XML Exchange Table Model 19990315//EN" \
|
||||
"file://$docbookdir/soextblx.dtd" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"-//OASIS//DTD DocBook XML CALS Table Model V${VERSION}//EN" \
|
||||
"file://$docbookdir/calstblx.dtd" $CATALOG
|
||||
xmlcatalog --noout --add "rewriteSystem" \
|
||||
"http://www.oasis-open.org/docbook/xml/${VERSION}" \
|
||||
"file://$docbookdir" $CATALOG
|
||||
xmlcatalog --noout --add "rewriteURI" \
|
||||
"http://www.oasis-open.org/docbook/xml/${VERSION}" \
|
||||
"file://$docbookdir" $CATALOG
|
||||
|
||||
xmlcatalog --noout --add "delegatePublic" \
|
||||
"-//OASIS//ENTITIES DocBook XML" \
|
||||
"file://$CATALOG" $ROOTCATALOG
|
||||
xmlcatalog --noout --add "delegatePublic" \
|
||||
"-//OASIS//DTD DocBook XML" \
|
||||
"file://$CATALOG" $ROOTCATALOG
|
||||
xmlcatalog --noout --add "delegateSystem" \
|
||||
"http://www.oasis-open.org/docbook/" \
|
||||
"file://$CATALOG" $ROOTCATALOG
|
||||
xmlcatalog --noout --add "delegateURI" \
|
||||
"http://www.oasis-open.org/docbook/" \
|
||||
"file://$CATALOG" $ROOTCATALOG
|
||||
|
||||
#
|
||||
# find the prefix for ISO DocBook entities
|
||||
#
|
||||
top=`dirname $docbookdir`
|
||||
found=`find $top -name iso-amsb.ent`
|
||||
if [ "$found" = "" ] ; then
|
||||
found=`find /usr/share/xml -name iso-amsb.ent`
|
||||
fi
|
||||
if [ "$found" = "" ] ; then
|
||||
found=`find $HOME -name iso-amsb.ent`
|
||||
fi
|
||||
if [ "$found" = "" ] ; then
|
||||
found=`find /usr/local -name iso-amsb.ent`
|
||||
fi
|
||||
if [ "$found" = "" ] ; then
|
||||
found=`find /usr/share/sgml -name iso-amsb.ent`
|
||||
fi
|
||||
if [ "$found" = "" ] ; then
|
||||
echo could not locate iso-amsb.ent of ISO DocBook entities
|
||||
exit 1
|
||||
fi
|
||||
|
||||
entxml=""
|
||||
for tst in $found; do
|
||||
check=`grep '<!ENTITY ominus."\⊖">' $tst`
|
||||
if [ "$check" != "" ] ; then
|
||||
entxml=$tst
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$entxml" = "" ] ; then
|
||||
echo could not locate ISO DocBook entities
|
||||
exit 1
|
||||
fi
|
||||
isodir=`dirname $entxml`
|
||||
echo Found ISO DocBook entities in $isodir
|
||||
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES Publishing//EN" \
|
||||
"file://$isodir/iso-pub.ent" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES Greek Letters//EN" \
|
||||
"file://$isodir/iso-grk1.ent" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES Box and Line Drawing//EN" \
|
||||
"file://$isodir/iso-box.ent" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES Greek Symbols//EN" \
|
||||
"file://$isodir/iso-grk3.ent" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES Added Math Symbols: Negated Relations//EN" \
|
||||
"file://$isodir/iso-amsn.ent" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES Numeric and Special Graphic//EN" \
|
||||
"file://$isodir/iso-num.ent" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES Alternative Greek Symbols//EN" \
|
||||
"file://$isodir/iso-grk4.ent" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES Diacritical Marks//EN" \
|
||||
"file://$isodir/iso-dia.ent" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES Monotoniko Greek//EN" \
|
||||
"file://$isodir/iso-grk2.ent" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN" \
|
||||
"file://$isodir/iso-amsa.ent" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES Added Math Symbols: Ordinary//EN" \
|
||||
"file://$isodir/iso-amso.ent" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES Russian Cyrillic//EN" \
|
||||
"file://$isodir/iso-cyr1.ent" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES General Technical//EN" \
|
||||
"file://$isodir/iso-tech.ent" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES Added Math Symbols: Delimiters//EN" \
|
||||
"file://$isodir/iso-amsc.ent" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES Added Latin 1//EN" \
|
||||
"file://$isodir/iso-lat1.ent" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN" \
|
||||
"file://$isodir/iso-amsb.ent" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES Added Latin 2//EN" \
|
||||
"file://$isodir/iso-lat2.ent" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES Added Math Symbols: Relations//EN" \
|
||||
"file://$isodir/iso-amsr.ent" $CATALOG
|
||||
xmlcatalog --noout --add "public" \
|
||||
"ISO 8879:1986//ENTITIES Non-Russian Cyrillic//EN" \
|
||||
"file://$isodir/iso-cyr2.ent" $CATALOG
|
||||
|
||||
xmlcatalog --noout --add "delegatePublic" \
|
||||
"ISO 8879:1986" \
|
||||
"file://$CATALOG" $ROOTCATALOG
|
||||
|
||||
#
|
||||
# find the prefix for XSLT stylesheets
|
||||
#
|
||||
top=`dirname $docbookdir`
|
||||
found=`find $top -name chunk.xsl`
|
||||
if [ "$found" = "" ] ; then
|
||||
found=`find /usr/share/xml -name chunk.xsl`
|
||||
fi
|
||||
if [ "$found" = "" ] ; then
|
||||
found=`find $HOME -name chunk.xsl`
|
||||
fi
|
||||
if [ "$found" = "" ] ; then
|
||||
found=`find /usr/local -name chunk.xsl`
|
||||
fi
|
||||
if [ "$found" = "" ] ; then
|
||||
found=`find /usr/share/sgml -name chunk.xsl`
|
||||
fi
|
||||
if [ "$found" = "" ] ; then
|
||||
echo could not locate chunk-common.xsl of DocBook XSLT stylesheets
|
||||
exit 1
|
||||
fi
|
||||
|
||||
xsldir=""
|
||||
for tst in $found; do
|
||||
dir=`dirname $tst`
|
||||
dir=`dirname $dir`
|
||||
if [ -r $dir/html/docbook.xsl -a -r $dir/common/l10n.xml ]; then
|
||||
xsldir=$dir
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
if [ "$xsldir" = "" ] ; then
|
||||
echo could not locate DocBook XSLT stylesheets
|
||||
exit 1
|
||||
fi
|
||||
echo Found DocBook XSLT stylesheets in $xsldir
|
||||
for version in current 1.39 1.40 1.41 1.42 1.43 1.44 1.45 1.46 1.47 \
|
||||
1.48 1.49 1.50
|
||||
do
|
||||
xmlcatalog --noout --add "rewriteSystem" \
|
||||
"http://docbook.sourceforge.net/release/xsl/$version" \
|
||||
"file://$xsldir" $CATALOG
|
||||
xmlcatalog --noout --add "rewriteURI" \
|
||||
"http://docbook.sourceforge.net/release/xsl/$version" \
|
||||
"file://$xsldir" $CATALOG
|
||||
done
|
||||
|
||||
xmlcatalog --noout --add "delegateSystem" \
|
||||
"http://docbook.sourceforge.net/release/xsl/" \
|
||||
"file://$CATALOG" $ROOTCATALOG
|
||||
xmlcatalog --noout --add "delegateURI" \
|
||||
"http://docbook.sourceforge.net/release/xsl/" \
|
||||
"file://$CATALOG" $ROOTCATALOG
|
||||
|
||||
#
|
||||
#
|
||||
@@ -0,0 +1,62 @@
|
||||
#FIG 3.2
|
||||
Landscape
|
||||
Center
|
||||
Inches
|
||||
Letter
|
||||
100.00
|
||||
Single
|
||||
-2
|
||||
1200 2
|
||||
1 2 0 1 0 7 50 0 -1 0.000 1 0.0000 2587 1875 1312 300 1275 1575 3900 2175
|
||||
1 2 0 1 0 7 50 0 -1 0.000 1 0.0000 2587 3900 1312 300 1275 3600 3900 4200
|
||||
1 2 0 1 0 7 50 0 -1 0.000 1 0.0000 10987 1875 1312 300 9675 1575 12300 2175
|
||||
1 2 0 1 0 7 50 0 -1 0.000 1 0.0000 10987 3900 1312 300 9675 3600 12300 4200
|
||||
2 4 0 2 -1 7 50 0 -1 6.000 0 0 7 0 0 5
|
||||
4350 5925 4350 4650 3375 4650 3375 5925 4350 5925
|
||||
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
|
||||
1275 1875 1275 3900
|
||||
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
|
||||
3900 1875 3900 3900
|
||||
2 3 0 1 0 1 50 0 20 0.000 0 0 0 0 0 7
|
||||
1685 3675 1945 3525 1945 3225 1685 3075 1425 3225 1425 3525
|
||||
1685 3675
|
||||
2 3 0 1 0 1 50 0 20 0.000 0 0 0 0 0 7
|
||||
2250 3000 2510 2850 2510 2550 2250 2400 1990 2550 1990 2850
|
||||
2250 3000
|
||||
2 4 0 1 0 11 50 0 20 0.000 0 0 7 0 0 5
|
||||
3375 2625 3000 2625 3000 2325 3375 2325 3375 2625
|
||||
2 4 0 1 0 17 50 0 20 0.000 0 0 7 0 0 5
|
||||
3375 3000 3000 3000 3000 2700 3375 2700 3375 3000
|
||||
2 4 0 1 0 13 50 0 20 0.000 0 0 7 0 0 5
|
||||
3825 2850 3450 2850 3450 2550 3825 2550 3825 2850
|
||||
2 1 0 2 4 7 50 0 -1 6.000 0 0 -1 1 0 2
|
||||
1 0 2.00 120.00 240.00
|
||||
2550 2625 3000 2475
|
||||
2 1 0 2 4 7 50 0 -1 6.000 0 0 -1 1 0 2
|
||||
1 0 2.00 120.00 240.00
|
||||
3811 5007 1875 3600
|
||||
2 1 0 2 -1 7 50 0 -1 0.000 0 0 -1 1 0 4
|
||||
1 0 2.00 120.00 240.00
|
||||
3825 5025 5250 5025 9075 4125 11325 2625
|
||||
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
|
||||
9675 1875 9675 3900
|
||||
2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
|
||||
12300 1875 12300 3900
|
||||
2 4 0 1 0 11 50 0 20 0.000 0 0 7 0 0 5
|
||||
11775 2625 11400 2625 11400 2325 11775 2325 11775 2625
|
||||
2 4 0 1 0 17 50 0 20 0.000 0 0 7 0 0 5
|
||||
11775 3000 11400 3000 11400 2700 11775 2700 11775 3000
|
||||
2 4 0 1 0 13 50 0 20 0.000 0 0 7 0 0 5
|
||||
12225 2850 11850 2850 11850 2550 12225 2550 12225 2850
|
||||
3 3 0 1 -1 7 50 0 -1 4.000 0 0 0 11
|
||||
7725 2625 6450 2700 5775 3525 5700 4200 5925 4800 6600 5475
|
||||
7350 5625 8100 5400 8550 4725 8625 3975 8400 3075
|
||||
-1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000 -1.000
|
||||
-1.000 -1.000 -1.000
|
||||
3 2 0 2 4 7 50 0 -1 6.000 0 1 0 3
|
||||
1 0 2.00 120.00 240.00
|
||||
1575 3150 1575 2775 1950 2700
|
||||
0.000 -1.000 0.000
|
||||
4 0 -1 50 0 2 35 0.0000 4 345 1740 6375 4200 Internet\001
|
||||
4 0 0 50 0 0 18 0.0000 4 255 1770 2025 3450 /etc/xml/catalog\001
|
||||
4 0 -1 50 0 0 22 0.0000 4 255 810 3825 4500 XML\001
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user