cargilld 2005/02/23 11:07:59 Modified: c/src/xercesc/validators/datatype DatatypeValidatorFactory.cpp c/samples/PSVIWriter PSVIUni.cpp PSVIUni.hpp PSVIWriter.cpp PSVIWriterHandlers.cpp PSVIWriterHandlers.hpp Log: Various PSVI fixes from Mike Boos. Revision Changes Path 1.31 +12 -2 xml-xerces/c/src/xercesc/validators/datatype/DatatypeValidatorFactory.cpp Index: DatatypeValidatorFactory.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/datatype/DatatypeValidatorFactory.cpp,v retrieving revision 1.30 retrieving revision 1.31 diff -u -r1.30 -r1.31 --- DatatypeValidatorFactory.cpp 20 Oct 2004 15:19:07 -0000 1.30 +++ DatatypeValidatorFactory.cpp 23 Feb 2005 19:07:59 -0000 1.31 @@ -16,6 +16,9 @@ /* * $Log$ + * Revision 1.31 2005/02/23 19:07:59 cargilld + * Various PSVI fixes from Mike Boos. + * * Revision 1.30 2004/10/20 15:19:07 knoaman * Allow option of initializing static data in XMLPlatformUtils::Initialize * @@ -879,9 +882,16 @@ // Set PSVI information for Ordered, Numeric, Bounded & Finite datatypeValidator->setOrdered(baseValidator->getOrdered()); datatypeValidator->setNumeric(baseValidator->getNumeric()); + RefHashTableOf<KVStringPair>* baseFacets = baseValidator->getFacets(); if (facets && - ((facets->get(SchemaSymbols::fgELT_MININCLUSIVE) || facets->get(SchemaSymbols::fgELT_MINEXCLUSIVE)) && - (facets->get(SchemaSymbols::fgELT_MAXINCLUSIVE) || facets->get(SchemaSymbols::fgELT_MAXEXCLUSIVE)))) + ((facets->get(SchemaSymbols::fgELT_MININCLUSIVE) || + facets->get(SchemaSymbols::fgELT_MINEXCLUSIVE) || + (baseFacets && (baseFacets->get(SchemaSymbols::fgELT_MININCLUSIVE) || + baseFacets->get(SchemaSymbols::fgELT_MINEXCLUSIVE))))) && + (facets->get(SchemaSymbols::fgELT_MAXINCLUSIVE) || + facets->get(SchemaSymbols::fgELT_MAXEXCLUSIVE) || + (baseFacets && ((baseFacets->get(SchemaSymbols::fgELT_MAXINCLUSIVE) || + baseFacets->get(SchemaSymbols::fgELT_MAXEXCLUSIVE)))))) { datatypeValidator->setBounded(true); } 1.4 +10 -5 xml-xerces/c/samples/PSVIWriter/PSVIUni.cpp Index: PSVIUni.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/samples/PSVIWriter/PSVIUni.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- PSVIUni.cpp 23 Sep 2004 21:24:02 -0000 1.3 +++ PSVIUni.cpp 23 Feb 2005 19:07:59 -0000 1.4 @@ -285,6 +285,11 @@ chLatin_p, chLatin_s, chLatin_v, chColon, chLatin_e, chLatin_l, chLatin_e, chLatin_m, chLatin_e, chLatin_n, chLatin_t, chLatin_D, chLatin_e, chLatin_c, chLatin_l, chLatin_a, chLatin_r, chLatin_a, chLatin_t, chLatin_i, chLatin_o, chLatin_n, chNull }; +const XMLCh PSVIUni::fgFacetFixed[] = +{ + chLatin_p, chLatin_s, chLatin_v, chColon, chLatin_f, chLatin_i, chLatin_x, chLatin_e, chLatin_d, chNull +}; + const XMLCh PSVIUni::fgFacets[] = { chLatin_p, chLatin_s, chLatin_v, chColon, chLatin_f, chLatin_a, chLatin_c, chLatin_e, chLatin_t, chLatin_s, chNull @@ -300,11 +305,6 @@ chLatin_p, chLatin_s, chLatin_v, chColon, chLatin_f, chLatin_i, chLatin_n, chLatin_a, chLatin_l, chNull }; -const XMLCh PSVIUni::fgFixed[] = -{ - chLatin_p, chLatin_s, chLatin_v, chColon, chLatin_f, chLatin_i, chLatin_x, chLatin_e, chLatin_d, chNull -}; - const XMLCh PSVIUni::fgFundamentalFacets[] = { chLatin_p, chLatin_s, chLatin_v, chColon, chLatin_f, chLatin_u, chLatin_n, chLatin_d, chLatin_a, chLatin_m, chLatin_e, chLatin_n, chLatin_t, chLatin_a, chLatin_l, chLatin_F, chLatin_a, chLatin_c, chLatin_e, chLatin_t, chLatin_s, chNull @@ -795,6 +795,11 @@ chLatin_v, chLatin_a, chLatin_l, chLatin_i, chLatin_d, chNull }; +const XMLCh PSVIUni::fgVCFixed[] = +{ + chLatin_f, chLatin_i, chLatin_x, chLatin_e, chLatin_d, chNull +}; + const XMLCh PSVIUni::fgXMLChNull[] = { chNull 1.4 +3 -2 xml-xerces/c/samples/PSVIWriter/PSVIUni.hpp Index: PSVIUni.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/samples/PSVIWriter/PSVIUni.hpp,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- PSVIUni.hpp 23 Sep 2004 21:24:02 -0000 1.3 +++ PSVIUni.hpp 23 Feb 2005 19:07:59 -0000 1.4 @@ -83,9 +83,9 @@ static const XMLCh fgDocumentLocation[]; static const XMLCh fgElementDeclaration[]; static const XMLCh fgFacets[]; + static const XMLCh fgFacetFixed[]; static const XMLCh fgFields[]; - static const XMLCh fgFinal[]; - static const XMLCh fgFixed[]; + static const XMLCh fgFinal[]; static const XMLCh fgFundamentalFacets[]; static const XMLCh fgIdentityConstraintCategory[]; static const XMLCh fgIdentityConstraintDefinition[]; @@ -186,6 +186,7 @@ static const XMLCh fgUnique[]; static const XMLCh fgUnknown[]; static const XMLCh fgValid[]; + static const XMLCh fgVCFixed[]; static const XMLCh fgXMLChNull[]; //PSVI Element Types (Shortened) 1.7 +6 -0 xml-xerces/c/samples/PSVIWriter/PSVIWriter.cpp Index: PSVIWriter.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/samples/PSVIWriter/PSVIWriter.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- PSVIWriter.cpp 12 Jan 2005 20:43:21 -0000 1.6 +++ PSVIWriter.cpp 23 Feb 2005 19:07:59 -0000 1.7 @@ -17,6 +17,9 @@ //REVISIT /* * $Log$ + * Revision 1.7 2005/02/23 19:07:59 cargilld + * Various PSVI fixes from Mike Boos. + * * Revision 1.6 2005/01/12 20:43:21 cargilld * Remove warning messages. * @@ -234,6 +237,9 @@ else handler = new PSVIWriterHandlers(psviFormatter, errorFormatter); + PSVIAdvancedHandler* advancedHandler = new PSVIAdvancedHandler(handler); + parser->installAdvDocHandler(advancedHandler); + parser->setPSVIHandler(handler); parser->setContentHandler(handler); parser->setLexicalHandler(handler); 1.14 +17 -8 xml-xerces/c/samples/PSVIWriter/PSVIWriterHandlers.cpp Index: PSVIWriterHandlers.cpp =================================================================== RCS file: /home/cvs/xml-xerces/c/samples/PSVIWriter/PSVIWriterHandlers.cpp,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- PSVIWriterHandlers.cpp 12 Jan 2005 20:43:21 -0000 1.13 +++ PSVIWriterHandlers.cpp 23 Feb 2005 19:07:59 -0000 1.14 @@ -213,10 +213,6 @@ writeOpen(PSVIUni::fgDocument, fAttrList); incIndent(); - sendElementValue(PSVIUni::fgCharacterEncodingScheme, fFormatter->getEncodingName()); - sendElementEmpty(PSVIUni::fgStandalone); - sendElementValue(PSVIUni::fgVersion, PSVIUni::fgOnePointZero); - fElementChildren->push(false); } @@ -822,7 +818,7 @@ XSFacet* facet = facets->elementAt(facetCount); sendIndentedElement(translateFacet(facet->getFacetKind())); sendElementValue(PSVIUni::fgValue, facet->getLexicalFacetValue()); - sendElementValue(PSVIUni::fgFixed, translateBool(facet->isFixed())); + sendElementValue(PSVIUni::fgFacetFixed, translateBool(facet->isFixed())); processAnnotation(facet->getAnnotation()); sendUnindentedElement(translateFacet(facet->getFacetKind())); } @@ -835,7 +831,7 @@ for (unsigned int i=0; i < values->size(); i++) { sendElementValue(PSVIUni::fgValue, values->elementAt(i)); } - sendElementValue(PSVIUni::fgFixed, translateBool(multiFacet->isFixed())); + sendElementValue(PSVIUni::fgFacetFixed, translateBool(multiFacet->isFixed())); processAnnotations(multiFacet->getAnnotations()); sendUnindentedElement(translateFacet(multiFacet->getFacetKind())); } @@ -1356,7 +1352,7 @@ case XSConstants::VALUE_CONSTRAINT_DEFAULT : return PSVIUni::fgDefault; case XSConstants::VALUE_CONSTRAINT_FIXED : - return PSVIUni::fgFixed; + return PSVIUni::fgVCFixed; default : return PSVIUni::fgUnknown; } @@ -1938,4 +1934,17 @@ delete obj; -} \ No newline at end of file +} + +void PSVIAdvancedHandler::XMLDecl(const XMLCh* const versionStr, const XMLCh* const encodingStr, const XMLCh* const standaloneStr, const XMLCh* const autoEncodingStr) +{ + if (encodingStr && *encodingStr) + fWriterHandler->sendElementValue(PSVIUni::fgCharacterEncodingScheme, encodingStr); + else + fWriterHandler->sendElementValue(PSVIUni::fgCharacterEncodingScheme, autoEncodingStr); + if (standaloneStr && *standaloneStr) + fWriterHandler->sendElementValue(PSVIUni::fgStandalone, standaloneStr); + else + fWriterHandler->sendElementEmpty(PSVIUni::fgStandalone); + fWriterHandler->sendElementValue(PSVIUni::fgVersion, versionStr); +} 1.10 +25 -0 xml-xerces/c/samples/PSVIWriter/PSVIWriterHandlers.hpp Index: PSVIWriterHandlers.hpp =================================================================== RCS file: /home/cvs/xml-xerces/c/samples/PSVIWriter/PSVIWriterHandlers.hpp,v retrieving revision 1.9 retrieving revision 1.10 diff -u -r1.9 -r1.10 --- PSVIWriterHandlers.hpp 6 Dec 2004 11:55:37 -0000 1.9 +++ PSVIWriterHandlers.hpp 23 Feb 2005 19:07:59 -0000 1.10 @@ -48,6 +48,7 @@ #include <xercesc/framework/psvi/XSTypeDefinition.hpp> #include <xercesc/framework/psvi/XSWildcard.hpp> #include <xercesc/framework/XMLFormatter.hpp> +#include <xercesc/framework/XMLDocumentHandler.hpp> #include <xercesc/dom/DOMElement.hpp> #include <xercesc/dom/DOMNamedNodeMap.hpp> #include <xercesc/util/ValueStackOf.hpp> @@ -107,6 +108,7 @@ PSVIWriterHandlers(XMLFormatter* outputFormatter, XMLFormatter* errorFormatter = NULL); ~PSVIWriterHandlers(); + friend class PSVIAdvancedHandler; // ----------------------------------------------------------------------- // Convenience Utility // ----------------------------------------------------------------------- @@ -278,6 +280,29 @@ RefVectorOf<AttrInfo>* fAttributesInfo; }; +class PSVIAdvancedHandler: public XMLDocumentHandler { +public: + PSVIAdvancedHandler(PSVIWriterHandlers* writerHandler) : XMLDocumentHandler(), fWriterHandler(writerHandler) {} + ~PSVIAdvancedHandler() {} + void docCharacters(const XMLCh* const, const unsigned int, const bool) {} + void docComment(const XMLCh* const) {} + void docPI(const XMLCh* const, const XMLCh* const) {} + void endDocument() {} + void endElement(const XMLElementDecl&, const unsigned int, const bool, const XMLCh* const) {} + void endEntityReference(const XMLEntityDecl&) {} + + void ignorableWhitespace(const XMLCh* const chars, const unsigned int length, const bool cdataSection) {} + + void resetDocument() {} + void startDocument() {} + void startElement(const XMLElementDecl&, const unsigned int, const XMLCh* const, const RefVectorOf<XMLAttr>& + ,const unsigned int, const bool, const bool) {} + void startEntityReference(const XMLEntityDecl&) {}; + + void XMLDecl(const XMLCh* const versionStr, const XMLCh* const encodingStr, const XMLCh* const standaloneStr, const XMLCh* const autoEncodingStr); +private: + PSVIWriterHandlers* fWriterHandler; +}; #endif
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]