![]() |
Ǧºä£²¡¥¥ê¥Õ¥¡¥ì¥ó¥¹ |
||||||||||||||||||||||||||||||||||||||
¥Á¥å¡¼¥Ë¥ó¥° |
|||||||||||||||||||||||||||||||||||||||
akaxiso2.0-beta2 | |||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||
Ǧºä£²¤Ï¡¢ÀßÄê¥Õ¥¡¥¤¥ë¡¢¤â¤·¤¯¤Ï¡¢XML¥¹¥¡¼¥Þʸ½ñÃæ¤ËÀßÄê¹àÌܤòÄɲ乤뤳¤È¤Ë¤è¤ê¡¢¥½¡¼¥¹¤ÎÀ¸À®»þ¤Î¾ÜºÙ¤Ê¥ª¥×¥·¥ç¥ó¤òÀßÄꤹ¤ë¤³¤È¤¬²Äǽ¤Ç¤¹¡£ XML¥¹¥¡¼¥Þʸ½ñÃæ¤Ë¤ª¤±¤ë»ØÄê XML¥¹¥¡¼¥Þʸ½ñÃæ¤Î<xs:appinfo>Í×Áǰʲ¼¤Ë¡¢Ì¾Á°¶õ´Ö http://akaxiso.sourceforge.jp/osixaka2/beta2 ¡ÊºÇ½ª¥ê¥ê¡¼¥¹¤ÇÊѹ¹¤¢¤ê¡Ë¤Ë°¤¹¤ëÍ×ÁǤò½ñ¤¯¤³¤È¤Ç
¤ÎÀßÄ꤬²Äǽ¤Ç¤¹¡£ ¡¦Ì¾Á°¶õ´Ö¤ËÂФ¹¤ë̾Á°¶õ´Ö¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤Î»ØÄê(osx:namespace) °Ê²¼¤Î·Á¼°¤Ë¤Æ»ØÄê¤ò¹Ô¤¤¤Þ¤¹¡£ <osx:namespace prefix="̾Á°¶õ´Ö¥×¥ì¥Õ¥£¥Ã¥¯¥¹" uri="̾Á°¶õ´ÖURI"> uri°À¤Ï¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£¤½¤Î¾ì¹ç¡¢xs:schemaÍ×ÁǤΰÀ¤Ç¤¢¤ë@targetNamespace°À¤ÎÃͤ¬ÍѤ¤¤é¤ì¤Þ¤¹¡£¤³¤³¤Ç»ØÄꤵ¤ì¤ë̾Á°¶õ´Ö¥×¥ì¥Õ¥£¥Ã¥¯¥¹¤¬C++¥½¡¼¥¹¤Î̾Á°¶õ´Ö̾¤Ë¤Ê¤ê¤Þ¤¹¡£ <osx:namespace>¤Ï¡¢<xs:appinfo>¤Î»ÒÍ×ÁǤȤ·¤Æ½ñ¤¤¤Æ¤¯¤À¤µ¤¤¡£¤Þ¤¿¡¢<xs:annotation>¤Ï¡¢ºÇ½é¤Î<xs:complexType>¡¢¤â¤·¤¯¤Ï¡¢<xs:simpleType>¤ÎÁ°¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤¡£ Îã¡§ my_uri¤Ç»ØÄꤵ¤ì¤ë̾Á°¶õ´Ö¤ËÂФ·¤Æ¡¢Ì¾Á°¶õ´Ö¥×¥ì¥Õ¥£¥Ã¥¯¥¹¡¢my_prefix¤òÂбþÉÕ¤±¤ë¡£ <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:annotation> <xs:appinfo xmlns:osx="http://akaxiso.sourceforge.jp/osixaka2/beta2"> <osx:namespace prefix="my_prefix" uri="my_uri"/> <xs:appinfo> </xs:annotation> <!-- xs:complexType¡¢xs:simpleType¤ÎÄêµÁ ¤Ê¤É¤Ê¤É--> </xs:schema> ¡¦¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤Î»ØÄê(osx:include¡¢osx:xiso_include¡¢osx:ximpl_include) ÃÍ¥¯¥é¥¹¥Õ¥¡¥¤¥ë(osx:include)¡¢leaf¥¯¥é¥¹¤ÎÀë¸À¥Õ¥¡¥¤¥ë(osx:xiso_include)¡¢leaf¥¯¥é¥¹¤Î¼ÂÁõ¥Õ¥¡¥¤¥ë(osx:ximpl_include)¥Õ¥¡¥¤¥ëÃæ¤Ç¥Õ¥¡¥¤¥ë¤ò¥¤¥ó¥¯¥ë¡¼¥É¤¹¤ë¤¿¤á¤Î»ØÄê¤ò¹Ô¤¤¤Þ¤¹¡£ <!-- ÃÍ¥¯¥é¥¹¥Ø¥Ã¥À¤Ø¤Î¥¤¥ó¥¯¥ë¡¼¥É --> <osx:include system="true|false">¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë̾</osx:include> <!-- leaf¥¯¥é¥¹¥Ø¥Ã¥À¤Ø¤Î¥¤¥ó¥¯¥ë¡¼¥É --> <osx:xiso_include system="true|false">¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë̾</osx:xiso_include> <!-- leaf¥¯¥é¥¹¼ÂÁõ¥Õ¥¡¥¤¥ë¤Ø¤Î¥¤¥ó¥¯¥ë¡¼¥É --> <osx:ximpl_include system="true|false">¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë̾</osx:ximpl_include> ¤½¤ì¤¾¤ì¡¢@system°À(xs:boolean·¿)¤ò»ý¤Á¡¢¤³¤Î»ØÄê¤Ë¤è¤ê¡¢#include¤Î·Á¼°¤ò°Ê²¼¤Ë¼¨¤¹¤è¤¦¤ËÁªÂò¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ /* @system="true"¤¬»ØÄꤵ¤ì¤¿»þ¡¢ */ #include <¥Õ¥¡¥¤¥ë̾> /* @system="false"¤¬»ØÄꤵ¤ì¤¿»þ¡¢*/ #include "¥Õ¥¡¥¤¥ë̾" xs:include¡¢xs:xiso_include¡¢xs:ximpl_include¤Ï¡¢XML¥¹¥¡¼¥Þʸ½ñ¤Î<xs:appinfo>¤Î»ÒÍ×ÁǤȤ·¤Æ½ñ¤¤¤Æ¤¯¤À¤µ¤¤¡¢¤Þ¤¿¡¢<xs:annotation>¤Ï¡¢ºÇ½é¤Î<xs:complexType>¡¢¤â¤·¤¯¤Ï¡¢<xs:simpleType>¤ÎÁ°¤Ë½ñ¤¤¤Æ¤¯¤À¤µ¤¤¡£ <xs:schema xmlns:osx="http://akaxiso.sourceforge.jp/osixaka2/beta2" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:annotation> <xs:appinfo> <osx:include name="filename.h" system="true"/> </xs:appinfo> </xs:annotation> <!-- xs:complexType¡¢xs:simpleType¤ÎÄêµÁ¤Ê¤É¤Ê¤É¡£ --> </xs:schema> ¡¦À¸À®¤µ¤ì¤ë¥¯¥é¥¹Ì¾¤Î»ØÄê(osx:classname) xs:complexType¡¢xs:simpleType¡¢xs:sequence¡¢xs:choice¡¢xs:all¤Î°À¤È¤·¤Æ»ÈÍѲÄǽ¤Ç¤¹¡£ Ä̾Ǧºä£²¤Ï¡¢XML¥¹¥¡¼¥Þ¤Î@name°À¤ÇÍ¿¤¨¤é¤ì¤ë̾Á°¡¢¤â¤·¤¯¤Ï¡¢ÌµÌ¾¥Ñ¡¼¥Æ¥£¥¯¥ë¤ËÍ¿¤¨¤é¤ì¤ë¼«Æ°À¸À®¤µ¤ì¤¿Ì¾Á°¤ò¡¢C++¤Î¥¯¥é¥¹Ì¾¤È¤·¤ÆÍѤ¤¤Þ¤¹¡£¤³¤Î̾Á°¤ò¡¢osx:classname°À¤Ç¾å½ñ¤¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ Î㣱¡§ xs:complexType¤Ëosx:classname¤òŬÍѤ¹¤ë¡£XML¥¹¥¡¼¥Þ·¿¤Î̾Á°¤ò"schema_type"¡¢C++¤Î¥¯¥é¥¹Ì¾¤ò"cpp_type"¤È¤¹¤ë¡£ <xs:complexType name="schema_type" osx:classname="cpp_type" xmlns:osx="http://akaxiso.sourceforge.jp/osixaka2/beta2"/> Î㣲¡§ ¥Í¥¹¥È¤·¤¿ÌµÌ¾¤Îxs:sequence¤Ë¡¢C++¤Î¥¯¥é¥¹Ì¾(cpp_sequence)¤ò»ØÄꤹ¤ë¡£ <xs:complexType name="schema_type" xmlns:osx="http://akaxiso.sourceforge.jp/osixaka2/beta2"> <xs:choice> <xs:sequence osx:classname="cpp_sequence"/> </xs:choice> </xs:complexType> ¡¦¼ê¼ÂÁõ¤Ë¤è¤ëleaf¥¯¥é¥¹¤Î»ÈÍÑ(osx:leaf) ñ½ã·¿¤Î¥¯¥é¥¹¡¢leaf¥¯¥é¥¹¤òÊÌ¥Õ¥¡¥¤¥ë¤Ë¤Æ¡¢Àë¸À¡¢¼ÂÁõ¤·¤Æ¤ª¤ê¡¢¤³¤ÎÄêµÁ¤ò°úÍѤ¹¤ëºÝ¤ËÍѤ¤¤Þ¤¹¡£<xs:simpleType>¤Î°À¤È¤·¤Æ»ÈÍѲÄǽ¤Ç¤¹¡£ <xs:simpleType osx:leaf="leaf¥¯¥é¥¹Ì¾"/> osx:leaf¤ò»ÈÍѤ¹¤ëºÝ¤Ë¤Ï¡¢Ã±½ã·¿¤ÎC++ÃÍ¥¯¥é¥¹Ì¾¤Ï¡¢Ã±½ã·¿¤ÎÃÍ¥¯¥é¥¹¤ËÂФ·¤ÆÇ¦ºä£²¤¬Í¿¤¨¤ë̾Á°¤È°ìÃפ·¤Æ¤¤¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£(Îã¤ò»²¾È) Îã¡§ ¥¹¥¡¼¥ÞÃæ¤Ëñ½ã·¿(my_simpleType)¤¬¤¢¤ê¡¢¤³¤Î·¿¤ËÂФ·¤Æ¡¢ÂÅÅöÀ¸¡¾Ú¡¢¤â¤·¤¯¤Ï¡¢ÆÃ¼ì¤ÊÄɲýèÍý¤ò¼ÂÁõ¤·¤¿ÃÍ¥¯¥é¥¹(struct my_simpleType¡¢struct my_simpleType_leaf"¤¬¡¢¤¹¤Ç¤Ë¼ÂÁõ¤µ¤ì¤Æ¤¤¤ë¤â¤Î¤È¤¹¤ë¡£XML¥¹¥¡¼¥Þʸ½ñÃæ¤Ç¡¢¤³¤ì¤é¤Î¥¯¥é¥¹¤ò°úÍѤ·¡¢¥½¡¼¥¹À¸À®¤ò¹Ô¤¤¤Þ¤¹¡£Â¾¤Î¥Õ¥¡¥¤¥ë¤Ë¼ÂÁõ¤µ¤ì¤Æ¤¤¤ëñ½ã·¿¤Î¥¯¥é¥¹¡¢leaf¥¯¥é¥¹¤ò#include¤Ë¤è¤êÆÉ¤ß¹þ¤à¤¿¤á¡¢<osx:include>¡¢<osx:xiso_include>¤ÈÊ»¤»¤ÆÍѤ¤¤Þ¤¹¡£ ¡¦C++¦¤Î¼ÂÁõ ¥Õ¥¡¥¤¥ë¡§my_simpleType.h---------------------------------------------- typedef long my_simpleType; // my_simpleType¤Ï¡¢long·¿¤ÎÊÑ¿ô¤Çɽ¤µ¤ì¤ë¡£ ------------------------------------------------------------------ ¥Õ¥¡¥¤¥ë¡§my_simpleType_xiso.h ------------------------------------------- #include "my_simpleType.h" struct my_simpleType_leaf : aka::simpleType<my_simpleType, my_simpleType_leaf> { static void read_text(void *e, const std::string &entity, aka::entity_complements &ecomp); static void _write_text(const void *e, std::ostream &ostm, aka::entity_complements &ecomps); }; ------------------------------------------------------------------- ¥Õ¥¡¥¤¥ë¡§my_simpleType_xiso.cpp------------------------------------------ // my_simpleType_leaf::read_text(), my_simpleType_leaf::write_text()¤Î¼ÂÁõ ------------------------------------------------------------------- ¡¦¥¹¥¡¼¥Þ¥Õ¥¡¥¤¥ë------------------------------------------------------- <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:osx="http://akaxiso.sourceforge.jp/osixaka2/beta2"> <xs:annotation> <xs:appinfo> <osx:include>my_simpleType.h</osx:include> <osx:xiso_include>my_simpleType_leaf.h</osx:xiso_include> </xs:appinfo> </xs:annotation> <!--Î㣱 ¥È¥Ã¥×¥ì¥Ù¥ëÍ×ÁǤȤ·¤Æ¤Îxs:simpleType --> <!-- ¥È¥Ã¥×¥ì¥Ù¥ëÍ×ÁǤÎ̾Á°¤¬¤½¤Î¤Þ¤ÞC++ÃÍ¥¯¥é¥¹Ì¾¤È¤·¤Æ»È¤ï¤ì¤ë¡£ --> <xs:simpleType name="my_simpleType" osx:leaf="my_simpleType_leaf"> <!-- xs:simpleType¤Î¼ÂºÝ¤ÎÄêµÁ¡£Ç¦ºä£²¤Ç¤Ï̵»ë¤µ¤ì¤ë¡£ </xs:simpleType> <!--Î㣲 ¥í¡¼¥«¥ëÍ×ÁǤȤ·¤Æ¤Îxs:simpleType> <xs:complexType> <xs:sequence> <xs:attribute name="sample_attr"> <!-- ¥í¡¼¥«¥ë¤Êxs:simpleType¤Ï¡¢ÌµÌ¾¤Ç¤¢¤ë¤¿¤á¡¢osx:cleassname¤Ë¤ÆÌ¾Á°¤òÍ¿¤¨¤ë¡£ --> <xs:simpleType osx:classname="my_simpleType" osx:leaf="my_simpleType_leaf"/> <xs:attribute> </xs:sequence> </xs:complexType> </xs:schema> ÀßÄê¥Õ¥¡¥¤¥ë¤Ë¤è¤ë»ØÄê ÀßÄê¥Õ¥¡¥¤¥ë¤òÍѤ¤¤Æ¡¢¥Ç¥Õ¥©¥ë¥È¤ÎÀßÄê¤ò½ñ¤´¹¤¨¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£-T¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤Æ¡¢ÀßÄê¥Õ¥¡¥¤¥ë¤Î¥Æ¥ó¥×¥ì¡¼¥È¤òÀ¸À®¤¹¤ë¤³¤È¤¬¤Ç¤¤Þ¤¹¡£ $ osixaka2 -T template.xml À¸À®¤µ¤ì¤ë¥Õ¥¡¥¤¥ë(template.xml)¤ÎÆâÍÆ¤ò°Ê²¼¤Ë¤·¤á¤·¤Þ¤¹¡£ <?xml version="1.0" encoding="Shift_JIS" standalone="yes"?> <preference xmlns="http://akaxiso.sourceforge.jp/osixaka2/beta2"> <format> <member prefix="" suffix="_"/> <array container="std::list" prefix="" suffix="_array"/> <choice container="std::list"/> <simplecontent valuename="value"/> <particle_item prefix="" suffix="_item"/> </format> <substitutions> <substitution original="token_to_substitute" substituted="substituted_token"/> </substitutions> <escapes> <escape to_escape="character_to_escape" escaped="escaped_character"/> </escapes> <directives/> </preference> ¡¦¥á¥ó¥Ð¡¢¥¯¥é¥¹Ì¾¤Î¥Õ¥©¡¼¥Þ¥Ã¥È(preference/format°Ê²¼)
¡¦ÃÖ´¹(preference/substitutions¡¢preference/escapes°Ê²¼)
¡¦¥Ç¥£¥ì¥¯¥Æ¥£¥Ö(preference/directives)
¡¦ÆâÉô»ØÄê(internal) ¼ÂÁõ¾ÜºÙ¤Î¥Á¥§¥Ã¥¯Ãæ ÀßÄê¥Õ¥¡¥¤¥ë¤Î»ÈÍÑ -L¥ª¥×¥·¥ç¥ó¤òÍѤ¤¤Æ¡¢ºîÀ®¤µ¤ì¤¿ÀßÄê¥Õ¥¡¥¤¥ë¤ò»ÈÍѤ·¤Þ¤¹¡£ ÀßÄê¥Õ¥¡¥¤¥ë¤Î»ÈÍÑ $ osixaka2 -L preference.xml <XML Schema¥É¥¥å¥á¥ó¥È¥Õ¥¡¥¤¥ë̾> »ÅÍÍ¡¢À©¸Â¡¢Ì¤¼ÂÁõÉô¤Ê¤É
|
¥ê¥Õ¥¡¥ì¥ó¥¹¥È¥Ã¥×¤Ø¡¡ÀÖ»çÁÉ£²¥È¥Ã¥×¥Ú¡¼¥¸¤Ø sourceforge¥×¥í¥¸¥§¥¯¥È¥Ú¡¼¥¸¤Ø