From: andre ebersold Date: Wed, 19 Jun 2024 13:50:59 +0000 (+0200) Subject: [REQIF] Walking through the reqif file seems to work with the parser X-Git-Url: https://git.ebersold.fr/?a=commitdiff_plain;h=0ef644510574ed64f6c76dd35937e36bceec4675;p=antcc.git [REQIF] Walking through the reqif file seems to work with the parser --- diff --git a/src/xml/reqif/parsers.h.inc b/src/xml/reqif/parsers.h.inc index 2ed2251..349c3cc 100644 --- a/src/xml/reqif/parsers.h.inc +++ b/src/xml/reqif/parsers.h.inc @@ -9,8 +9,8 @@ #endif ROOT_PARSER(REQ-IF,ReqifParser) -COMPLEX_PARSER(THE-HEADER,ReqifHeaderParser) -//SIMPLE_PARSER(REQ-IF-HEADER,DescriptionParser) +COMPLEX_PARSER(THE-HEADER,TheHeaderParser) +COMPLEX_PARSER(REQ-IF-HEADER,ReqifHeaderParser) //SIMPLE_PARSER(CREATION-TIME,DescriptionParser) //SIMPLE_PARSER(REQ-IF-TOOL-ID,DescriptionParser) //SIMPLE_PARSER(REQ-IF-VERSION,DescriptionParser) @@ -37,6 +37,8 @@ COMPLEX_PARSER(ATTRIBUTES-DEFINITION-STRING,AttributeDefinitionParser) //COMPLEX_PARSER(ATTRIBUTES-DEFINITION-REAL,AttributeDefinitionParser) //COMPLEX_PARSER(ATTRIBUTES-DEFINITION-DATE,AttribtuteDefinitionParser) //COMPLEX_PARSER(ATTRIBUTES-DEFINITION-XHTML,AttribtuteDefinitionParser) +COMPLEX_PARSER(ATTRIBUTES-DEFINITION-REF,AttributeDefinitionRefParser) + COMPLEX_PARSER(TYPE,AttributeTypeParser) SIMPLE_PARSER(DATATYPE-DEFINITION-STRING-REF,DatatypeRefParser) //SIMPLE_PARSER(DATATYPE-DEFINITION-XHTML-REF,DatatypeRefParser) @@ -84,8 +86,8 @@ COMPLEX_PARSER(SPECIFICATIONS,SpecificationsParser) COMPLEX_PARSER(SPECIFICATION,SpecificationParser) COMPLEX_PARSER(CHILDREN,ChildrenParser) -//COMPLEX_PARSER(SPEC-HIERACHY,ChildrenParser) -//COMPLEX_PARSER(OBJECT,ChildrenParser) +COMPLEX_PARSER(SPEC-HIERACHY,SpecHierarchyParser) +COMPLEX_PARSER(OBJECT,ObjectParser) //SIMPLE_PARSER(SPEC-OBJECT-REF,DatatypeRefParser) diff --git a/src/xml/reqif/reqif_elements_parser.cpp b/src/xml/reqif/reqif_elements_parser.cpp index 5b555c4..38c6de2 100644 --- a/src/xml/reqif/reqif_elements_parser.cpp +++ b/src/xml/reqif/reqif_elements_parser.cpp @@ -578,10 +578,10 @@ ROOT_PARSER(ReqifParser, { if (name == "THE-HEADER" && ! ns.empty()) { - s.m_parser = SHARED_PTR(new ReqifHeaderParser(m_Project + s.m_parser = SHARED_PTR(new TheHeaderParser(m_Project , ::reqif::ElementFactory::get().orderElement(name.c_str()) )); - } else if (name == "TOOL-EXTENSION" && ! ns.empty()) + } else if (name == "TOOL-EXTENSIONS" && ! ns.empty()) { s.m_parser = SHARED_PTR(new DescriptionParser(m_Project , NULL) @@ -631,40 +631,127 @@ return l_ok; }) // Target Parser Implementation -COMPLEX_PARSER(ReqifHeaderParser, +COMPLEX_PARSER(TheHeaderParser, { if (name == "REQ-IF-HEADER" && ! ns.empty()) + { + s.m_parser = SHARED_PTR(new ReqifHeaderParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + } + return false; + + } + , + { + ANTCC_PARSER_DEBUG_TARGET("ReqifHEaderParser end %s size=%u" + ,name.c_str() + ,m_context.size()); + if (name == "REQ-IF-HEADER" && ! ns.empty()) + { + return true; + } + return false; + } + , + { + ANTCC_PARSER_DEBUG_TARGET("ReqifHeaderParser Attribute: %s-> %s" + ,name.c_str() + ,val.c_str()); + std::cout<<"REQ-IF-HEADER Attributes : "<(new DescriptionParser(m_Project , ::reqif::ElementFactory::get().orderElement(name.c_str()) )); - } else if (name == "exec" && ns.empty()) + return true; + } + else if (name == "REQ-IF-TOOL-ID" && !ns.empty()) { s.m_parser = SHARED_PTR(new DescriptionParser(m_Project , ::reqif::ElementFactory::get().orderElement(name.c_str()) )); + return true; } - else + else if (name == "REQ-IF-VERSION" && !ns.empty()) { s.m_parser = SHARED_PTR(new DescriptionParser(m_Project , ::reqif::ElementFactory::get().orderElement(name.c_str()) )); + return true; } - return true; + else if (name == "SOURCE-TOOL-ID" && !ns.empty()) + { + s.m_parser = SHARED_PTR(new DescriptionParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + } + else if (name == "TITLE" && !ns.empty()) + { + s.m_parser = SHARED_PTR(new DescriptionParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + } + else + { + ANTCC_PARSER_ERROR("ReqifHeaderParser::startElement unsupported Element %s",name.c_str()); + } + return false; } , { + std::string result; ANTCC_PARSER_DEBUG_TARGET("ReqifHEaderParser end %s size=%u" ,name.c_str() ,m_context.size()); - return true; + if (name == "CREATION-TIME" && ! ns.empty()) { + s.m_parser->post(result); + std::cout<<"CREATION TIME : "<post(result); + std::cout<<"TOOL ID : "<post(result); + std::cout<<"REQ-IF-VERSION : "<post(result); + std::cout<<"SOURCE-TOOL : "<post(result); + std::cout<<"TITLE : "< %s" ,name.c_str() ,val.c_str()); + std::cout<<"REQ-IF-HEADER Attributes : "<(new SpecRelationsParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); return true; } else if (name == "SPECIFICATIONS" && ! ns.empty()) { + s.m_parser = SHARED_PTR(new SpecificationsParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); return true; } else if (name == "SPEC-RELATION-GROUPS" && ! ns.empty()) { @@ -857,10 +950,22 @@ COMPLEX_PARSER(TypeParser, // Spec Object Type Parser Implementation COMPLEX_PARSER(SpecObjectTypeParser, { - s.m_parser = SHARED_PTR(new SpecAttributesParser(m_Project + // Not sure that I need sub element for the Type parser + if (name == "SPEC-ATTRIBUTES" && ! ns.empty()) + { + s.m_parser = SHARED_PTR(new SpecAttributesParser(m_Project , ::reqif::ElementFactory::get().orderElement(name.c_str()) )); - return true; + return true; + } else if (name == "ALTERNATIVE-ID" && ! ns.empty()) + { + + s.m_parser = SHARED_PTR(new TypeParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + } + return false; } , @@ -886,6 +991,7 @@ COMPLEX_PARSER(SpecObjectsParser, // Not sure that I need sub element for the Type parser if (name == "SPEC-OBJECT" && ! ns.empty()) { + std::cout<<"SpecObjects Start "<(new SpecObjectParser(m_Project , ::reqif::ElementFactory::get().orderElement(name.c_str()) )); @@ -901,7 +1007,11 @@ COMPLEX_PARSER(SpecObjectsParser, ANTCC_PARSER_DEBUG_TASK("SpecObjectsParser end %s size=%u" ,name.c_str() ,m_context.size()); - return true; + if (name == "SPEC-OBJECT" && ! ns.empty()) + { + return true; + } + return false; } , { @@ -930,7 +1040,7 @@ COMPLEX_PARSER(SpecObjectParser, , ::reqif::ElementFactory::get().orderElement(name.c_str()) )); return true; - } else if (name == "TYPE" && ! ns.empty()) + } else if (name =="TYPE" && ! ns.empty()) { s.m_parser = SHARED_PTR(new DatatypeRefParser(m_Project , ::reqif::ElementFactory::get().orderElement(name.c_str()) @@ -947,13 +1057,36 @@ COMPLEX_PARSER(SpecObjectParser, ANTCC_PARSER_DEBUG_TASK("SpecObjectParser end %s size=%u" ,name.c_str() ,m_context.size()); - return true; + if (name == "ALTERNATIVE-ID" && ! ns.empty()) + { + return true; + } else if (name == "VALUES" && ! ns.empty()) + { + return true; + } else if (name =="TYPE" && ! ns.empty()) + { + return true; + } + return false; } , { ANTCC_PARSER_DEBUG_TASK("SpecObjectsParser Attribute: %s-> %s" ,name.c_str() ,val.c_str()); + if (name == "IDENTIFIER") + { + std::cout<<"SpecObject "<(new DatatypeRefParser(m_Project + s.m_parser = SHARED_PTR(new AttributeDefinitionRefParser(m_Project , ::reqif::ElementFactory::get().orderElement(name.c_str()) )); return true; @@ -1020,10 +1153,23 @@ COMPLEX_PARSER(AttributeValueParser, } , { + std::string result; ANTCC_PARSER_DEBUG_TASK("AttributeValueParser end %s size=%u" ,name.c_str() ,m_context.size()); - return true; + if ( name == "DEFINITION" + && ! ns.empty()) + { + ::reqif::Element *el = s.m_parser->post(); + return true; + } else if ( name == "THE-VALUE" + && ! ns.empty()) + { + s.m_parser->post(result); + std::cout<<"AttributeValue tag THE-VALUE := "<(new AttributeDefinitionParser(m_Project , ::reqif::ElementFactory::get().orderElement(name.c_str()) )); - return true; - + return true; + } + ANTCC_PARSER_ERROR("SpecAttributesParser:startElement unsupported Element %s",name.c_str()); + return false; } , { @@ -1067,13 +1225,13 @@ COMPLEX_PARSER(SpecAttributesParser, // Macrodef Parser Implementation COMPLEX_PARSER(AttributeDefinitionParser, { - if (name == "TYPE" && ns.empty()) + if (name == "TYPE" && ! ns.empty()) { - ANTCC_PARSER_DEBUG("TypeParser ignore %s size=%u" + ANTCC_PARSER_DEBUG("AttributeDefinitionParser ignore %s size=%u" ,name.c_str() ,m_context.size()); - s.m_parser = SHARED_PTR(new TypeParser(m_Project - , ::reqif::ElementFactory::get().orderElement("TYPE") + s.m_parser = SHARED_PTR(new DatatypeRefParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) )); return true; } @@ -1082,19 +1240,498 @@ COMPLEX_PARSER(AttributeDefinitionParser, } , { + std::string result; ANTCC_PARSER_DEBUG_TASK("AttributeDefinitionParser end %s size=%u" ,name.c_str() ,m_context.size()); - return true; + if (name == "TYPE" && ! ns.empty()) + { + s.m_parser->post(result); + std::cout<<"AttributeDefinition TYPE : "< %s" ,name.c_str() ,val.c_str()); + if (name == "IDENTIFIER") + { + l_ok = true; + } else if (name == "IS-EDITABLE") { + l_ok = true; + } else if (name == "LAST-CHANGE") { + l_ok = true; + } else if (name == "LONG-NAME") { + std::cout<<"Attribute-Defintition "< + + + + + + +*/ +COMPLEX_PARSER(AttributeDefinitionRefParser, + { + ANTCC_PARSER_DEBUG("AttributeDefinitionRefParser ignore %s size=%u" + ,name.c_str() + ,m_context.size()); + if ( (name == "ATTRIBUTE-DEFINITION-BOOLEAN-REF" + || name == "ATTRIBUTE-DEFINITION-DATE-REF" + || name == "ATTRIBUTE-DEFINITION-ENUMERATION-REF" + || name == "ATTRIBUTE-DEFINITION-INTEGER-REF" + || name == "ATTRIBUTE-DEFINITION-REAL-REF" + || name == "ATTRIBUTE-DEFINITION-STRING-REF" + || name == "ATTRIBUTE-DEFINITION-XHTML-REF" + ) && ! ns.empty()) + { + s.m_parser = SHARED_PTR(new DatatypeRefParser(m_Project + , ::reqif::ElementFactory::get().orderElement("ATTRIBUTE-DEFINITION-REF") + )); + return true; + } + + return false; + + } + , + { + std::string result; + ANTCC_PARSER_DEBUG_TASK("AttributeDefinitionRefParser end %s size=%u" + ,name.c_str() + ,m_context.size()); + if ( ( name == "ATTRIBUTE-DEFINITION-BOOLEAN-REF" + || name == "ATTRIBUTE-DEFINITION-DATE-REF" + || name == "ATTRIBUTE-DEFINITION-ENUMERATION-REF" + || name == "ATTRIBUTE-DEFINITION-INTEGER-REF" + || name == "ATTRIBUTE-DEFINITION-REAL-REF" + || name == "ATTRIBUTE-DEFINITION-STRING-REF" + || name == "ATTRIBUTE-DEFINITION-XHTML-REF" + ) && ! ns.empty()) + { + s.m_parser->post(result); + std::cout<<"AttributeDefinitionRef : "< %s" + ,name.c_str() + ,val.c_str()); + if (name == "IDENTIFIER") + { + l_ok = true; + } else if (name == "IS-EDITABLE") { + l_ok = true; + } else if (name == "LAST-CHANGE") { + l_ok = true; + } else if (name == "LONG-NAME") { + std::cout<<"Attribute-Defintition "<(new SpecRelationParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + } + return false; + + } + , + { + ANTCC_PARSER_DEBUG_TASK("SpecRelationsParser end %s size=%u" + ,name.c_str() + ,m_context.size()); + if (name == "SPEC-RELATION" && ! ns.empty()) + { + return true; + } + return false; + } + , + { + ANTCC_PARSER_DEBUG_TASK("SpecRelationsParser Attribute: %s-> %s" + ,name.c_str() + ,val.c_str()); + if (name == "IDENTIFIER") + { + l_ok = true; + } else if (name == "IS-EDITABLE") { + l_ok = true; + } else if (name == "LAST-CHANGE") { + l_ok = true; + } else if (name == "LONG-NAME") { + std::cout<<"Attribute-Defintition "<(new ObjectParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + } else if (name == "VALUES" && ! ns.empty()) { + s.m_parser = SHARED_PTR(new SpecObjectValuesParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + + } else if (name == "SOURCE" && ! ns.empty()) + { + s.m_parser = SHARED_PTR(new ObjectParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + } else if (name == "TYPE" && ! ns.empty()) + { + s.m_parser = SHARED_PTR(new DescriptionParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + } + return false; + + } + , + { + ANTCC_PARSER_DEBUG_TASK("SpecRelationsParser end %s size=%u" + ,name.c_str() + ,m_context.size()); + if (name == "TARGET" && ! ns.empty()) + { + return true; + } else if (name == "VALUES" && ! ns.empty()) + { + return true; + } else if (name == "SOURCE" && ! ns.empty()) + { + return true; + } else if (name == "TYPE" && ! ns.empty()) + { + return true; + } + return false; + } + , + { + ANTCC_PARSER_DEBUG_TASK("SpecRelationsParser Attribute: %s-> %s" + ,name.c_str() + ,val.c_str()); + if (name == "IDENTIFIER") + { + l_ok = true; + } else if (name == "IS-EDITABLE") { + l_ok = true; + } else if (name == "LAST-CHANGE") { + l_ok = true; + } else if (name == "LONG-NAME") { + std::cout<<"Attribute-Defintition "<(new SpecificationParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + } + return false; + + } + , + { + ANTCC_PARSER_DEBUG_TASK("SpecificationsParser end %s size=%u" + ,name.c_str() + ,m_context.size()); + if (name == "SPECIFICATION" && ! ns.empty()) + { + return true; + } + return false; + } + , + { + ANTCC_PARSER_DEBUG_TASK("SpecificationsParser Attribute: %s-> %s" + ,name.c_str() + ,val.c_str()); + l_ok = false; + return l_ok; + }) + + +COMPLEX_PARSER(SpecificationParser, + { + ANTCC_PARSER_DEBUG("SpecificationParser ignore %s size=%u" + ,name.c_str() + ,m_context.size()); + if (name == "ALTERNATIVE-ID" && ! ns.empty()) + { + s.m_parser = SHARED_PTR(new SpecRelationParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + } else if (name == "VALUES" && ! ns.empty()) { + s.m_parser = SHARED_PTR(new SpecObjectValuesParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + + } else if (name == "CHILDREN" && ! ns.empty()) + { + s.m_parser = SHARED_PTR(new ChildrenParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + } else if (name == "TYPE" && ! ns.empty()) + { + s.m_parser = SHARED_PTR(new DescriptionParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + } + return false; + + } + , + { + ANTCC_PARSER_DEBUG_TASK("SpecRelationsParser end %s size=%u" + ,name.c_str() + ,m_context.size()); + if (name == "ALTERNATIVE-ID" && ! ns.empty()) + { + return true; + } else if (name == "VALUES" && ! ns.empty()) { + return true; + } else if (name == "CHILDREN" && ! ns.empty()) { + return true; + } else if (name == "TYPE" && ! ns.empty()) { + return true; + } + return false; + } + , + { + ANTCC_PARSER_DEBUG_TASK("SpecRelationsParser Attribute: %s-> %s" + ,name.c_str() + ,val.c_str()); + if (name == "IDENTIFIER") + { + l_ok = true; + } else if (name == "IS-EDITABLE") { + l_ok = true; + } else if (name == "LAST-CHANGE") { + l_ok = true; + } else if (name == "LONG-NAME") { + std::cout<<"Attribute-Defintition "<(new SpecHierarchyParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + + } + return false; + + } + , + { + ANTCC_PARSER_DEBUG_TASK("ChildrenParser end %s size=%u" + ,name.c_str() + ,m_context.size()); + if (name == "SPEC-HIERARCHY" && ! ns.empty()) + { + return true; + } + return false; + } + , + { + ANTCC_PARSER_DEBUG_TASK("ChildrenParser Attribute: %s-> %s" + ,name.c_str() + ,val.c_str()); + l_ok = false; + return l_ok; + }) + + + + +COMPLEX_PARSER(SpecHierarchyParser, + { + ANTCC_PARSER_DEBUG("SpecHierachyParser ignore %s size=%u" + ,name.c_str() + ,m_context.size()); + if (name == "OBJECT" && ! ns.empty()) + { + s.m_parser = SHARED_PTR(new ObjectParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + } else if (name == "ALTERNATIVE-ID" && ! ns.empty()) { + s.m_parser = SHARED_PTR(new DescriptionParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + + } + else if (name == "CHILDREN" && ! ns.empty()) + { + s.m_parser = SHARED_PTR(new ChildrenParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + } else if (name == "EDITABLE-ATTS" && ! ns.empty()) + { + s.m_parser = SHARED_PTR(new DescriptionParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + } + return false; + + } + , + { + ANTCC_PARSER_DEBUG_TASK("SpecHierarchyParser end %s size=%u" + ,name.c_str() + ,m_context.size()); + if (name == "OBJECT" && ! ns.empty()) + { + return true; + } else if (name == "CHILDREN" && ! ns.empty()) + { + return true; + } else if (name == "EDITABLE-ATTS" && ! ns.empty()) + { + return true; + } else if (name == "ALTERNATIVE-ID" && ! ns.empty()) { + return true; + } + return false; + } + , + { + ANTCC_PARSER_DEBUG_TASK("SpecHierarchyParser Attribute: %s-> %s" + ,name.c_str() + ,val.c_str()); + /* + + + + + + + */ + if (name == "IDENTIFIER") + { + l_ok = true; + } else if (name == "IS-EDITABLE") { + l_ok = true; + } else if (name == "DESC") { + l_ok = true; + } else if (name == "IS-TABLE-INTERNAL") { + l_ok = true; + } else if (name == "LAST-CHANGE") { + l_ok = true; + } else if (name == "LONG-NAME") { + std::cout<<"Attribute-Defintition "<(new DescriptionParser(m_Project + , ::reqif::ElementFactory::get().orderElement(name.c_str()) + )); + return true; + } + return false; + + } + , + { + ANTCC_PARSER_DEBUG_TASK("ObjectParser end %s size=%u" + ,name.c_str() + ,m_context.size()); + if (name == "SPEC-OBJECT-REF" && ! ns.empty()) + { + return true; + } + return false; + } + , + { + ANTCC_PARSER_DEBUG_TASK("ObjectParser Attribute: %s-> %s" + ,name.c_str() + ,val.c_str()); + return false; + }) + + // Description Parser Implementation diff --git a/src/xml/reqif/reqif_elements_registration.cpp b/src/xml/reqif/reqif_elements_registration.cpp index 6da3c34..b82f453 100644 --- a/src/xml/reqif/reqif_elements_registration.cpp +++ b/src/xml/reqif/reqif_elements_registration.cpp @@ -19,17 +19,27 @@ void register_basic_elements() REGISTER(Element,REQ_IF_TOOL_ID,REQ-IF-TOOL-ID) REGISTER(Element,REQ_IF_VERSION,REQ-IF-VERSION) REGISTER(Element,TITLE,TITLE) + REGISTER(Element,CREATION_TIME,CREATION-TIME) + REGISTER(Element,SOURCE_TOOL_ID,SOURCE-TOOL-ID) + REGISTER(Element,CORE_CONTENT,CORE-CONTENT) REGISTER(Element,REQ_IF_CONTENT,REQ-IF-CONTENT) - + /*REQ-IF-CONTENT sub elements */ REGISTER(Element,DATATYPES,DATATYPES) + REGISTER(Element,SPEC_TYPES,SPEC-TYPES) + REGISTER(Element,SPEC_OBJECTS,SPEC-OBJECTS) + REGISTER(Element,SPEC_RELATIONS,SPEC-RELATIONS) + REGISTER(Element,SPECIFICATIONS,SPECIFICATIONS) + REGISTER(Element,SPEC_RELATION_GROUP,SPEC-RELATION-GROUP) + + /* DATATYPES sub elements */ REGISTER(Element,DATATYPE_DEFINITION_STRING,DATATYPE-DEFINITION-STRING) REGISTER(Element,DATATYPE_DEFINITION_DATE,DATATYPE-DEFINITION-DATE) REGISTER(Element,DATATYPE_DEFINITION_REAL,DATATYPE-DEFINITION-REAL) REGISTER(Element,DATATYPE_DEFINITION_INTEGER,DATATYPE-DEFINITION-INTEGER) REGISTER(Element,DATATYPE_DEFINITION_XHTML,DATATYPE-DEFINITION-XHTML) - REGISTER(Element,SPEC_TYPES,SPEC-TYPES) + /* SPEC-TYPES sub elements */ REGISTER(Element,SPECIFICATION_TYPE,SPECIFICATION-TYPE) REGISTER(Element,SPEC_OBJECT_TYPE,SPEC-OBJECT-TYPE) REGISTER(Element,SPEC_RELATION_TYPE,SPEC-RELATION-TYPE) @@ -40,11 +50,50 @@ void register_basic_elements() REGISTER(Element,ATTRIBUTE_DEFINITION_INTEGER,ATTRIBUTE-DEFINITION-INTEGER) REGISTER(Element,ATTRIBUTE_DEFINITION_DATE,ATTRIBUTE-DEFINITION-DATE) REGISTER(Element,ATTRIBUTE_DEFINITION_XHTML,ATTRIBUTE-DEFINITION-XHTML) + + + /* SPEC-OBJECTS sub element */ + REGISTER(Element,SPEC_OBJECT,SPEC-OBJECT) + /* SPEC-OBJECT sub element */ + REGISTER(Element,SPEC_OBJECT_VALUES,VALUES) + REGISTER(Element,TYPE,TYPE) + + /* SPEC-RELATIONS sub element */ + REGISTER(Element,SPEC_RELATION,SPEC-RELATION) + + /* SPEC-RELATION sub element */ + REGISTER(Element,SOURCE,SOURCE) + REGISTER(Element,TARGET,TARGET) + /* VALUES sub elements */ + REGISTER(Element,ATTRIBUTE_VALUE_BOOLEAN,ATTRIBUTE-VALUE-BOOLEAN) + REGISTER(Element,ATTRIBUTE_VALUE_DATE,ATTRIBUTE-VALUE-DATE) + REGISTER(Element,ATTRIBUTE_VALUE_ENUMERATION,ATTRIBUTE-VALUE-ENUMERATION) + REGISTER(Element,ATTRIBUTE_VALUE_INTEGER,ATTRIBUTE-VALUE-INTEGER) + REGISTER(Element,ATTRIBUTE_VALUE_REAL,ATTRIBUTE-VALUE-REAL) + REGISTER(Element,ATTRIBUTE_VALUE_STRING,ATTRIBUTE-VALUE-STRING) + REGISTER(Element,ATTRIBUTE_VALUE_XHTML,ATTRIBUTE-VALUE-XHTML) + /* ATTRIBUTE-VALUE-xx sub element */ + REGISTER(Element,DEFINITION,DEFINITION) + REGISTER(Element,THE_VALUE,THE-VALUE) + /* DEFINITION sub elements ATTRIBUTE-DEFINITION-xxxx-REF */ + REGISTER(Element,ATTRIBUTE_DEFINITION_REF,ATTRIBUTE-DEFINITION-REF) /* Under XHTML we have HTML tags */ REGISTER(Element,div,div) REGISTER(Element,br,br) REGISTER(Element,span,span) + /* SPECIFICATIONS sub elements */ + REGISTER(Element,SPECIFICATION,SPECIFICATION) + /* SPECIFICATION sub elements */ + REGISTER(Element,SPEC_HIERARCHY,SPEC-HIERARCHY) + /* - Type is already defind ! */ + + /* SPEC-HIERARCHY sub elements */ + REGISTER(Element,CHILDREN,CHILDREN) + REGISTER(Element,OBJECT,OBJECT) + + /* OBJECT Sub Elements */ + REGISTER(Element,SPEC_OBJECT_REF,SPEC-OBJECT-REF) }