gareth 2003/01/29 12:04:18 Modified: c/tests/DOM/DOMTest DTest.cpp Added: c/tests/DOM/TypeInfo Makefile.in TypeInfo.cpp TypeInfo.hpp c/tests/DOM/TypeInfo/data SecondSchema.xsd TypeInfo.dtd TypeInfo.xml TypeInfo.xsd TypeInfoJustDTD.xml TypeInfoNoDTD.xml TypeInfoNoDTD.xsd combined.dtd combined.xml combined.xsd Log: testing for DOMTypeInfo Revision Changes Path 1.38 +4 -1 xml-xerces/c/tests/DOM/DOMTest/DTest.cpp Index: DTest.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/tests/DOM/DOMTest/DTest.cpp,v retrieving revision 1.37 retrieving revision 1.38 diff -u -r1.37 -r1.38 --- DTest.cpp 3 Jan 2003 17:09:02 -0000 1.37 +++ DTest.cpp 29 Jan 2003 20:04:09 -0000 1.38 @@ -56,6 +56,9 @@ /* * $Log$ + * Revision 1.38 2003/01/29 20:04:09 gareth + * testing for DOMTypeInfo + * * Revision 1.37 2003/01/03 17:09:02 tng * delete the parser when done, avoid memory leak report with the test case * @@ -1044,7 +1047,7 @@ //Setup parser XercesDOMParser *parser = new XercesDOMParser; - parser->setValidationScheme(XercesDOMParser::Val_Auto); + parser->setValidationScheme(XercesDOMParser::Val_Never); parser->setDoNamespaces(true); parser->setDoSchema(true); parser->setCreateEntityReferenceNodes(true); 1.1 xml-xerces/c/tests/DOM/TypeInfo/Makefile.in Index: Makefile.in =================================================================== # # The Apache Software License, Version 1.1 # # Copyright (c) 1999-2000 The Apache Software Foundation. All rights # reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in # the documentation and/or other materials provided with the # distribution. # # 3. The end-user documentation included with the redistribution, # if any, must include the following acknowledgment: # "This product includes software developed by the # Apache Software Foundation (http://www.apache.org/)." # Alternately, this acknowledgment may appear in the software itself, # if and wherever such third-party acknowledgments normally appear. # # 4. The names "Xerces" and "Apache Software Foundation" must # not be used to endorse or promote products derived from this # software without prior written permission. For written # permission, please contact apache\@apache.org. # # 5. Products derived from this software may not be called "Apache", # nor may "Apache" appear in their name, without prior written # permission of the Apache Software Foundation. # # THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES # OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE # DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR # ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF # USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND # ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT # OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. # ==================================================================== # # This software consists of voluntary contributions made by many # individuals on behalf of the Apache Software Foundation, and was # originally based on software copyright (c) 1999, International # Business Machines, Inc., http://www.ibm.com . For more information # on the Apache Software Foundation, please see # <http://www.apache.org/>. # # # $Id: Makefile.in,v 1.1 2003/01/29 20:04:14 gareth Exp $ # # ################################################################### # IMPORTANT NOTE # ################################################################### # If you are going to do the OS390BATCH build, make sure you have # # the OS390BATCH environment variable set. # # # # export OS390BATCH=1 # # # ################################################################### PLATFORM = @platform@ COMPILER = @compiler@ GCC = @GCC@ GXX = @GXX@ CXXFLAGS = @cxxflags@ CFLAGS = @cflags@ LDFLAGS = @ldflags@ PREFIX = @prefix@ THREADS = @threads@ EXTRA_LIBS = @extra_libs@ include ../../../version.incl include ../../Makefile.incl APP_NAME=TypeInfo APP_DIR=DOM/TypeInfo OUTDIR= ${XERCESCROOT}/tests/${APP_DIR} EXEC= ${XERCESCROOT}/bin OBJS= ${OUTDIR}/TypeInfo.o SRC= ${XERCESCROOT}/tests/${APP_DIR} HEADER_FILES=${SRC}/TypeInfo.hpp ## OS390BATCH ifeq (${OS390BATCH},1) BATCH_TARGET= "//'${LOADMOD}(${APP_NAME})'" all:: makedir ${BATCH_TARGET} else all:: makedir ${EXEC}/${APP_NAME} endif makedir:: -mkdir -p $(OUTDIR) ${EXEC}/${APP_NAME}:: ${OBJS} ${LINK} ${PLATFORM_LIB_LINK_OPTIONS} ${OBJS} -o $@ ${LIBRARY_SEARCH_PATHS} ${LIBRARY_NAMES} ${EXTRA_LINK_OPTIONS} ${BATCH_TARGET}:: ${OBJS} ${LINK} ${PLATFORM_LIB_LINK_OPTIONS} ${OBJS} -o $@ ${LIBRARY_SEARCH_PATHS} ${LIBRARY_NAMES} ${EXTRA_LINK_OPTIONS} $(OUTDIR)/TypeInfo.o:: ${SRC}/TypeInfo.cpp ${HEADER_FILES} ${CC} ${INCLUDES} ${CMP} -o $(OUTDIR)/TypeInfo.o ${SRC}/TypeInfo.cpp clean:: rm -f ${OBJS} ${EXEC}/${APP_NAME} distclean:: clean rm -f Makefile 1.1 xml-xerces/c/tests/DOM/TypeInfo/TypeInfo.cpp Index: TypeInfo.cpp =================================================================== /* * The Apache Software License, Version 1.1 * * Copyright (c) 2003 The Apache Software Foundation-> All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution-> * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Xerces" and "Apache Software Foundation" must * not be used to endorse or promote products derived from this * software without prior written permission-> For written * permission, please contact apache\@apache.org. * * 5. Products derived from this software may not be called "Apache", * nor may "Apache" appear in their name, without prior written * permission of the Apache Software Foundation-> * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation, and was * originally based on software copyright (c) 2001, International * Business Machines, Inc., http://www.ibm.com . For more information * on the Apache Software Foundation, please see * <http://www.apache.org/>. */ #include "TypeInfo.hpp" #include <xercesc/util/PlatformUtils.hpp> #include <xercesc/util/XMLException.hpp> #include <xercesc/util/XMLString.hpp> #include <xercesc/parsers/XercesDOMParser.hpp> #include <xercesc/dom/DOMException.hpp> #include <xercesc/dom/DOM.hpp> #include <xercesc/validators/schema/SchemaSymbols.hpp> #include <iostream.h> #define DOMTYPEINFOTEST(info, type, uri, line) \ tmp = XMLString::equals(info->getName(), type) && XMLString::equals(info->getNamespace(), uri);\ if(!tmp) { \ cerr << "DOMTypeInfo test failed at line, " << line << "\nExpected values : typename '" << XMLString::transcode(type) << "', uri '" << XMLString::transcode(uri) << "'\nActual values : typename '" << XMLString::transcode(info->getName()) << "', uri '" << XMLString::transcode(info->getNamespace()) << "'\n" << endl; \ passed = false; \ } bool tmp; // --------------------------------------------------------------------------- // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of char* data to XMLCh data. // --------------------------------------------------------------------------- class XStr { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- XStr(const char* const toTranscode) { // Call the private transcoding method fUnicodeForm = XMLString::transcode(toTranscode); } ~XStr() { delete [] fUnicodeForm; } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const XMLCh* unicodeForm() const { return fUnicodeForm; } private : // ----------------------------------------------------------------------- // Private data members // // fUnicodeForm // This is the Unicode XMLCh format of the string. // ----------------------------------------------------------------------- XMLCh* fUnicodeForm; }; #define X(str) XStr(str).unicodeForm() // This is a simple class that lets us do easy (though not terribly efficient) // trancoding of XMLCh data to local code page for display. // --------------------------------------------------------------------------- class StrX { public : // ----------------------------------------------------------------------- // Constructors and Destructor // ----------------------------------------------------------------------- StrX(const XMLCh* const toTranscode) { // Call the private transcoding method fLocalForm = XMLString::transcode(toTranscode); } ~StrX() { delete [] fLocalForm; } // ----------------------------------------------------------------------- // Getter methods // ----------------------------------------------------------------------- const char* localForm() const { return fLocalForm; } private : // ----------------------------------------------------------------------- // Private data members // // fLocalForm // This is the local code page form of the string. // ----------------------------------------------------------------------- char* fLocalForm; }; #define StrX(str) StrX(str).localForm() TypeInfo::TypeInfo() { try { XMLPlatformUtils::Initialize(); } catch(const XMLException &toCatch) { cerr << "Error during Xerces-c Initialization.\n" << " Exception message:" << StrX(toCatch.getMessage()) << endl; } parser = 0; } TypeInfo::~TypeInfo() { XMLPlatformUtils::Terminate(); } bool TypeInfo::testInBuiltTypesOnAttributes(bool DTDPresent) { bool passed = true; DOMElement *testEle = findElement(X("attrTest")); DOMTYPEINFOTEST(testEle->getTypeInfo(), X("attrTestType"), X(""), __LINE__); DOMAttr *testAttr; testAttr = testEle->getAttributeNodeNS(0, X("string")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("boolean")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_BOOLEAN, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("decimal")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_DECIMAL, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("float")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_FLOAT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("double")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_DOUBLE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("duration")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_DURATION, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("dateTime")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_DATETIME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("time")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_TIME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("date")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_DATE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("gYearMonth")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_YEARMONTH, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("gYear")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_YEAR, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("gMonthDay")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_MONTHDAY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("gDay")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_DAY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("gMonth")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_MONTH, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("hexBinary")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_HEXBINARY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("base64Binary")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_BASE64BINARY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("anyURI")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_ANYURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("QName")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_QNAME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("normalizedString")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_NORMALIZEDSTRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("token")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_TOKEN, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("language")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_LANGUAGE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("NMTOKEN")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), XMLUni::fgNmTokenString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("NMTOKENS")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), XMLUni::fgNmTokensString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("Name")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_NAME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("NCName")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_NCNAME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("ID")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), XMLUni::fgIDString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("IDREF")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), XMLUni::fgIDRefString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("IDREFS")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), XMLUni::fgIDRefsString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); if(DTDPresent) { testAttr = testEle->getAttributeNodeNS(0, X("ENTITY")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), XMLUni::fgEntityString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("ENTITIES")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), XMLUni::fgEntitiesString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); } testAttr = testEle->getAttributeNodeNS(0, X("integer")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_INTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("nonPositiveInteger")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_NONPOSITIVEINTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("negativeInteger")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_NEGATIVEINTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("long")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_LONG, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("int")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_INT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("short")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_SHORT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("byte")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_BYTE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("nonNegativeInteger")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_NONNEGATIVEINTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("unsignedLong")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_ULONG, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("unsignedInt")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_UINT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("unsignedShort")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_USHORT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("unsignedByte")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_UBYTE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("positiveInteger")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_POSITIVEINTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); //couple of defaulted ones testAttr = testEle->getAttributeNodeNS(0, X("defaultString")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(0, X("defaultInt")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_INTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); //ns attr testAttr = testEle->getAttributeNodeNS(X("http://www.w3.org/2000/xmlns/"), X("prefix")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X(""), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X("http://www.w3.org/2001/XMLSchema-instance"), X("noNamespaceSchemaLocation")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X(""), X(""), __LINE__); return passed; } bool TypeInfo::testInBuiltTypesOnElements() { bool passed = true; DOMNode *docEle = doc->getDocumentElement(); //the eleTest element. DOMElement *testEle = findElement(X("eleTest")); testEle = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_BOOLEAN, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_DECIMAL, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_FLOAT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_DOUBLE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_DURATION, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_DATETIME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_TIME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_DATE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_YEARMONTH, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_YEAR, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_MONTHDAY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_DAY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_MONTH, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_HEXBINARY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_BASE64BINARY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_ANYURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_QNAME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_NORMALIZEDSTRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_TOKEN, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_LANGUAGE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), XMLUni::fgNmTokenString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), XMLUni::fgNmTokensString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_NAME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_NCNAME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_INTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_NONPOSITIVEINTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_NEGATIVEINTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_LONG, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_INT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_SHORT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_BYTE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_NONNEGATIVEINTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_ULONG, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_UINT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_USHORT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_UBYTE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_POSITIVEINTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); return passed; } bool TypeInfo::testSimpleDerived() { bool passed = true; DOMNode *docEle = doc->getDocumentElement(); //element simpleDerTest DOMElement *testEle = (DOMElement *)docEle->getFirstChild()->getNextSibling()->getNextSibling() ->getNextSibling()->getNextSibling()->getNextSibling(); DOMAttr *testAtt = testEle->getAttributeNodeNS(0, X("decimalDerived")); DOMTYPEINFOTEST(testAtt->getTypeInfo(), X("decimalDerivedType"), X(""), __LINE__); testAtt = testEle->getAttributeNodeNS(0, X("stringDerived")); DOMTYPEINFOTEST(testAtt->getTypeInfo(), X("stringDerivedType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), X("decimalDerivedType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), X("stringDerivedType"), X(""), __LINE__); return passed; } bool TypeInfo::testComplexTypes() { bool passed = true; DOMNode *docEle = doc->getDocumentElement(); //element complexTest DOMElement *testEle = findElement(X("complexTest")); DOMTYPEINFOTEST(testEle->getTypeInfo(), X("complexTestType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), X("complexDerTestType"), X(""), __LINE__); return passed; } bool TypeInfo::testUnions() { bool passed = true; DOMNode *docEle = doc->getDocumentElement(); DOMAttr *testAttr; //element unionTest DOMElement *testEle = findElement(X("unionTest")); testEle = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), X("decimalDerivedType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), X("stringDerivedType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), X("decimal"), SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), X("string"), SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); testAttr = testEle->getAttributeNodeNS(0, X("testAttr")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X("decimalDerivedType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); testAttr = testEle->getAttributeNodeNS(0, X("testAttr")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X("stringDerivedType"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); testAttr = testEle->getAttributeNodeNS(0, X("testAttr")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X("decimal"), SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); testAttr = testEle->getAttributeNodeNS(0, X("testAttr")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X("string"), SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); return passed; } bool TypeInfo::testAnonymous() { bool passed = true; DOMNode *docEle = doc->getDocumentElement(); DOMAttr *testAttr; //element anonymousTest DOMElement *testEle = findElement(X("anonymousTest")); DOMTYPEINFOTEST(testEle->getTypeInfo(), X(""), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("partNum")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X(""), X(""), __LINE__); testEle = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), X(""), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), X(""), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), X(""), X(""), __LINE__); return passed; } bool TypeInfo::testXsiTypes() { bool passed = true; DOMNode *docEle = doc->getDocumentElement(); //element xsiTypeTest DOMElement *testEle = findElement(X("xsiTypeTest")); testEle = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), X("base"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), X("level1"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), X("level2"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), X("baseComplex"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), X("level1Complex"), X(""), __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), X("level2Complex"), X(""), __LINE__); return passed; } bool TypeInfo::testAnys() { bool passed = true; DOMNode *docEle = doc->getDocumentElement(); DOMAttr *testAttr; //element anyTestPartial DOMElement *testEle = findElement(X("anyTestPartial")); DOMElement *back = testEle; testAttr = testEle->getAttributeNodeNS(X("http://www.w3.org/1999/xhtml"), X("attr2")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_ANYSIMPLETYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); //element anyTest testEle = (DOMElement *)back->getNextSibling()->getNextSibling(); back = testEle; testAttr = testEle->getAttributeNodeNS(X("http://www.secondSchema"), X("attr1")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(X("http://www.secondSchema"), X("attr2")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_INTEGER, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); //anyTestAttr1 testEle = (DOMElement *)back->getNextSibling()->getNextSibling(); back = testEle; testAttr = testEle->getAttributeNodeNS(X("http://www.secondSchema"), X("attr3")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_ANYSIMPLETYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); //anyTestAttr2 testEle = (DOMElement *)back->getNextSibling()->getNextSibling(); back = testEle; testAttr = testEle->getAttributeNodeNS(X("http://www.secondSchema"), X("attr3")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_ANYSIMPLETYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); //anyTestMissing testEle = (DOMElement *)back->getNextSibling()->getNextSibling(); back = testEle; DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); return passed; } bool TypeInfo::testInvaild() { bool passed = true; DOMNode *docEle = doc->getDocumentElement(); DOMAttr *testAttr; DOMTYPEINFOTEST(((DOMElement *)docEle)->getTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); //element invalidTest DOMElement *testEle = findElement(X("invalidTest")); testAttr = testEle->getAttributeNodeNS(X(""), X("simple")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_ANYSIMPLETYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("invalid")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_ANYSIMPLETYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_ANYSIMPLETYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_ANYSIMPLETYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_ANYSIMPLETYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); //an undeclared element does not have anon value. Test this here testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); return passed; } bool TypeInfo::compareDOMTypeInfo(const DOMTypeInfo *info, const XMLCh* type, const XMLCh* uri) { return XMLString::equals(info->getName(), type) && XMLString::equals(info->getNamespace(), uri); } bool TypeInfo::testDTD() { bool passed = true; DOMElement *testEle = doc->getDocumentElement(); DOMAttr *testAttr; DOMTYPEINFOTEST(testEle->getTypeInfo(), X(""), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("cdata")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X("CDATA"), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("enum")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X("ENUMERATION"), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("id")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X("ID"), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("idRef")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X("IDREF"), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("idRefs")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X("IDREFS"), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("nmToken")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X("NMTOKEN"), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("nmTokenDefault")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X("NMTOKEN"), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("nmTokenDefault2")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X("NMTOKEN"), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("nmTokens")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X("NMTOKENS"), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("entity")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X("ENTITY"), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("entities")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X("ENTITIES"), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("notation")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X("NOTATION"), X(""), __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("noDecl")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X("CDATA"), X(""), __LINE__); testAttr = testEle->getAttributeNode(X("xmlns:foo")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), X("CDATA"), X(""), __LINE__); return passed; } bool TypeInfo::combinedTest() { bool passed = true; DOMNode *docEle = doc->getDocumentElement(); DOMAttr *testAttr; DOMElement *testEle = doc->getDocumentElement(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("attBoth")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("attSchema")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testAttr = testEle->getAttributeNodeNS(X(""), X("attDTD")); DOMTYPEINFOTEST(testAttr->getTypeInfo(), SchemaSymbols::fgDT_ANYSIMPLETYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getFirstChild()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); testEle = (DOMElement *)testEle->getNextSibling()->getNextSibling(); DOMTYPEINFOTEST(testEle->getTypeInfo(), SchemaSymbols::fgATTVAL_ANYTYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA, __LINE__); return passed; } DOMElement* TypeInfo::findElement(const XMLCh *name) const { DOMNode *toTest = doc->getDocumentElement()->getFirstChild(); while(!XMLString::equals(toTest->getNodeName(), name)) { toTest = toTest->getNextSibling(); } return (DOMElement *)toTest; } int main(int argc, char **argv) { bool passed = true; TypeInfo ti; try { //first the combined DTD/Schema scanner ti.parser = new XercesDOMParser; ti.parser->setValidationScheme(XercesDOMParser::Val_Auto); ti.parser->setDoNamespaces(true); ti.parser->setDoSchema(true); ti.parser->parse("data/TypeInfo.xml"); ti.doc = ti.parser->getDocument(); } catch (...) { cerr << "parsing data/TypeInfo.xml failed at line" << __LINE__ << endl; delete ti.parser; return false; } // test only if we got a doc if (ti.doc) { passed &= ti.testInBuiltTypesOnAttributes(true); passed &= ti.testInBuiltTypesOnElements(); passed &= ti.testSimpleDerived(); passed &= ti.testComplexTypes(); passed &= ti.testUnions(); passed &= ti.testAnonymous(); passed &= ti.testXsiTypes(); passed &= ti.testAnys(); passed &= ti.testInvaild(); } else cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << endl; delete ti.parser; //lets do the same for the just schema scanner try { ti.parser = new XercesDOMParser; ti.parser->setValidationScheme(XercesDOMParser::Val_Auto); ti.parser->setDoNamespaces(true); ti.parser->setDoSchema(true); ti.parser->useScanner(X("SGXMLScanner")); ti.parser->parse("data/TypeInfoNoDTD.xml"); ti.doc = ti.parser->getDocument(); } catch (...) { cerr << "parsing data/TypeInfo.xml failed at line" << __LINE__ << endl; delete ti.parser; return false; } // test only if we got a doc if (ti.doc) { passed &= ti.testInBuiltTypesOnAttributes(false); passed &= ti.testInBuiltTypesOnElements(); passed &= ti.testSimpleDerived(); passed &= ti.testComplexTypes(); passed &= ti.testUnions(); passed &= ti.testAnonymous(); passed &= ti.testXsiTypes(); passed &= ti.testAnys(); passed &= ti.testInvaild(); } else cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << endl; delete ti.parser; //now default for DTD try { ti.parser = new XercesDOMParser; ti.parser->setValidationScheme(XercesDOMParser::Val_Auto); ti.parser->parse("data/TypeInfoJustDTD.xml"); ti.doc = ti.parser->getDocument(); } catch (...) { cerr << "parsing data/TypeInfo.xml failed at line" << __LINE__ << endl; delete ti.parser; return false; } // test only if we got a doc if (ti.doc) { passed &= ti.testDTD(); } else cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << endl; delete ti.parser; //and specific scanner try { ti.parser = new XercesDOMParser; ti.parser->setValidationScheme(XercesDOMParser::Val_Auto); ti.parser->useScanner(X("DGXMLScanner")); ti.parser->parse("data/TypeInfoJustDTD.xml"); ti.doc = ti.parser->getDocument(); } catch (...) { cerr << "parsing data/TypeInfo.xml failed at line" << __LINE__ << endl; delete ti.parser; return false; } // test only if we got a doc if (ti.doc) { passed &= ti.testDTD(); } else cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << endl; delete ti.parser; try { ti.parser = new XercesDOMParser; ti.parser->setValidationScheme(XercesDOMParser::Val_Auto); ti.parser->setDoNamespaces(true); ti.parser->setDoSchema(true); ti.parser->parse("data/combined.xml"); ti.doc = ti.parser->getDocument(); } catch (...) { cerr << "parsing data/TypeInfo.xml failed at line" << __LINE__ << endl; delete ti.parser; return false; } // test only if we got a doc if (ti.doc) { passed &= ti.combinedTest(); } else cout << "DOMTypeInfo test at line " << __LINE__ << "was not carried out" << endl; delete ti.parser; if (!passed) { cerr << "test failed" << endl; return 4; } cerr << "Test Run Successfully" << endl; return 0; } 1.1 xml-xerces/c/tests/DOM/TypeInfo/TypeInfo.hpp Index: TypeInfo.hpp =================================================================== /* * The Apache Software License, Version 1.1 * * Copyright (c) 2001 The Apache Software Foundation-> All rights * reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution-> * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Xerces" and "Apache Software Foundation" must * not be used to endorse or promote products derived from this * software without prior written permission-> For written * permission, please contact apache\@apache.org. * * 5. Products derived from this software may not be called "Apache", * nor may "Apache" appear in their name, without prior written * permission of the Apache Software Foundation-> * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation, and was * originally based on software copyright (c) 2001, International * Business Machines, Inc., http://www.ibm.com . For more information * on the Apache Software Foundation, please see * <http://www.apache.org/>. */ // define null for compatibility with original Java source code. #define null 0 #include <xercesc/dom/DOM.hpp> XERCES_CPP_NAMESPACE_USE XERCES_CPP_NAMESPACE_BEGIN class XercesDOMParser; XERCES_CPP_NAMESPACE_END class TypeInfo { public: TypeInfo(); ~TypeInfo(); bool testInBuiltTypesOnElements(); bool testInBuiltTypesOnAttributes(bool DTDPresent); bool testSimpleDerived(); bool testComplexTypes(); bool testUnions(); bool testAnonymous(); bool testXsiTypes(); bool testInvaild(); bool testAnys(); bool testDTD(); bool combinedTest(); bool compareDOMTypeInfo(const DOMTypeInfo *info, const XMLCh* type, const XMLCh* uri); XercesDOMParser *parser; DOMDocument *doc; private: DOMElement* findElement(const XMLCh *name) const ; }; 1.1 xml-xerces/c/tests/DOM/TypeInfo/data/SecondSchema.xsd Index: SecondSchema.xsd =================================================================== <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' elementFormDefault="unqualified" targetNamespace="http://www.secondSchema" > <xs:element name="realTag1" type="xs:string" /> <xs:element name="realTag2" type="xs:string" /> <xs:element name="realTag3" type="xs:string" /> <xs:attribute name="attr1" type="xs:string" /> <xs:attribute name="attr2" type="xs:integer" /> </xs:schema> 1.1 xml-xerces/c/tests/DOM/TypeInfo/data/TypeInfo.dtd Index: TypeInfo.dtd =================================================================== <!NOTATION png SYSTEM 'http://xml.apache.org' > <!ENTITY APACHE SYSTEM 'xml.apache.org' NDATA png> <!ELEMENT attributeTest EMPTY > <!ATTLIST attributeTest xmlns:foo CDATA #REQUIRED cdata CDATA #REQUIRED enum (a | b) #REQUIRED id ID #REQUIRED idRef IDREF #REQUIRED idRefs IDREFS #REQUIRED nmToken NMTOKEN #REQUIRED nmTokenDefault NMTOKEN "lala" nmTokenDefault2 NMTOKEN "lala2" nmTokens NMTOKENS #REQUIRED entity ENTITY #REQUIRED entities ENTITIES #REQUIRED notation NOTATION (png) #REQUIRED > 1.1 xml-xerces/c/tests/DOM/TypeInfo/data/TypeInfo.xml Index: TypeInfo.xml =================================================================== <!DOCTYPE root SYSTEM "TypeInfo.dtd" > <root xsi:noNamespaceSchemaLocation="TypeInfo.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:ss="http://www.secondSchema" > <attrTest string="string" boolean="true" decimal="2.0" float="2.1" double="2.1" duration="P1Y2M3DT10H30M" dateTime="2000-10-30T11:12:00" time="11:12:00" date="2000-10-30" gYearMonth="1999-01" gYear="1999" gMonthDay="--01-08" gDay="---21" gMonth="--12--" hexBinary="0FB7" base64Binary="abcd" anyURI="http://www.example.com/" QName="xsla" normalizedString="example" token="example" language="en" NMTOKEN="example" NMTOKENS="example bar" Name="example" NCName="example" integer="1" nonPositiveInteger="-1" negativeInteger="-1" long="1" int="1" short="1" byte="1" nonNegativeInteger="1" unsignedLong="1" unsignedInt="1" unsignedShort="1" unsignedByte="1" positiveInteger="1" ID="abc" IDREF="abc" IDREFS="abc" ENTITY="APACHE" ENTITIES="APACHE" defaultString="test" xmlns:prefix="http://lala" xsi:noNamespaceSchemaLocation="hello" /> <eleTest > <level1string >string</level1string> <level1boolean >true</level1boolean> <level1decimal >2.0</level1decimal> <level1float >2.1</level1float> <level1double >2.1</level1double> <level1duration >P1Y2M3DT10H30M</level1duration> <level1dateTime >2000-10-30T11:12:00</level1dateTime> <level1time >11:12:00</level1time> <level1date >2000-10-30</level1date> <level1gYearMonth >1999-01</level1gYearMonth> <level1gYear >1999</level1gYear> <level1gMonthDay >--01-08</level1gMonthDay> <level1gDay >---21</level1gDay> <level1gMonth >--12--</level1gMonth> <level1hexBinary >0FB7</level1hexBinary> <level1base64Binary >abcd</level1base64Binary> <level1anyURI >http://www.example.com/</level1anyURI> <level1QName >xsla</level1QName> <level1normalizedString >example</level1normalizedString> <level1token >example</level1token> <level1language >en</level1language> <level1NMTOKEN >example</level1NMTOKEN> <level1NMTOKENS >example bar</level1NMTOKENS> <level1Name >example</level1Name> <level1NCName >example</level1NCName> <level1integer >1</level1integer> <level1nonPositiveInteger >-1</level1nonPositiveInteger> <level1negativeInteger >-1</level1negativeInteger> <level1long >1</level1long> <level1int >1</level1int> <level1short >1</level1short> <level1byte >1</level1byte> <level1nonNegativeInteger >1</level1nonNegativeInteger> <level1unsignedLong >1</level1unsignedLong> <level1unsignedInt >1</level1unsignedInt> <level1unsignedShort >1</level1unsignedShort> <level1unsignedByte >1</level1unsignedByte> <level1positiveInteger >1</level1positiveInteger> </eleTest> <simpleDerTest decimalDerived="50" stringDerived="hello" > <decimalDerived >20</decimalDerived> <stringDerived >hello</stringDerived> </simpleDerTest> <complexTest a="abcd" b="hello" c="50" > <a >abcd</a> <b >hello</b> <c >50</c> </complexTest> <complexDerTest a="abcd" b="hello" c="50" > <a >abcd</a> <b >hello</b> <c >50</c> <d >abcdefg</d> </complexDerTest> <unionTest > <testEle >50</testEle> <testEle >hello</testEle> <testEle >200</testEle> <testEle >abcdefg</testEle> <testEle2 testAttr="50" /> <testEle2 testAttr="hello" /> <testEle2 testAttr="200" /> <testEle2 testAttr="abcdefg" /> </unionTest> <anonymousTest partNum="50"> <quantity>50</quantity> <size>25</size> <anonElement>11</anonElement> </anonymousTest> <xsiTypeTest> <number>99</number> <number xsi:type="level1" >74</number> <number xsi:type="level2" >49</number> <complexXsi > <a >a</a> </complexXsi> <complexXsi xsi:type="level1Complex" > <a >a</a> <b >b</b> </complexXsi> <complexXsi xsi:type="level2Complex" > <a >a</a> <b >b</b> <c >c</c> </complexXsi> </xsiTypeTest> <anyTestPartial xhtml:attr2="some value" > <xhtml:fakeTag1 /> <xhtml:fakeTag2 /> <ss:realTag1 >la</ss:realTag1> </anyTestPartial> <anyTest ss:attr1="string" ss:attr2="2" > <ss:realTag2 >la</ss:realTag2> <ss:realTag3 >la</ss:realTag3> <ss:notRealTag >la</ss:notRealTag> </anyTest> <anyTestAttr1 ss:attr3="2" /> <anyTestAttr2 ss:attr3="2" /> <anyTestMissing /> <invalidTest simple="abcd" invalid="asdas" > <simple >abcd</simple> <complex > <a >asa</a> <invalid /> </complex> <number xsi:type="stringDerivedType" >74</number> <complexXsi xsi:type="simpleDerTestType" > <a >a</a> <b >b</b> </complexXsi> <unionTest >hello1</unionTest> <empty ><a /></empty> <invalidAttrTest attr="lala" /> <missingAttrTest /> <prohibitedAttrTest attr="lala" /> </invalidTest> </root> 1.1 xml-xerces/c/tests/DOM/TypeInfo/data/TypeInfo.xsd Index: TypeInfo.xsd =================================================================== <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' elementFormDefault="unqualified" xmlns:foo="http://anothernamespace.com" > <xs:import namespace="http://www.secondSchema" schemaLocation="SecondSchema.xsd" /> <xs:element name="root" type="rootType" /> <xs:complexType name="rootType" > <xs:sequence> <xs:element name="attrTest" type="attrTestType" /> <xs:element name="eleTest" type="eleTestType" /> <xs:element name="simpleDerTest" type="simpleDerTestType" /> <xs:element name="complexTest" type="complexTestType" /> <xs:element name="complexDerTest" type="complexDerTestType" /> <xs:element name="unionTest" type="unionTest" /> <xs:element name="anonymousTest" > <xs:complexType> <xs:sequence> <xs:element name="quantity"> <xs:simpleType> <xs:restriction base="xs:positiveInteger"> <xs:maxExclusive value="100"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name='size'> <xs:simpleType> <xs:union> <xs:simpleType> <xs:restriction base='xs:integer'/> </xs:simpleType> <xs:simpleType> <xs:restriction base='xs:string'/> </xs:simpleType> </xs:union> </xs:simpleType> </xs:element> <xs:element ref="anonElement" /> </xs:sequence> <xs:attribute name="partNum" > <xs:simpleType> <xs:restriction base="xs:positiveInteger"> <xs:maxExclusive value="100"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="xsiTypeTest" type="xsiTypeTestType" /> <xs:element name="anyTestPartial" type="anyTestPartialType" /> <xs:element name="anyTest" type="anyTestType" /> <xs:element name="anyTestAttr1" type="anyTestAttr1Type" /> <xs:element name="anyTestAttr2" type="anyTestAttr2Type" /> <xs:element name="anyTestMissing" type="anyTestType" /> <xs:element name="invalidTest" type="invalidTestType" /> </xs:sequence> </xs:complexType> <xs:complexType name="anyTestPartialType" > <xs:sequence > <xs:any namespace="http://www.w3.org/1999/xhtml" processContents="skip" /> <xs:any namespace="http://www.w3.org/1999/xhtml" processContents="lax" /> <xs:any namespace="http://www.secondSchema" processContents="lax" /> </xs:sequence> <xs:anyAttribute namespace="http://www.w3.org/1999/xhtml" processContents="skip" /> </xs:complexType> <xs:complexType name="anyTestType" > <xs:sequence > <xs:any namespace="http://www.secondSchema" processContents="lax"/> <xs:any namespace="http://www.secondSchema" processContents="strict"/> <xs:any namespace="http://www.secondSchema" processContents="strict"/> </xs:sequence> <xs:anyAttribute namespace="http://www.secondSchema" processContents="lax" /> </xs:complexType> <xs:complexType name="anyTestAttr1Type" > <xs:anyAttribute namespace="http://www.secondSchema" processContents="strict" /> </xs:complexType> <xs:complexType name="anyTestAttr2Type" > <xs:anyAttribute namespace="http://www.secondSchema" processContents="lax" /> </xs:complexType> <xs:complexType name="invalidTestType" > <xs:sequence > <xs:element name="simple" type="stringDerivedType" /> <xs:element name="complex" type="baseComplex" /> <xs:element name="number" type="base" /> <xs:element name="complexXsi" type="baseComplex" /> <xs:element name="unionTest" type="uType" /> <xs:element name="invalidAttrTest" type="attrOnlyType" /> <xs:element name="missingAttrTest" type="attrOnlyType" /> <xs:element name="prohibitedAttrTest" type="prohibitedAttrType" /> </xs:sequence> <xs:attribute name="simple" type="stringDerivedType" /> </xs:complexType> <xs:complexType name="prohibitedAttrType" > <xs:attribute name="attr" type="stringDerivedType" use="prohibited" /> </xs:complexType> <xs:complexType name="attrOnlyType" > <xs:attribute name="attr" type="stringDerivedType" use="required" /> </xs:complexType> <xs:simpleType name="uType" > <xs:union memberTypes="stringDerivedType" /> </xs:simpleType> <xs:complexType name="xsiTypeTestType" > <xs:sequence> <xs:element name="number" type="base" maxOccurs="3"/> <xs:element name="complexXsi" type="baseComplex" maxOccurs="3"/> </xs:sequence> </xs:complexType> <xs:complexType name="baseComplex" > <xs:sequence> <xs:element name="a" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:complexType name="level1Complex" > <xs:complexContent > <xs:extension base="baseComplex" > <xs:sequence> <xs:element name="b" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="level2Complex" > <xs:complexContent > <xs:extension base="level1Complex" > <xs:sequence> <xs:element name="c" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:simpleType name="base" > <xs:restriction base="xs:decimal" > <xs:maxExclusive value="100"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="level1" > <xs:restriction base="base" > <xs:maxExclusive value="75"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="level2" > <xs:restriction base="level1" > <xs:maxExclusive value="50"/> </xs:restriction> </xs:simpleType> <xs:element name="anonElement" > <xs:simpleType > <xs:restriction base="xs:decimal" > <xs:maxExclusive value="100"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:complexType name="eleTestType" > <xs:sequence > <xs:element name="level1string" type="xs:string" /> <xs:element name="level1boolean" type="xs:boolean" /> <xs:element name="level1decimal" type="xs:decimal" /> <xs:element name="level1float" type="xs:float" /> <xs:element name="level1double" type="xs:double" /> <xs:element name="level1duration" type="xs:duration" /> <xs:element name="level1dateTime" type="xs:dateTime" /> <xs:element name="level1time" type="xs:time" /> <xs:element name="level1date" type="xs:date" /> <xs:element name="level1gYearMonth" type="xs:gYearMonth" /> <xs:element name="level1gYear" type="xs:gYear" /> <xs:element name="level1gMonthDay" type="xs:gMonthDay" /> <xs:element name="level1gDay" type="xs:gDay" /> <xs:element name="level1gMonth" type="xs:gMonth" /> <xs:element name="level1hexBinary" type="xs:hexBinary" /> <xs:element name="level1base64Binary" type="xs:base64Binary" /> <xs:element name="level1anyURI" type="xs:anyURI" /> <xs:element name="level1QName" type="xs:QName" /> <xs:element name="level1normalizedString" type="xs:normalizedString" /> <xs:element name="level1token" type="xs:token" /> <xs:element name="level1language" type="xs:language" /> <xs:element name="level1NMTOKEN" type="xs:NMTOKEN" /> <xs:element name="level1NMTOKENS" type="xs:NMTOKENS" /> <xs:element name="level1Name" type="xs:Name" /> <xs:element name="level1NCName" type="xs:NCName" /> <xs:element name="level1integer" type="xs:integer" /> <xs:element name="level1nonPositiveInteger" type="xs:nonPositiveInteger" /> <xs:element name="level1negativeInteger" type="xs:negativeInteger" /> <xs:element name="level1long" type="xs:long" /> <xs:element name="level1int" type="xs:int" /> <xs:element name="level1short" type="xs:short" /> <xs:element name="level1byte" type="xs:byte" /> <xs:element name="level1nonNegativeInteger" type="xs:nonNegativeInteger" /> <xs:element name="level1unsignedLong" type="xs:unsignedLong" /> <xs:element name="level1unsignedInt" type="xs:unsignedInt" /> <xs:element name="level1unsignedShort" type="xs:unsignedShort" /> <xs:element name="level1unsignedByte" type="xs:unsignedByte" /> <xs:element name="level1positiveInteger" type="xs:positiveInteger" /> </xs:sequence> </xs:complexType> <xs:complexType name="attrTestType" > <xs:attribute name="string" type="xs:string" /> <xs:attribute name="boolean" type="xs:boolean" /> <xs:attribute name="decimal" type="xs:decimal" /> <xs:attribute name="float" type="xs:float" /> <xs:attribute name="double" type="xs:double" /> <xs:attribute name="duration" type="xs:duration" /> <xs:attribute name="dateTime" type="xs:dateTime" /> <xs:attribute name="time" type="xs:time" /> <xs:attribute name="date" type="xs:date" /> <xs:attribute name="gYearMonth" type="xs:gYearMonth" /> <xs:attribute name="gYear" type="xs:gYear" /> <xs:attribute name="gMonthDay" type="xs:gMonthDay" /> <xs:attribute name="gDay" type="xs:gDay" /> <xs:attribute name="gMonth" type="xs:gMonth" /> <xs:attribute name="hexBinary" type="xs:hexBinary" /> <xs:attribute name="base64Binary" type="xs:base64Binary" /> <xs:attribute name="anyURI" type="xs:anyURI" /> <xs:attribute name="QName" type="xs:QName" /> <xs:attribute name="normalizedString" type="xs:normalizedString" /> <xs:attribute name="token" type="xs:token" /> <xs:attribute name="language" type="xs:language" /> <xs:attribute name="NMTOKEN" type="xs:NMTOKEN" /> <xs:attribute name="NMTOKENS" type="xs:NMTOKENS" /> <xs:attribute name="Name" type="xs:Name" /> <xs:attribute name="NCName" type="xs:NCName" /> <xs:attribute name="ID" type="xs:ID" /> <xs:attribute name="IDREF" type="xs:IDREF" /> <xs:attribute name="IDREFS" type="xs:IDREFS" /> <xs:attribute name="ENTITY" type="xs:ENTITY" /> <xs:attribute name="ENTITIES" type="xs:ENTITIES" /> <xs:attribute name="integer" type="xs:integer" /> <xs:attribute name="nonPositiveInteger" type="xs:nonPositiveInteger" /> <xs:attribute name="negativeInteger" type="xs:negativeInteger" /> <xs:attribute name="long" type="xs:long" /> <xs:attribute name="int" type="xs:int" /> <xs:attribute name="short" type="xs:short" /> <xs:attribute name="byte" type="xs:byte" /> <xs:attribute name="nonNegativeInteger" type="xs:nonNegativeInteger" /> <xs:attribute name="unsignedLong" type="xs:unsignedLong" /> <xs:attribute name="unsignedInt" type="xs:unsignedInt" /> <xs:attribute name="unsignedShort" type="xs:unsignedShort" /> <xs:attribute name="unsignedByte" type="xs:unsignedByte" /> <xs:attribute name="positiveInteger" type="xs:positiveInteger" /> <xs:attribute name="defaultString" type="xs:string" default="hello" /> <xs:attribute name="defaultInt" type="xs:integer" default="12" /> </xs:complexType> <xs:complexType name="simpleDerTestType" > <xs:sequence> <xs:element name="decimalDerived" type="decimalDerivedType" /> <xs:element name="stringDerived" type="stringDerivedType" /> </xs:sequence> <xs:attribute name="decimalDerived" type="decimalDerivedType" /> <xs:attribute name="stringDerived" type="stringDerivedType" /> </xs:complexType> <xs:simpleType name="stringDerivedType" > <xs:restriction base="xs:string" > <xs:pattern value="hello"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="decimalDerivedType" > <xs:restriction base="xs:decimal" > <xs:maxExclusive value="100"/> </xs:restriction> </xs:simpleType> <xs:complexType name="complexTestType" > <xs:sequence> <xs:element name="a" type="xs:string"/> <xs:element name="b" type="stringDerivedType"/> <xs:element name="c" type="decimalDerivedType"/> </xs:sequence> <xs:attribute name="a" type="xs:string" /> <xs:attribute name="b" type="stringDerivedType" /> <xs:attribute name="c" type="decimalDerivedType" /> </xs:complexType> <xs:complexType name="complexDerTestType" > <xs:complexContent > <xs:extension base="complexTestType" > <xs:sequence> <xs:element name="d" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:simpleType name="unionTestType" > <xs:union memberTypes="decimalDerivedType stringDerivedType xs:decimal xs:string" /> </xs:simpleType> <xs:complexType name="unionTest" > <xs:sequence > <xs:element name="testEle" maxOccurs="4" type="unionTestType" /> <xs:element name="testEle2" maxOccurs="4" > <xs:complexType > <xs:attribute name="testAttr" type="unionTestType" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="unionTest2" > <xs:sequence > <xs:element name="testEle" maxOccurs="4" > <xs:complexType > <xs:simpleContent > <xs:extension base="unionTestType" > <xs:attribute name="testAttr" type="unionTestType" /> </xs:extension > </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="testtype2" > <xs:sequence> <xs:element name="poo" type="xs:string"/> </xs:sequence> <xs:attribute name="a" type="xs:IDREF" /> <xs:attribute name="b" type="xs:ID" /> <xs:attribute name="c" type="xs:string" /> </xs:complexType> </xs:schema> 1.1 xml-xerces/c/tests/DOM/TypeInfo/data/TypeInfoJustDTD.xml Index: TypeInfoJustDTD.xml =================================================================== <!DOCTYPE attributeTest SYSTEM "TypeInfo.dtd" > <attributeTest xmlns:foo = "lala" cdata = "cdata" enum = "a" id = "someID" idRef = "someID" idRefs = "someID" nmToken = "abc" nmTokenDefault2 = "test" nmTokens = "abc" entity = "APACHE" entities = "APACHE" notation = "png" noDecl = "lalal" /> 1.1 xml-xerces/c/tests/DOM/TypeInfo/data/TypeInfoNoDTD.xml Index: TypeInfoNoDTD.xml =================================================================== <root xsi:noNamespaceSchemaLocation="TypeInfoNoDTD.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:ss="http://www.secondSchema" > <attrTest string="string" boolean="true" decimal="2.0" float="2.1" double="2.1" duration="P1Y2M3DT10H30M" dateTime="2000-10-30T11:12:00" time="11:12:00" date="2000-10-30" gYearMonth="1999-01" gYear="1999" gMonthDay="--01-08" gDay="---21" gMonth="--12--" hexBinary="0FB7" base64Binary="abcd" anyURI="http://www.example.com/" QName="xsla" normalizedString="example" token="example" language="en" NMTOKEN="example" NMTOKENS="example bar" Name="example" NCName="example" integer="1" nonPositiveInteger="-1" negativeInteger="-1" long="1" int="1" short="1" byte="1" nonNegativeInteger="1" unsignedLong="1" unsignedInt="1" unsignedShort="1" unsignedByte="1" positiveInteger="1" ID="abc" IDREF="abc" IDREFS="abc" defaultString="test" xmlns:prefix="http://lala" xsi:noNamespaceSchemaLocation="hello" /> <eleTest > <level1string >string</level1string> <level1boolean >true</level1boolean> <level1decimal >2.0</level1decimal> <level1float >2.1</level1float> <level1double >2.1</level1double> <level1duration >P1Y2M3DT10H30M</level1duration> <level1dateTime >2000-10-30T11:12:00</level1dateTime> <level1time >11:12:00</level1time> <level1date >2000-10-30</level1date> <level1gYearMonth >1999-01</level1gYearMonth> <level1gYear >1999</level1gYear> <level1gMonthDay >--01-08</level1gMonthDay> <level1gDay >---21</level1gDay> <level1gMonth >--12--</level1gMonth> <level1hexBinary >0FB7</level1hexBinary> <level1base64Binary >abcd</level1base64Binary> <level1anyURI >http://www.example.com/</level1anyURI> <level1QName >xsla</level1QName> <level1normalizedString >example</level1normalizedString> <level1token >example</level1token> <level1language >en</level1language> <level1NMTOKEN >example</level1NMTOKEN> <level1NMTOKENS >example bar</level1NMTOKENS> <level1Name >example</level1Name> <level1NCName >example</level1NCName> <level1integer >1</level1integer> <level1nonPositiveInteger >-1</level1nonPositiveInteger> <level1negativeInteger >-1</level1negativeInteger> <level1long >1</level1long> <level1int >1</level1int> <level1short >1</level1short> <level1byte >1</level1byte> <level1nonNegativeInteger >1</level1nonNegativeInteger> <level1unsignedLong >1</level1unsignedLong> <level1unsignedInt >1</level1unsignedInt> <level1unsignedShort >1</level1unsignedShort> <level1unsignedByte >1</level1unsignedByte> <level1positiveInteger >1</level1positiveInteger> </eleTest> <simpleDerTest decimalDerived="50" stringDerived="hello" > <decimalDerived >20</decimalDerived> <stringDerived >hello</stringDerived> </simpleDerTest> <complexTest a="abcd" b="hello" c="50" > <a >abcd</a> <b >hello</b> <c >50</c> </complexTest> <complexDerTest a="abcd" b="hello" c="50" > <a >abcd</a> <b >hello</b> <c >50</c> <d >abcdefg</d> </complexDerTest> <unionTest > <testEle >50</testEle> <testEle >hello</testEle> <testEle >200</testEle> <testEle >abcdefg</testEle> <testEle2 testAttr="50" /> <testEle2 testAttr="hello" /> <testEle2 testAttr="200" /> <testEle2 testAttr="abcdefg" /> </unionTest> <anonymousTest partNum="50"> <quantity>50</quantity> <size>25</size> <anonElement>11</anonElement> </anonymousTest> <xsiTypeTest> <number>99</number> <number xsi:type="level1" >74</number> <number xsi:type="level2" >49</number> <complexXsi > <a >a</a> </complexXsi> <complexXsi xsi:type="level1Complex" > <a >a</a> <b >b</b> </complexXsi> <complexXsi xsi:type="level2Complex" > <a >a</a> <b >b</b> <c >c</c> </complexXsi> </xsiTypeTest> <anyTestPartial xhtml:attr2="some value" > <xhtml:fakeTag1 /> <xhtml:fakeTag2 /> <ss:realTag1 >la</ss:realTag1> </anyTestPartial> <anyTest ss:attr1="string" ss:attr2="2" > <ss:realTag2 >la</ss:realTag2> <ss:realTag3 >la</ss:realTag3> <ss:notRealTag >la</ss:notRealTag> </anyTest> <anyTestAttr1 ss:attr3="2" /> <anyTestAttr2 ss:attr3="2" /> <anyTestMissing /> <invalidTest simple="abcd" invalid="asdas" > <simple >abcd</simple> <complex > <a >asa</a> <invalid /> </complex> <number xsi:type="stringDerivedType" >74</number> <complexXsi xsi:type="simpleDerTestType" > <a >a</a> <b >b</b> </complexXsi> <unionTest >hello1</unionTest> <empty ><a /></empty> <invalidAttrTest attr="lala" /> <missingAttrTest /> <prohibitedAttrTest attr="lala" /> </invalidTest> </root> 1.1 xml-xerces/c/tests/DOM/TypeInfo/data/TypeInfoNoDTD.xsd Index: TypeInfoNoDTD.xsd =================================================================== <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' elementFormDefault="unqualified" xmlns:foo="http://anothernamespace.com" > <xs:import namespace="http://www.secondSchema" schemaLocation="SecondSchema.xsd" /> <xs:element name="root" type="rootType" /> <xs:complexType name="rootType" > <xs:sequence> <xs:element name="attrTest" type="attrTestType" /> <xs:element name="eleTest" type="eleTestType" /> <xs:element name="simpleDerTest" type="simpleDerTestType" /> <xs:element name="complexTest" type="complexTestType" /> <xs:element name="complexDerTest" type="complexDerTestType" /> <xs:element name="unionTest" type="unionTest" /> <xs:element name="anonymousTest" > <xs:complexType> <xs:sequence> <xs:element name="quantity"> <xs:simpleType> <xs:restriction base="xs:positiveInteger"> <xs:maxExclusive value="100"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:element name='size'> <xs:simpleType> <xs:union> <xs:simpleType> <xs:restriction base='xs:integer'/> </xs:simpleType> <xs:simpleType> <xs:restriction base='xs:string'/> </xs:simpleType> </xs:union> </xs:simpleType> </xs:element> <xs:element ref="anonElement" /> </xs:sequence> <xs:attribute name="partNum" > <xs:simpleType> <xs:restriction base="xs:positiveInteger"> <xs:maxExclusive value="100"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="xsiTypeTest" type="xsiTypeTestType" /> <xs:element name="anyTestPartial" type="anyTestPartialType" /> <xs:element name="anyTest" type="anyTestType" /> <xs:element name="anyTestAttr1" type="anyTestAttr1Type" /> <xs:element name="anyTestAttr2" type="anyTestAttr2Type" /> <xs:element name="anyTestMissing" type="anyTestType" /> <xs:element name="invalidTest" type="invalidTestType" /> </xs:sequence> </xs:complexType> <xs:complexType name="anyTestPartialType" > <xs:sequence > <xs:any namespace="http://www.w3.org/1999/xhtml" processContents="skip" /> <xs:any namespace="http://www.w3.org/1999/xhtml" processContents="lax" /> <xs:any namespace="http://www.secondSchema" processContents="lax" /> </xs:sequence> <xs:anyAttribute namespace="http://www.w3.org/1999/xhtml" processContents="skip" /> </xs:complexType> <xs:complexType name="anyTestType" > <xs:sequence > <xs:any namespace="http://www.secondSchema" processContents="lax"/> <xs:any namespace="http://www.secondSchema" processContents="strict"/> <xs:any namespace="http://www.secondSchema" processContents="strict"/> </xs:sequence> <xs:anyAttribute namespace="http://www.secondSchema" processContents="lax" /> </xs:complexType> <xs:complexType name="anyTestAttr1Type" > <xs:anyAttribute namespace="http://www.secondSchema" processContents="strict" /> </xs:complexType> <xs:complexType name="anyTestAttr2Type" > <xs:anyAttribute namespace="http://www.secondSchema" processContents="lax" /> </xs:complexType> <xs:complexType name="invalidTestType" > <xs:sequence > <xs:element name="simple" type="stringDerivedType" /> <xs:element name="complex" type="baseComplex" /> <xs:element name="number" type="base" /> <xs:element name="complexXsi" type="baseComplex" /> <xs:element name="unionTest" type="uType" /> <xs:element name="invalidAttrTest" type="attrOnlyType" /> <xs:element name="missingAttrTest" type="attrOnlyType" /> <xs:element name="prohibitedAttrTest" type="prohibitedAttrType" /> </xs:sequence> <xs:attribute name="simple" type="stringDerivedType" /> </xs:complexType> <xs:complexType name="prohibitedAttrType" > <xs:attribute name="attr" type="stringDerivedType" use="prohibited" /> </xs:complexType> <xs:complexType name="attrOnlyType" > <xs:attribute name="attr" type="stringDerivedType" use="required" /> </xs:complexType> <xs:simpleType name="uType" > <xs:union memberTypes="stringDerivedType" /> </xs:simpleType> <xs:complexType name="xsiTypeTestType" > <xs:sequence> <xs:element name="number" type="base" maxOccurs="3"/> <xs:element name="complexXsi" type="baseComplex" maxOccurs="3"/> </xs:sequence> </xs:complexType> <xs:complexType name="baseComplex" > <xs:sequence> <xs:element name="a" type="xs:string" /> </xs:sequence> </xs:complexType> <xs:complexType name="level1Complex" > <xs:complexContent > <xs:extension base="baseComplex" > <xs:sequence> <xs:element name="b" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:complexType name="level2Complex" > <xs:complexContent > <xs:extension base="level1Complex" > <xs:sequence> <xs:element name="c" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:simpleType name="base" > <xs:restriction base="xs:decimal" > <xs:maxExclusive value="100"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="level1" > <xs:restriction base="base" > <xs:maxExclusive value="75"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="level2" > <xs:restriction base="level1" > <xs:maxExclusive value="50"/> </xs:restriction> </xs:simpleType> <xs:element name="anonElement" > <xs:simpleType > <xs:restriction base="xs:decimal" > <xs:maxExclusive value="100"/> </xs:restriction> </xs:simpleType> </xs:element> <xs:complexType name="eleTestType" > <xs:sequence > <xs:element name="level1string" type="xs:string" /> <xs:element name="level1boolean" type="xs:boolean" /> <xs:element name="level1decimal" type="xs:decimal" /> <xs:element name="level1float" type="xs:float" /> <xs:element name="level1double" type="xs:double" /> <xs:element name="level1duration" type="xs:duration" /> <xs:element name="level1dateTime" type="xs:dateTime" /> <xs:element name="level1time" type="xs:time" /> <xs:element name="level1date" type="xs:date" /> <xs:element name="level1gYearMonth" type="xs:gYearMonth" /> <xs:element name="level1gYear" type="xs:gYear" /> <xs:element name="level1gMonthDay" type="xs:gMonthDay" /> <xs:element name="level1gDay" type="xs:gDay" /> <xs:element name="level1gMonth" type="xs:gMonth" /> <xs:element name="level1hexBinary" type="xs:hexBinary" /> <xs:element name="level1base64Binary" type="xs:base64Binary" /> <xs:element name="level1anyURI" type="xs:anyURI" /> <xs:element name="level1QName" type="xs:QName" /> <xs:element name="level1normalizedString" type="xs:normalizedString" /> <xs:element name="level1token" type="xs:token" /> <xs:element name="level1language" type="xs:language" /> <xs:element name="level1NMTOKEN" type="xs:NMTOKEN" /> <xs:element name="level1NMTOKENS" type="xs:NMTOKENS" /> <xs:element name="level1Name" type="xs:Name" /> <xs:element name="level1NCName" type="xs:NCName" /> <xs:element name="level1integer" type="xs:integer" /> <xs:element name="level1nonPositiveInteger" type="xs:nonPositiveInteger" /> <xs:element name="level1negativeInteger" type="xs:negativeInteger" /> <xs:element name="level1long" type="xs:long" /> <xs:element name="level1int" type="xs:int" /> <xs:element name="level1short" type="xs:short" /> <xs:element name="level1byte" type="xs:byte" /> <xs:element name="level1nonNegativeInteger" type="xs:nonNegativeInteger" /> <xs:element name="level1unsignedLong" type="xs:unsignedLong" /> <xs:element name="level1unsignedInt" type="xs:unsignedInt" /> <xs:element name="level1unsignedShort" type="xs:unsignedShort" /> <xs:element name="level1unsignedByte" type="xs:unsignedByte" /> <xs:element name="level1positiveInteger" type="xs:positiveInteger" /> </xs:sequence> </xs:complexType> <xs:complexType name="attrTestType" > <xs:attribute name="string" type="xs:string" /> <xs:attribute name="boolean" type="xs:boolean" /> <xs:attribute name="decimal" type="xs:decimal" /> <xs:attribute name="float" type="xs:float" /> <xs:attribute name="double" type="xs:double" /> <xs:attribute name="duration" type="xs:duration" /> <xs:attribute name="dateTime" type="xs:dateTime" /> <xs:attribute name="time" type="xs:time" /> <xs:attribute name="date" type="xs:date" /> <xs:attribute name="gYearMonth" type="xs:gYearMonth" /> <xs:attribute name="gYear" type="xs:gYear" /> <xs:attribute name="gMonthDay" type="xs:gMonthDay" /> <xs:attribute name="gDay" type="xs:gDay" /> <xs:attribute name="gMonth" type="xs:gMonth" /> <xs:attribute name="hexBinary" type="xs:hexBinary" /> <xs:attribute name="base64Binary" type="xs:base64Binary" /> <xs:attribute name="anyURI" type="xs:anyURI" /> <xs:attribute name="QName" type="xs:QName" /> <xs:attribute name="normalizedString" type="xs:normalizedString" /> <xs:attribute name="token" type="xs:token" /> <xs:attribute name="language" type="xs:language" /> <xs:attribute name="NMTOKEN" type="xs:NMTOKEN" /> <xs:attribute name="NMTOKENS" type="xs:NMTOKENS" /> <xs:attribute name="Name" type="xs:Name" /> <xs:attribute name="NCName" type="xs:NCName" /> <xs:attribute name="ID" type="xs:ID" /> <xs:attribute name="IDREF" type="xs:IDREF" /> <xs:attribute name="IDREFS" type="xs:IDREFS" /> <xs:attribute name="integer" type="xs:integer" /> <xs:attribute name="nonPositiveInteger" type="xs:nonPositiveInteger" /> <xs:attribute name="negativeInteger" type="xs:negativeInteger" /> <xs:attribute name="long" type="xs:long" /> <xs:attribute name="int" type="xs:int" /> <xs:attribute name="short" type="xs:short" /> <xs:attribute name="byte" type="xs:byte" /> <xs:attribute name="nonNegativeInteger" type="xs:nonNegativeInteger" /> <xs:attribute name="unsignedLong" type="xs:unsignedLong" /> <xs:attribute name="unsignedInt" type="xs:unsignedInt" /> <xs:attribute name="unsignedShort" type="xs:unsignedShort" /> <xs:attribute name="unsignedByte" type="xs:unsignedByte" /> <xs:attribute name="positiveInteger" type="xs:positiveInteger" /> <xs:attribute name="defaultString" type="xs:string" default="hello" /> <xs:attribute name="defaultInt" type="xs:integer" default="12" /> </xs:complexType> <xs:complexType name="simpleDerTestType" > <xs:sequence> <xs:element name="decimalDerived" type="decimalDerivedType" /> <xs:element name="stringDerived" type="stringDerivedType" /> </xs:sequence> <xs:attribute name="decimalDerived" type="decimalDerivedType" /> <xs:attribute name="stringDerived" type="stringDerivedType" /> </xs:complexType> <xs:simpleType name="stringDerivedType" > <xs:restriction base="xs:string" > <xs:pattern value="hello"/> </xs:restriction> </xs:simpleType> <xs:simpleType name="decimalDerivedType" > <xs:restriction base="xs:decimal" > <xs:maxExclusive value="100"/> </xs:restriction> </xs:simpleType> <xs:complexType name="complexTestType" > <xs:sequence> <xs:element name="a" type="xs:string"/> <xs:element name="b" type="stringDerivedType"/> <xs:element name="c" type="decimalDerivedType"/> </xs:sequence> <xs:attribute name="a" type="xs:string" /> <xs:attribute name="b" type="stringDerivedType" /> <xs:attribute name="c" type="decimalDerivedType" /> </xs:complexType> <xs:complexType name="complexDerTestType" > <xs:complexContent > <xs:extension base="complexTestType" > <xs:sequence> <xs:element name="d" type="xs:string"/> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> <xs:simpleType name="unionTestType" > <xs:union memberTypes="decimalDerivedType stringDerivedType xs:decimal xs:string" /> </xs:simpleType> <xs:complexType name="unionTest" > <xs:sequence > <xs:element name="testEle" maxOccurs="4" type="unionTestType" /> <xs:element name="testEle2" maxOccurs="4" > <xs:complexType > <xs:attribute name="testAttr" type="unionTestType" /> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="unionTest2" > <xs:sequence > <xs:element name="testEle" maxOccurs="4" > <xs:complexType > <xs:simpleContent > <xs:extension base="unionTestType" > <xs:attribute name="testAttr" type="unionTestType" /> </xs:extension > </xs:simpleContent> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="testtype2" > <xs:sequence> <xs:element name="poo" type="xs:string"/> </xs:sequence> <xs:attribute name="a" type="xs:IDREF" /> <xs:attribute name="b" type="xs:ID" /> <xs:attribute name="c" type="xs:string" /> </xs:complexType> </xs:schema> 1.1 xml-xerces/c/tests/DOM/TypeInfo/data/combined.dtd Index: combined.dtd =================================================================== <!ELEMENT root (level1, level1a) > <!ATTLIST root xsi:noNamespaceSchemaLocation CDATA #REQUIRED xmlns:xsi CDATA #REQUIRED attBoth CDATA #REQUIRED attDTD CDATA #REQUIRED > <!ELEMENT level1 (#PCDATA) > <!ELEMENT level1a (#PCDATA) > 1.1 xml-xerces/c/tests/DOM/TypeInfo/data/combined.xml Index: combined.xml =================================================================== <!DOCTYPE root SYSTEM "combined.dtd" > <root xsi:noNamespaceSchemaLocation="combined.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" attBoth="lala" attSchema="lala" attDTD="lala" > <level1 >content</level1> <level1a >content</level1a> </root> 1.1 xml-xerces/c/tests/DOM/TypeInfo/data/combined.xsd Index: combined.xsd =================================================================== <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema' elementFormDefault="unqualified" > <xs:element name="root" type="rootType" /> <xs:complexType name="rootType" > <xs:sequence > <xs:element name="level1" type="xs:string" /> </xs:sequence> <xs:attribute name="attBoth" type="xs:string" /> <xs:attribute name="attSchema" type="xs:string" /> </xs:complexType> </xs:schema>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]