SOL9 2.0 Class: SchemaElement

 SOL9 C++ Class Library  SOL9 Samples  SOL9 Tutorial  SOL9 FAQ  SOL9 ClassTree 

Source code

/*
 * SchemaElement.h 
 * Copyright (c) 2011 Antillia.com TOSHIYUKI ARAI. ALL RIGHTS RESERVED. 
 */


// SOL9
// 2011/02/06
#pragma once

#include <sol/xml/SchemaParticle.h>
#include <sol/xml/SchemaType.h>
#include <sol/xml/SchemaComplexType.h>
#include <sol/xml/SchemaConstant.h>


namespace SOL {

class SchemaElement : public SchemaParticle
{
public:
    SchemaElement(MSXML2::ISchemaElementPtr pElement)
    :SchemaParticle((MSXML2::ISchemaParticlePtr)pElement)
    {

    }

public:
    MSXML2::ISchemaElementPtr getElementPtr()
    {
        return(MSXML2::ISchemaElementPtr)SchemaParticle::getParticlePtr();
    }

    MSXML2::ISchemaTypePtr getType()
    {
        return getElementPtr()->Gettype();
    }

    MSXML2::ISchemaComplexTypePtr getScope()
    {
        return getElementPtr()->Getscope();
    }

    _bstr_t getDefaultValue()
    {
        return getElementPtr()->GetdefaultValue();
    }
/*
    _bstr_t getFixedValue()
    {
        return getElementPtr()-GetfixedValue();
    }
*/
    VARIANT_BOOL getIsNillable()
    {
        return getElementPtr()->GetisNillable();
    }

    MSXML2::ISchemaItemCollectionPtr getIdentityConstraints()
    {
        return getElementPtr()->GetidentityConstraints();
    }

    MSXML2::ISchemaElementPtr getSubstitutionGroup()
    {
        return getElementPtr()->GetsubstitutionGroup();
    }

    SCHEMADERIVATIONMETHOD getSubstitutionGroupExclusions()
    {
        return getElementPtr()->GetsubstitutionGroupExclusions();
    }

    SCHEMADERIVATIONMETHOD getDisallowedSubstitutions()
    {
        return getElementPtr()->GetdisallowedSubstitutions();
    }

    VARIANT_BOOL getIsAbstract()
    {
        return getElementPtr()->GetisAbstract();
    }

    VARIANT_BOOL getIsReference()
    {
        return getElementPtr()->GetisReference();
    }

public:
    void display(const TCHAR* name=NULL)
    {
        if (name==NULL) {
            name = _T("SchemaElement");
        }
        _tprintf(_T("<%s>\n"), name);

        SchemaParticle::display();

        try {
            _tprintf(_T("<DefaultValue>%s</DefaultValue>\n"),  (const TCHAR*)getDefaultValue() );
            _tprintf(_T("<IsNillable>%d</IsNillable>\n"),  getIsNillable());
            _tprintf(_T("<IsAbstract>%d</IsAbstract>\n"),  getIsAbstract());
            _tprintf(_T("<IsReference>%d</IsReference>\n"),  getIsReference());

            SchemaConstant constant;
            try {
                _tprintf(_T("<SubstitutionGroupExclusions>%s</SubstitutionGroupExclusions>\n"),
                    constant.getDerivationMethod(getSubstitutionGroupExclusions()) );
            } catch (...) {
            }

            try {
                _tprintf(_T("<DisallowedSubstitutions>%s</DisallowedSubstitutions>\n"),
                    constant.getDerivationMethod(getDisallowedSubstitutions()) );
            } catch (...) {
            }

            try {
                SchemaType type = getType();
                type.display(_T("Type"));
            } catch (...) {
            }

            try {
                SchemaComplexType ctype = getScope();
                ctype.display(_T("Scope"));
            } catch (...) {
            }

            try {
                SchemaItemCollection constraints = getIdentityConstraints();
                constraints.display(_T("IdentityConstraints"));
            } catch (...) {
            }

            try {
                SchemaElement subsGroup = getSubstitutionGroup();
                subsGroup.display(_T("SubstitutionGroup"));
            } catch (...) {
            }
        } catch (...) {

        }
        _tprintf(_T("</%s>\n"), name);
    }

};

}

Last modified: 1 Feb 2012

Copyright (c) 2009-2012 Antillia.com ALL RIGHTS RESERVED.