You can subscribe to this list here.
| 2002 |
Jan
(11) |
Feb
(32) |
Mar
(18) |
Apr
(17) |
May
(52) |
Jun
(1) |
Jul
|
Aug
(9) |
Sep
|
Oct
|
Nov
|
Dec
|
|---|
|
From: Stefan T. <th...@us...> - 2002-05-21 17:22:17
|
Update of /cvsroot/xpg-xml/classes/math In directory usw-pr-cvs1:/tmp/cvs-serv530/math Log Message: Directory /cvsroot/xpg-xml/classes/math added to the repository |
|
From: Stefan T. <th...@us...> - 2002-05-21 17:20:02
|
Update of /cvsroot/xpg-xml/classes/simpledoc In directory usw-pr-cvs1:/tmp/cvs-serv530/simpledoc Log Message: Directory /cvsroot/xpg-xml/classes/simpledoc added to the repository |
|
From: Stefan T. <th...@us...> - 2002-05-21 17:17:30
|
Update of /cvsroot/xpg-xml/classes/simpledoc In directory usw-pr-cvs1:/tmp/cvs-serv821 Added Files: StateMachineConfig.xsd documentgenerator.log simpledoc.xml simpledoc.xsd simpledoc_config.xml Log Message: simple example --- NEW FILE: StateMachineConfig.xsd --- <?xml version="1.0" standalone="no"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:annotation> <xsd:documentation xml:lang="en"> StateMachineConfig.xsd Version 0.1.0 Schema describing the representation of the ConfigStatemachine This schema was validated with the tool http://www.w3.org/2001/03/webdata/xsv (04.3.2002) </xsd:documentation> </xsd:annotation> <!-- attention: all names must be adapted to the following nameing convention type names : AllWordsCapitalizedWithoutUnderscores element names : alllowercasewithoutunderscores --> <xsd:element name="statemachine"> <xsd:complexType> <xsd:sequence> <xsd:element name="path" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/> <xsd:element name="states" type="States" minOccurs="1" maxOccurs="1"/> <xsd:element name="transitions" type="Transitions" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="States"> <xsd:sequence> <xsd:element name="startstate" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="state" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Transitions"> <xsd:sequence> <xsd:element name="transition" type="Transition" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Transition"> <xsd:sequence> <xsd:element name="beginstate" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="nextstate" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="element" minOccurs="0" maxOccurs="1"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="type" type="ElementAttributes" use="required"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name="classname" type="xsd:string" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:simpleType name="ElementAttributes"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="start"/> <xsd:enumeration value="end"/> <xsd:enumeration value="enddoc"/> </xsd:restriction> </xsd:simpleType> </xsd:schema> --- NEW FILE: documentgenerator.log --- DEBUG Parser: " File ./simpledoc/simpledoc_config.xml not existing" --- NEW FILE: simpledoc.xml --- <?xml version="1.0" standalone="no"?> <doc xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="simpledoc.xsd"> <title>TEST 0</title> </doc> --- NEW FILE: simpledoc.xsd --- <?xml version="1.0" standalone="no"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="doc"> <xsd:complexType> <xsd:all> <xsd:element name="title" type="xsd:string"/> </xsd:all> </xsd:complexType> </xsd:element> </xsd:schema> --- NEW FILE: simpledoc_config.xml --- <?xml version="1.0" standalone="no"?> <statemachine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="StateMachineConfig.xsd"> <path>edu.iicm.xpg.transitions.simpledoc</path> <path>edu.iicm.xpg.transitions.simple</path> <states> <startstate>STATE_TOP_LEVEL_FILE</startstate> <state>STATE_TOP_LEVEL_DOC</state> <state>STATE_DOC_TITLE_DEF</state> <state>STATE_FINISHED</state> </states> <transitions> <transition> <beginstate>STATE_TOP_LEVEL_FILE</beginstate> <nextstate>STATE_TOP_LEVEL_DOC</nextstate> <element type="start">doc</element> <classname>WriteGeneralHeaderTransition</classname> </transition> <transition> <beginstate>STATE_TOP_LEVEL_FILE</beginstate> <nextstate>STATE_FINISHED</nextstate> <element type="enddoc" /> <classname>StopMachineTransition</classname> </transition> <transition> <beginstate>STATE_TOP_LEVEL_DOC</beginstate> <nextstate>STATE_TOP_LEVEL_FILE</nextstate> <element type="end">doc</element> <classname>WriteGeneralFooterTransition</classname> </transition> <transition> <beginstate>STATE_TOP_LEVEL_DOC</beginstate> <nextstate>STATE_DOC_TITLE_DEF</nextstate> <element type="start">title</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>STATE_DOC_TITLE_DEF</beginstate> <nextstate>STATE_DOC_TITLE_DEF</nextstate> <classname>StoreDocTitleTransition</classname> </transition> <transition> <beginstate>STATE_DOC_TITLE_DEF</beginstate> <nextstate>STATE_TOP_LEVEL_DOC</nextstate> <element type="end">title</element> <classname>WriteDocTitleTransition</classname> </transition> </transitions> </statemachine > |
|
From: Stefan T. <th...@us...> - 2002-05-21 17:15:15
|
Update of /cvsroot/xpg-xml/classes/cv In directory usw-pr-cvs1:/tmp/cvs-serv993 Added Files: StateMachineConfig.xsd cv.xml cv.xsd cv_de.xml cv_en.xml cvhtml_config.xml cvtex_config.xml Log Message: cv example --- NEW FILE: StateMachineConfig.xsd --- <?xml version="1.0" standalone="no"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:annotation> <xsd:documentation xml:lang="en"> StateMachineConfig.xsd Version 0.1.0 Schema describing the representation of the ConfigStatemachine This schema was validated with the tool http://www.w3.org/2001/03/webdata/xsv (04.3.2002) </xsd:documentation> </xsd:annotation> <!-- attention: all names must be adapted to the following nameing convention type names : AllWordsCapitalizedWithoutUnderscores element names : alllowercasewithoutunderscores --> <xsd:element name="statemachine"> <xsd:complexType> <xsd:sequence> <xsd:element name="path" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/> <xsd:element name="states" type="States" minOccurs="1" maxOccurs="1"/> <xsd:element name="transitions" type="Transitions" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="States"> <xsd:sequence> <xsd:element name="startstate" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="state" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Transitions"> <xsd:sequence> <xsd:element name="transition" type="Transition" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Transition"> <xsd:sequence> <xsd:element name="beginstate" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="nextstate" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="element" minOccurs="0" maxOccurs="1"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="type" type="ElementAttributes" use="required"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name="classname" type="xsd:string" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:simpleType name="ElementAttributes"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="start"/> <xsd:enumeration value="end"/> <xsd:enumeration value="enddoc"/> </xsd:restriction> </xsd:simpleType> </xsd:schema> --- NEW FILE: cv.xml --- <curriculum title="" lang="" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="cv.xsd"> <personal> <name></name> <birthdate></birthdate> <birthplace></birthplace> <marital status=""/> <address></address> <country></country> <phone></phone> <mobile></mobile> <email></email> <homepage></homepage> <place></place> </personal> <list> <title></title> <item caption=""></item> </list> </curriculum> --- NEW FILE: cv.xsd --- <?xml version="1.0" standalone="no"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="curriculum"> <xsd:complexType> <xsd:sequence> <xsd:element name="personal" type="Personal" /> <xsd:element name="list" type="List" minOccurs="0" maxOccurs="unbounded"/> </xsd:sequence> <xsd:attribute name="title" type="xsd:string"/> <xsd:attribute name="lang" type="Lang" default="en"/> </xsd:complexType> </xsd:element> <xsd:complexType name="Personal"> <xsd:sequence> <xsd:element name="name" type="xsd:string" /> <xsd:element name="birthdate" type="xsd:date" /> <xsd:element name="birthplace" type="xsd:string" /> <xsd:element name="marital" minOccurs="0"> <xsd:complexType> <xsd:attribute name="status" type="Maritalstatus" use="required"/> </xsd:complexType> </xsd:element> <xsd:element name="address" type="xsd:string"/> <xsd:element name="country" type="xsd:string" minOccurs="0"/> <xsd:element name="phone" type="xsd:string" minOccurs="0"/> <xsd:element name="mobile" type="xsd:string" minOccurs="0"/> <xsd:element name="email" type="xsd:string" minOccurs="0"/> <xsd:element name="homepage" type="xsd:string" minOccurs="0"/> <xsd:element name="place" type="xsd:string" minOccurs="0"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="List"> <xsd:sequence> <xsd:element name="title" type="xsd:string" minOccurs="0"/> <xsd:element name="item" maxOccurs="unbounded"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="caption" type="xsd:string" /> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> </xsd:sequence> </xsd:complexType> <xsd:simpleType name="Maritalstatus" > <xsd:restriction base="xsd:string"> <xsd:enumeration value="single"/> <xsd:enumeration value="married"/> <xsd:enumeration value="divorced"/> </xsd:restriction> </xsd:simpleType> <xsd:simpleType name="Lang" > <xsd:restriction base="xsd:string"> <xsd:enumeration value="en"/> <xsd:enumeration value="de"/> </xsd:restriction> </xsd:simpleType> </xsd:schema> --- NEW FILE: cv_de.xml --- <?xml version="1.0" standalone="no"?> <curriculum xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="cv.xsd" lang="de"> <personal> <name>Günther Brand</name> <birthdate>1975-08-27</birthdate> <birthplace>Wolfsberg</birthplace> <marital status="single"/> <address>Elisabethstraße 85 W220, 8010 Graz</address> <country>Austria</country> <phone>phone</phone> <mobile>mobile</mobile> <email>email</email> <homepage>homepage</homepage> <place>Graz</place> </personal> <list> <title>Schulausbildung</title> <item caption="09/1981-07/1985">Volksschule</item> <item caption="09/1985-07/1989">AHS St. Paul</item> </list> <list> <title>Studium</title> <item caption="seit 03/1995">Telematik TU-Graz</item> </list> </curriculum> --- NEW FILE: cv_en.xml --- <?xml version="1.0" standalone="no"?> <curriculum xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="cv.xsd" lang="en"> <personal> <name>Günther Brand</name> <birthdate>1975-08-27</birthdate> <birthplace>Wolfsberg</birthplace> <marital status="single"/> <address>Elisabethstraße 85 W220, 8010 Graz</address> <country>Austria</country> <phone>phone</phone> <mobile>mobile</mobile> <email>email</email> <homepage>homepage</homepage> <place>Graz</place> </personal> <list> <title>Schulausbildung</title> <item caption="09/1981-07/1985">Volksschule</item> <item caption="09/1985-07/1989">AHS St. Paul</item> </list> <list> <title>Studium</title> <item caption="seit 03/1995">Telematik TU-Graz</item> </list> </curriculum> --- NEW FILE: cvhtml_config.xml --- <?xml version="1.0" standalone="no"?> <statemachine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="StateMachineConfig.xsd"> <path>edu.iicm.xpg.transitions.cvhtml</path> <path>edu.iicm.xpg.transitions.simple</path> <states> <startstate>file top</startstate> <state>doc top</state> <state>personal</state> <state>list</state> <state>name</state> <state>birthdate</state> <state>birthplace</state> <state>marital</state> <state>address</state> <state>country</state> <state>phone</state> <state>mobile</state> <state>email</state> <state>homepage</state> <state>place</state> <state>listtitle</state> <state>listitem</state> <state>finished</state> </states> <transitions> <transition> <beginstate>file top</beginstate> <nextstate>doc top</nextstate> <element type="start">curriculum</element> <classname>WriteGeneralHeaderTransition</classname> </transition> <transition> <beginstate>file top</beginstate> <nextstate>finished</nextstate> <element type="enddoc" /> <classname>StopMachineTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>file top</nextstate> <element type="end">curriculum</element> <classname>WriteGeneralFooterTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>personal</nextstate> <element type="start">personal</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>list</nextstate> <element type="start">list</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>doc top</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>doc top</nextstate> <element type="end">personal</element> <classname>WritePersonalTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>name</nextstate> <element type="start">name</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>birthdate</nextstate> <element type="start">birthdate</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>birthplace</nextstate> <element type="start">birthplace</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>marital</nextstate> <element type="start">marital</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>address</nextstate> <element type="start">address</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>country</nextstate> <element type="start">country</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>phone</nextstate> <element type="start">phone</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>mobile</nextstate> <element type="start">mobile</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>email</nextstate> <element type="start">email</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>homepage</nextstate> <element type="start">homepage</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>place</nextstate> <element type="start">place</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>name</beginstate> <nextstate>personal</nextstate> <element type="end">name</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>name</beginstate> <nextstate>name</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>birthdate</beginstate> <nextstate>personal</nextstate> <element type="end">birthdate</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>birthdate</beginstate> <nextstate>birthdate</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>birthplace</beginstate> <nextstate>personal</nextstate> <element type="end">birthplace</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>birthplace</beginstate> <nextstate>birthplace</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>marital</beginstate> <nextstate>personal</nextstate> <element type="end">marital</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>marital</beginstate> <nextstate>marital</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>address</beginstate> <nextstate>personal</nextstate> <element type="end">address</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>address</beginstate> <nextstate>address</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>country</beginstate> <nextstate>personal</nextstate> <element type="end">country</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>country</beginstate> <nextstate>country</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>phone</beginstate> <nextstate>personal</nextstate> <element type="end">phone</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>phone</beginstate> <nextstate>phone</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>mobile</beginstate> <nextstate>personal</nextstate> <element type="end">mobile</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>mobile</beginstate> <nextstate>mobile</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>email</beginstate> <nextstate>personal</nextstate> <element type="end">email</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>email</beginstate> <nextstate>email</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>homepage</beginstate> <nextstate>personal</nextstate> <element type="end">homepage</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>homepage</beginstate> <nextstate>homepage</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>place</beginstate> <nextstate>personal</nextstate> <element type="end">place</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>place</beginstate> <nextstate>place</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>list</beginstate> <nextstate>doc top</nextstate> <element type="end">list</element> <classname>WriteListTransition</classname> </transition> <transition> <beginstate>list</beginstate> <nextstate>listtitle</nextstate> <element type="start">title</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>list</beginstate> <nextstate>listitem</nextstate> <element type="start">item</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>list</beginstate> <nextstate>list</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>listtitle</beginstate> <nextstate>list</nextstate> <element type="end">title</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>listtitle</beginstate> <nextstate>listtitle</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>listitem</beginstate> <nextstate>list</nextstate> <element type="end">item</element> <classname>StoreListItemTransition</classname> </transition> <transition> <beginstate>listitem</beginstate> <nextstate>listitem</nextstate> <classname>IgnoreCharsTransition</classname> </transition> </transitions> </statemachine > --- NEW FILE: cvtex_config.xml --- <?xml version="1.0" standalone="no"?> <statemachine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="StateMachineConfig.xsd"> <path>edu.iicm.xpg.transitions.cvlatex</path> <path>edu.iicm.xpg.transitions.simple</path> <states> <startstate>file top</startstate> <state>doc top</state> <state>personal</state> <state>list</state> <state>name</state> <state>birthdate</state> <state>birthplace</state> <state>marital</state> <state>address</state> <state>country</state> <state>phone</state> <state>mobile</state> <state>email</state> <state>homepage</state> <state>place</state> <state>listtitle</state> <state>listitem</state> <state>finished</state> </states> <transitions> <transition> <beginstate>file top</beginstate> <nextstate>doc top</nextstate> <element type="start">curriculum</element> <classname>WriteGeneralHeaderTransition</classname> </transition> <transition> <beginstate>file top</beginstate> <nextstate>finished</nextstate> <element type="enddoc" /> <classname>StopMachineTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>file top</nextstate> <element type="end">curriculum</element> <classname>WriteGeneralFooterTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>personal</nextstate> <element type="start">personal</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>list</nextstate> <element type="start">list</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>doc top</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>doc top</nextstate> <element type="end">personal</element> <classname>WritePersonalTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>name</nextstate> <element type="start">name</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>birthdate</nextstate> <element type="start">birthdate</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>birthplace</nextstate> <element type="start">birthplace</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>marital</nextstate> <element type="start">marital</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>address</nextstate> <element type="start">address</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>country</nextstate> <element type="start">country</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>phone</nextstate> <element type="start">phone</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>mobile</nextstate> <element type="start">mobile</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>email</nextstate> <element type="start">email</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>homepage</nextstate> <element type="start">homepage</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>personal</beginstate> <nextstate>place</nextstate> <element type="start">place</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>name</beginstate> <nextstate>personal</nextstate> <element type="end">name</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>name</beginstate> <nextstate>name</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>birthdate</beginstate> <nextstate>personal</nextstate> <element type="end">birthdate</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>birthdate</beginstate> <nextstate>birthdate</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>birthplace</beginstate> <nextstate>personal</nextstate> <element type="end">birthplace</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>birthplace</beginstate> <nextstate>birthplace</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>marital</beginstate> <nextstate>personal</nextstate> <element type="end">marital</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>marital</beginstate> <nextstate>marital</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>address</beginstate> <nextstate>personal</nextstate> <element type="end">address</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>address</beginstate> <nextstate>address</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>country</beginstate> <nextstate>personal</nextstate> <element type="end">country</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>country</beginstate> <nextstate>country</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>phone</beginstate> <nextstate>personal</nextstate> <element type="end">phone</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>phone</beginstate> <nextstate>phone</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>mobile</beginstate> <nextstate>personal</nextstate> <element type="end">mobile</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>mobile</beginstate> <nextstate>mobile</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>email</beginstate> <nextstate>personal</nextstate> <element type="end">email</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>email</beginstate> <nextstate>email</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>homepage</beginstate> <nextstate>personal</nextstate> <element type="end">homepage</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>homepage</beginstate> <nextstate>homepage</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>place</beginstate> <nextstate>personal</nextstate> <element type="end">place</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>place</beginstate> <nextstate>place</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>list</beginstate> <nextstate>doc top</nextstate> <element type="end">list</element> <classname>WriteListTransition</classname> </transition> <transition> <beginstate>list</beginstate> <nextstate>listtitle</nextstate> <element type="start">title</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>list</beginstate> <nextstate>listitem</nextstate> <element type="start">item</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>list</beginstate> <nextstate>list</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>listtitle</beginstate> <nextstate>list</nextstate> <element type="end">title</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>listtitle</beginstate> <nextstate>listtitle</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>listitem</beginstate> <nextstate>list</nextstate> <element type="end">item</element> <classname>StoreListItemTransition</classname> </transition> <transition> <beginstate>listitem</beginstate> <nextstate>listitem</nextstate> <classname>IgnoreCharsTransition</classname> </transition> </transitions> </statemachine > |
|
From: Stefan T. <th...@us...> - 2002-05-21 17:12:58
|
Update of /cvsroot/xpg-xml/classes/latex In directory usw-pr-cvs1:/tmp/cvs-serv1397 Added Files: StateMachineConfig.xsd latex.xsd latex1.xml latex1.xml.~1~ latex2.xml latex2.xml.~1~ latex_config.xml Log Message: latex example --- NEW FILE: StateMachineConfig.xsd --- <?xml version="1.0" standalone="no"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:annotation> <xsd:documentation xml:lang="en"> StateMachineConfig.xsd Version 0.1.0 Schema describing the representation of the ConfigStatemachine This schema was validated with the tool http://www.w3.org/2001/03/webdata/xsv (04.3.2002) </xsd:documentation> </xsd:annotation> <!-- attention: all names must be adapted to the following nameing convention type names : AllWordsCapitalizedWithoutUnderscores element names : alllowercasewithoutunderscores --> <xsd:element name="statemachine"> <xsd:complexType> <xsd:sequence> <xsd:element name="path" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/> <xsd:element name="states" type="States" minOccurs="1" maxOccurs="1"/> <xsd:element name="transitions" type="Transitions" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="States"> <xsd:sequence> <xsd:element name="startstate" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="state" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Transitions"> <xsd:sequence> <xsd:element name="transition" type="Transition" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Transition"> <xsd:sequence> <xsd:element name="beginstate" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="nextstate" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="element" minOccurs="0" maxOccurs="1"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="type" type="ElementAttributes" use="required"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name="classname" type="xsd:string" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:simpleType name="ElementAttributes"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="start"/> <xsd:enumeration value="end"/> <xsd:enumeration value="enddoc"/> </xsd:restriction> </xsd:simpleType> </xsd:schema> --- NEW FILE: latex.xsd --- <?xml version="1.0" standalone="no"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="document"> <xsd:complexType> <xsd:sequence> <xsd:choice> <xsd:element name="title" type="xsd:string" /> <xsd:element name="docinfo" type="DocInfo" /> </xsd:choice> <xsd:element name="sect" type="Sect" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="DocInfo"> <xsd:sequence> <xsd:element name="title" type="xsd:string" /> <xsd:element name="author" type="xsd:string" minOccurs="0" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Sect"> <xsd:sequence> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element name="para" type="xsd:string" /> <xsd:element name="list" type="List" /> </xsd:choice> <xsd:element name="sect" type="Sect" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> <xsd:attribute name="title" type="xsd:string" use="required" /> </xsd:complexType> <xsd:complexType name="List"> <xsd:sequence> <xsd:element name="item" maxOccurs="unbounded" /> </xsd:sequence> <xsd:attribute name="eval" type="xsd:string" /> </xsd:complexType> </xsd:schema> --- NEW FILE: latex1.xml --- <?xml version="1.0" standalone="no"?> <document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="latex.xsd"> <docinfo> <title>TEST 1</title> <author>Guenther Brand</author> </docinfo> <sect title="erstes Kapitel"> <para> Der erste Abschnitt. </para> </sect> <sect title="zweites Kapitel"> <para> Der zweite Abschnitt. </para> </sect> </document> --- NEW FILE: latex1.xml.~1~ --- <?xml version="1.0" standalone="no"?> <document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Test1.xsd"> <docinfo> <title>TEST 1</title> <author>Guenther Brand</author> </docinfo> <sect title="erstes Kapitel"> <para> Der erste Abschnitt. </para> </sect> <sect title="zweites Kapitel"> <para> Der zweite Abschnitt. </para> </sect> </document> --- NEW FILE: latex2.xml --- <?xml version="1.0" standalone="no"?> <document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="latex.xsd"> <docinfo> <title>TEST 1</title> <author>Guenther Brand</author> </docinfo> <sect title="erstes Kapitel"> <para> Der erste Abschnitt. </para> <sect title="zweites Kapitel"> <para> Der zweite Abschnitt. </para> </sect> </sect> </document> --- NEW FILE: latex2.xml.~1~ --- <?xml version="1.0" standalone="no"?> <document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Test1.xsd"> <docinfo> <title>TEST 1</title> <author>Guenther Brand</author> </docinfo> <sect title="erstes Kapitel"> <para> Der erste Abschnitt. </para> <sect title="zweites Kapitel"> <para> Der zweite Abschnitt. </para> </sect> </sect> </document> --- NEW FILE: latex_config.xml --- <?xml version="1.0" standalone="no"?> <statemachine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="StateMachineConfig.xsd"> <path>edu.iicm.xpg.transitions.latex</path> <path>edu.iicm.xpg.transitions.simple</path> <states> <startstate>file top</startstate> <state>doc top</state> <state>doc info def</state> <state>doc title def</state> <state>info title def</state> <state>doc author def</state> <state>sect def</state> <state>sub sect def</state> <state>para</state> <state>sub para</state> <state>list def</state> <state>list item</state> <state>finished</state> </states> <transitions> <transition> <beginstate>file top</beginstate> <nextstate>doc top</nextstate> <element type="start">document</element> <classname>WriteGeneralHeaderTransition</classname> </transition> <transition> <beginstate>file top</beginstate> <nextstate>finished</nextstate> <element type="enddoc" /> <classname>StopMachineTransition</classname> </transition> <transition> <beginstate>file top</beginstate> <nextstate>file top</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>file top</nextstate> <element type="end">document</element> <classname>WriteGeneralFooterTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>doc title def</nextstate> <element type="start">title</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>doc info def</nextstate> <element type="start">docinfo</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>sect def</nextstate> <element type="start">sect</element> <classname>WriteSectHeaderTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>doc top</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>doc info def</beginstate> <nextstate>doc top</nextstate> <element type="end">docinfo</element> <classname>WriteHeaderTransition</classname> </transition> <transition> <beginstate>doc info def</beginstate> <nextstate>info title def</nextstate> <element type="start">title</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>doc info def</beginstate> <nextstate>doc author def</nextstate> <element type="start">author</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>doc info def</beginstate> <nextstate>doc info def</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>doc title def</beginstate> <nextstate>doc top</nextstate> <element type="end">title</element> <classname>WriteHeaderTransition</classname> </transition> <transition> <beginstate>doc title def</beginstate> <nextstate>doc title def</nextstate> <classname>StoreDocTitleTransition</classname> </transition> <transition> <beginstate>info title def</beginstate> <nextstate>doc info def</nextstate> <element type="end">title</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>info title def</beginstate> <nextstate>info title def</nextstate> <classname>StoreDocTitleTransition</classname> </transition> <transition> <beginstate>doc author def</beginstate> <nextstate>doc info def</nextstate> <element type="end">author</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>doc author def</beginstate> <nextstate>doc author def</nextstate> <classname>StoreDocAuthorTransition</classname> </transition> <transition> <beginstate>sect def</beginstate> <nextstate>doc top</nextstate> <element type="end">sect</element> <classname>SectEndTransition</classname> </transition> <transition> <beginstate>sect def</beginstate> <nextstate>para</nextstate> <element type="start">para</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>sect def</beginstate> <nextstate>list def</nextstate> <element type="start">list</element> <classname>WriteListHeaderTransition</classname> </transition> <transition> <beginstate>sect def</beginstate> <nextstate>sub sect def</nextstate> <element type="start">sect</element> <classname>WriteSectHeaderTransition</classname> </transition> <transition> <beginstate>sect def</beginstate> <nextstate>sect def</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>sub sect def</beginstate> <nextstate>sect def</nextstate> <element type="end">sect</element> <classname>SectEndTransition</classname> </transition> <transition> <beginstate>sub sect def</beginstate> <nextstate>sub para</nextstate> <element type="start">para</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>sub sect def</beginstate> <nextstate>sub sect def</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>para</beginstate> <nextstate>sect def</nextstate> <element type="end">para</element> <classname>WriteParaTransition</classname> </transition> <transition> <beginstate>para</beginstate> <nextstate>para</nextstate> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>sub para</beginstate> <nextstate>sub sect def</nextstate> <element type="end">para</element> <classname>WriteParaTransition</classname> </transition> <transition> <beginstate>sub para</beginstate> <nextstate>sub para</nextstate> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>list def</beginstate> <nextstate>sect def</nextstate> <element type="end">list</element> <classname>WriteListTransition</classname> </transition> <transition> <beginstate>list def</beginstate> <nextstate>list item</nextstate> <element type="start">item</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>list def</beginstate> <nextstate>list def</nextstate> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>list item</beginstate> <nextstate>list def</nextstate> <element type="end">item</element> <classname>WriteItemTransition</classname> </transition> <transition> <beginstate>list item</beginstate> <nextstate>list item</nextstate> <classname>PrimitiveTransition</classname> </transition> </transitions> </statemachine > |
|
From: Stefan T. <th...@us...> - 2002-05-21 17:10:25
|
Update of /cvsroot/xpg-xml/classes/math In directory usw-pr-cvs1:/tmp/cvs-serv1617 Added Files: StateMachineConfig.xsd math.xml math.xml.~1~ math.xsd math_config.xml Log Message: math example --- NEW FILE: StateMachineConfig.xsd --- <?xml version="1.0" standalone="no"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:annotation> <xsd:documentation xml:lang="en"> StateMachineConfig.xsd Version 0.1.0 Schema describing the representation of the ConfigStatemachine This schema was validated with the tool http://www.w3.org/2001/03/webdata/xsv (04.3.2002) </xsd:documentation> </xsd:annotation> <!-- attention: all names must be adapted to the following nameing convention type names : AllWordsCapitalizedWithoutUnderscores element names : alllowercasewithoutunderscores --> <xsd:element name="statemachine"> <xsd:complexType> <xsd:sequence> <xsd:element name="path" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/> <xsd:element name="states" type="States" minOccurs="1" maxOccurs="1"/> <xsd:element name="transitions" type="Transitions" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="States"> <xsd:sequence> <xsd:element name="startstate" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="state" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Transitions"> <xsd:sequence> <xsd:element name="transition" type="Transition" minOccurs="1" maxOccurs="unbounded"/> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Transition"> <xsd:sequence> <xsd:element name="beginstate" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="nextstate" type="xsd:string" minOccurs="1" maxOccurs="1"/> <xsd:element name="element" minOccurs="0" maxOccurs="1"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="type" type="ElementAttributes" use="required"/> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> <xsd:element name="classname" type="xsd:string" minOccurs="1" maxOccurs="1"/> </xsd:sequence> </xsd:complexType> <xsd:simpleType name="ElementAttributes"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="start"/> <xsd:enumeration value="end"/> <xsd:enumeration value="enddoc"/> </xsd:restriction> </xsd:simpleType> </xsd:schema> --- NEW FILE: math.xml --- <?xml version="1.0" standalone="no"?> <document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="math.xsd"> <docinfo> <title>TEST 2</title> <author>Guenther Brand</author> </docinfo> <sect title="einfache Rechenbeispiele"> <para> normale Liste ohne Berechnungen: </para> <list> <item>Hier</item> <item>kann</item> <item>jegliche</item> <item>Aufzählung</item> <item>erfolgen</item> </list> <para> Liste mit Summe: </para> <list eval="sum"> <item>3.7</item> <item>2.8</item> <item>13.2</item> </list> <para> Liste mit Durchschnitt: </para> <list eval="avg"> <item>5</item> <item>2.8</item> <item>13.2</item> </list> <para> Liste mit illegaler Summe: </para> <list eval="sum"> <item>3.7</item> <item>2.8</item> <item>13.2</item> <item>illegal</item> </list> </sect> </document> --- NEW FILE: math.xml.~1~ --- <?xml version="1.0" standalone="no"?> <!-- document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Test1.xsd" --> <document> <docinfo> <title>TEST 2</title> <author>Guenther Brand</author> </docinfo> <sect title="einfache Rechenbeispiele"> <para> normale Liste ohne Berechnungen: </para> <list> <item>Hier</item> <item>kann</item> <item>jegliche</item> <item>Aufzählung</item> <item>erfolgen</item> </list> <para> Liste mit Summe: </para> <list eval="sum"> <item>3.7</item> <item>2.8</item> <item>13.2</item> </list> <para> Liste mit Durchschnitt: </para> <list eval="avg"> <item>5</item> <item>2.8</item> <item>13.2</item> </list> <para> Liste mit illegaler Summe: </para> <list eval="sum"> <item>3.7</item> <item>2.8</item> <item>13.2</item> <item>illegal</item> </list> </sect> </document> --- NEW FILE: math.xsd --- <?xml version="1.0" standalone="no"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="document"> <xsd:complexType> <xsd:sequence> <xsd:choice> <xsd:element name="title" type="xsd:string" /> <xsd:element name="docinfo" type="DocInfo" /> </xsd:choice> <xsd:element name="sect" type="Sect" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="DocInfo"> <xsd:sequence> <xsd:element name="title" type="xsd:string" /> <xsd:element name="author" type="xsd:string" minOccurs="0" /> </xsd:sequence> </xsd:complexType> <xsd:complexType name="Sect"> <xsd:sequence> <xsd:choice minOccurs="0" maxOccurs="unbounded"> <xsd:element name="para" type="xsd:string" /> <xsd:element name="list" type="List" /> </xsd:choice> <xsd:element name="sect" type="Sect" minOccurs="0" maxOccurs="unbounded" /> </xsd:sequence> <xsd:attribute name="title" type="xsd:string" use="required" /> </xsd:complexType> <xsd:complexType name="List"> <xsd:sequence> <xsd:element name="item" maxOccurs="unbounded" /> </xsd:sequence> <xsd:attribute name="eval" type="xsd:string" /> </xsd:complexType> </xsd:schema> --- NEW FILE: math_config.xml --- <?xml version="1.0" standalone="no"?> <statemachine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="StateMachineConfig.xsd"> <path>edu.iicm.xpg.transitions.latex</path> <path>edu.iicm.xpg.transitions.simple</path> <states> <startstate>file top</startstate> <state>doc top</state> <state>doc info def</state> <state>doc title def</state> <state>info title def</state> <state>doc author def</state> <state>sect def</state> <state>sub sect def</state> <state>para</state> <state>sub para</state> <state>list def</state> <state>list item</state> <state>finished</state> </states> <transitions> <transition> <beginstate>file top</beginstate> <nextstate>doc top</nextstate> <element type="start">document</element> <classname>WriteGeneralHeaderTransition</classname> </transition> <transition> <beginstate>file top</beginstate> <nextstate>finished</nextstate> <element type="enddoc" /> <classname>StopMachineTransition</classname> </transition> <transition> <beginstate>file top</beginstate> <nextstate>file top</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>file top</nextstate> <element type="end">document</element> <classname>WriteGeneralFooterTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>doc title def</nextstate> <element type="start">title</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>doc info def</nextstate> <element type="start">docinfo</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>sect def</nextstate> <element type="start">sect</element> <classname>WriteSectHeaderTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>doc top</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>doc info def</beginstate> <nextstate>doc top</nextstate> <element type="end">docinfo</element> <classname>WriteHeaderTransition</classname> </transition> <transition> <beginstate>doc info def</beginstate> <nextstate>info title def</nextstate> <element type="start">title</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>doc info def</beginstate> <nextstate>doc author def</nextstate> <element type="start">author</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>doc info def</beginstate> <nextstate>doc info def</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>doc title def</beginstate> <nextstate>doc top</nextstate> <element type="end">title</element> <classname>WriteHeaderTransition</classname> </transition> <transition> <beginstate>doc title def</beginstate> <nextstate>doc title def</nextstate> <classname>StoreDocTitleTransition</classname> </transition> <transition> <beginstate>info title def</beginstate> <nextstate>doc info def</nextstate> <element type="end">title</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>info title def</beginstate> <nextstate>info title def</nextstate> <classname>StoreDocTitleTransition</classname> </transition> <transition> <beginstate>doc author def</beginstate> <nextstate>doc info def</nextstate> <element type="end">author</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>doc author def</beginstate> <nextstate>doc author def</nextstate> <classname>StoreDocAuthorTransition</classname> </transition> <transition> <beginstate>sect def</beginstate> <nextstate>doc top</nextstate> <element type="end">sect</element> <classname>SectEndTransition</classname> </transition> <transition> <beginstate>sect def</beginstate> <nextstate>para</nextstate> <element type="start">para</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>sect def</beginstate> <nextstate>list def</nextstate> <element type="start">list</element> <classname>WriteListHeaderTransition</classname> </transition> <transition> <beginstate>sect def</beginstate> <nextstate>sub sect def</nextstate> <element type="start">sect</element> <classname>WriteSectHeaderTransition</classname> </transition> <transition> <beginstate>sect def</beginstate> <nextstate>sect def</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>sub sect def</beginstate> <nextstate>sect def</nextstate> <element type="end">sect</element> <classname>SectEndTransition</classname> </transition> <transition> <beginstate>sub sect def</beginstate> <nextstate>sub para</nextstate> <element type="start">para</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>sub sect def</beginstate> <nextstate>sub sect def</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>para</beginstate> <nextstate>sect def</nextstate> <element type="end">para</element> <classname>WriteParaTransition</classname> </transition> <transition> <beginstate>para</beginstate> <nextstate>para</nextstate> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>sub para</beginstate> <nextstate>sub sect def</nextstate> <element type="end">para</element> <classname>WriteParaTransition</classname> </transition> <transition> <beginstate>sub para</beginstate> <nextstate>sub para</nextstate> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>list def</beginstate> <nextstate>sect def</nextstate> <element type="end">list</element> <classname>WriteListTransition</classname> </transition> <transition> <beginstate>list def</beginstate> <nextstate>list item</nextstate> <element type="start">item</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>list def</beginstate> <nextstate>list def</nextstate> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>list item</beginstate> <nextstate>list def</nextstate> <element type="end">item</element> <classname>WriteItemTransition</classname> </transition> <transition> <beginstate>list item</beginstate> <nextstate>list item</nextstate> <classname>PrimitiveTransition</classname> </transition> </transitions> </statemachine > |
|
From: Edmund H. <so...@us...> - 2002-05-21 01:12:17
|
Update of /cvsroot/xpg-xml/doc
In directory usw-pr-cvs1:/tmp/cvs-serv8537
Modified Files:
Seminarbericht.bib Seminarbericht.gdf Seminarbericht.tex
Log Message:
seminarbericht update.
Index: Seminarbericht.bib
===================================================================
RCS file: /cvsroot/xpg-xml/doc/Seminarbericht.bib,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Seminarbericht.bib 18 May 2002 22:07:27 -0000 1.1
--- Seminarbericht.bib 21 May 2002 01:12:10 -0000 1.2
***************
*** 1,2 ****
--- 1,185 ----
+
+ @Booklet{akswe,
+ title = {AK-Softwareentwicklung - Programming for Large Libraries},
+ OPTkey = {},
+ author = {K. Schmaranz},
+ howpublished = {online},
+ OPTaddress = {},
+ month = {03},
+ year = {2001},
+ note = {available online \url{http://courses.iicm.edu/ak_swent/AKSWE_Skriptum.pdf}},
+ OPTannote = {}
+ }
+
+ @Misc{ chart2d,
+ author = {Jason Simas},
+ title = {Chart2D - Java Package},
+ OPTinstitution = {},
+ year = {2002},
+ OPTkey = {},
+ OPTtype = {},
+ OPTnumber = {},
+ OPTaddress = {},
+ month = {January},
+ note = {available online \url{http://sourceforge.net/projects/chart2d}},
+ OPTannote = {}
+ }
+
+
+ @Misc{ spec-css,
+ author = {Bert Bos, Hakon Wium Lie, Chris Lilley and Ian Jacobs (Editors)},
+ title = {Cascading Style Sheets, level 2, CSS2 Specification},
+ institution = {World Wide Web Consortium (W3C)},
+ year = {1998},
+ OPTkey = {},
+ OPTtype = {},
+ OPTnumber = {},
+ OPTaddress = {},
+ month = {May},
+ note = {available online \url{http://www.w3.org/TR/REC-CSS2}},
+ OPTannote = {}
+ }
+
+ @Misc{ rec-xlink,
+ author = {Steve DeRose, Eve Maler and David Orchard (Editors)},
+ title = {XML Linking Language (XLink) Version 1.0},
+ institution = {World Wide Web Consortium (W3C)},
+ year = {2001},
+ OPTkey = {},
+ OPTtype = {},
+ OPTnumber = {},
+ OPTaddress = {},
+ month = {June},
+ note = {available online \url{http://www.w3.org/TR/xlink}},
+ OPTannote = {}
+ }
+
+ @Misc{ rec-xpointer,
+ author = {Steve DeRose, Eve Maler and Ron Daniel Jr. (Editors)},
+ title = {XML Pointer Language (XPointer) Version 1.0},
+ institution = {World Wide Web Consortium (W3C)},
+ year = {2001},
+ OPTkey = {},
+ OPTtype = {},
+ OPTnumber = {},
+ OPTaddress = {},
+ month = {January},
+ note = {available online \url{http://www.w3.org/TR/WD-xptr}},
+ OPTannote = {}
+ }
+
+ @Misc{ rec-xpath,
+ author = {James Clark and Steve DeRose (Editors)},
+ title = {XML Path Language (XPath)},
+ institution = {World Wide Web Consortium (W3C)},
+ year = {1999},
+ OPTkey = {},
+ OPTtype = {},
+ OPTnumber = {},
+ OPTaddress = {},
+ month = {November},
+ note = {available online \url{http://www.w3.org/TR/xpath}},
+ OPTannote = {}
+ }
+
+ @Misc{ rec-xslt,
+ author = {Michael Kay (Editors)},
+ title = {XSL Transformations (XSLT), Version 2.0},
+ institution = {World Wide Web Consortium (W3C)},
+ year = {2002},
+ OPTkey = {},
+ OPTtype = {},
+ OPTnumber = {},
+ OPTaddress = {},
+ month = {April},
+ note = {available online \url{http://www.w3.org/TR/xslt20}},
+ OPTannote = {}
+ }
+
+ @Misc{ spec-dom,
+ author = {Arnaud Le Hors, Philippe Le Hegaret, Lauren Wood, Gavin Nicol, Jonathan Robie, Mike Champion and Steve Byrne (Editors)},
+ title = {Document Object Model (DOM) Level 3 Core Specification},
+ institution = {World Wide Web Consortium (W3C)},
+ year = {2002},
+ OPTkey = {},
+ OPTtype = {},
+ OPTnumber = {},
+ OPTaddress = {},
+ month = {April},
+ note = {available online \url{http://www.w3.org/TR/2002/WD-DOM-Level-3-Core-20020409}},
+ OPTannote = {}
+ }
+
+ @Misc{ spec-svg,
+ author = {Jon Ferraiolo (Editors)},
+ title = {Scalable Vector Graphics (SVG) 1.0 Specification},
+ institution = {World Wide Web Consortium (W3C)},
+ year = {2001},
+ OPTkey = {},
+ OPTtype = {},
+ OPTnumber = {},
+ OPTaddress = {},
+ month = {September},
+ note = {available online \url{http://www.w3.org/TR/SVG}},
+ OPTannote = {}
+ }
+
+ @Misc{ spec-mathml,
+ author = {David Carlisle, Patrick Ion, Robert Miner and Nico Poppelier (Editors)},
+ title = {Mathematical Markup Language (MathML) Version 2.0},
+ institution = {World Wide Web Consortium (W3C)},
+ year = {2001},
+ OPTkey = {},
+ OPTtype = {},
+ OPTnumber = {},
+ OPTaddress = {},
+ month = {February},
+ note = {available online \url{http://www.w3.org/TR/MathML2/}},
+ OPTannote = {}
+ }
+
+ @Misc{ rec-namespaces,
+ author = {Tim Bray, Dave Hollander, Andrew Layman (Editors)},
+ title = {Namespaces in XML},
+ institution = {World Wide Web Consortium (W3C)},
+ year = {1999},
+ OPTkey = {},
+ OPTtype = {},
+ OPTnumber = {},
+ OPTaddress = {},
+ month = {January},
+ note = {available online \url{http://www.w3.org/TR/REC-xml-names}},
+ OPTannote = {}
+ }
+
+ @Misc{ spec-smil,
+ author = {Philipp Hoschka (Editors)},
+ title = {Synchronized Multimedia Integration Language (SMIL) 1.0 Specification},
+ institution = {World Wide Web Consortium (W3C)},
+ year = {1998},
+ OPTkey = {},
+ OPTtype = {},
+ OPTnumber = {},
+ OPTaddress = {},
+ month = {April},
+ note = {available online \url{http://www.w3.org/TR/1998/PR-smil-19980409}},
+ OPTannote = {}
+ }
+
+ @Misc{ spec-widl,
+ author = {Phillip Merrick and Charles Allen},
+ title = {Web Interface Definition Language (WIDL)},
+ institution = {World Wide Web Consortium (W3C)},
+ year = {1997},
+ OPTkey = {},
+ OPTtype = {},
+ OPTnumber = {},
+ OPTaddress = {},
+ month = {September},
+ note = {available online \url{http://www.w3.org/TR/NOTE-widl}},
+ OPTannote = {}
+ }
+
+
@Misc{Braille:Iso11548,
OPTkey = {},
***************
*** 165,168 ****
--- 348,365 ----
OPTyear = {},
note = {available online \url{http://xml.apache.org/xerces2-j/}},
+ OPTannote = {}
+ }
+
+ @TechReport{rec-schema2,
+ author = {P. Biron and A. Malhotra (Editors)},
+ title = {XML Schema Part 2: Datatypes},
+ institution = {World Wide Web Consortium (W3C)},
+ year = {2001},
+ OPTkey = {},
+ OPTtype = {},
+ OPTnumber = {},
+ OPTaddress = {},
+ month = {May},
+ note = {available online \url{http://www.w3.org/TR/xmlschema-2/}},
OPTannote = {}
}
Index: Seminarbericht.gdf
===================================================================
RCS file: /cvsroot/xpg-xml/doc/Seminarbericht.gdf,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** Seminarbericht.gdf 19 May 2002 18:45:27 -0000 1.2
--- Seminarbericht.gdf 21 May 2002 01:12:10 -0000 1.3
***************
*** 51,54 ****
--- 51,57 ----
%------------------------------------------------------------
+ @entry{ac:Cv, CV, Curriculum Vitae}
+
+ %------------------------------------------------------------
@entry{ac:Darpa, DARPA, Defense Advanced Research Projects Agency}
***************
*** 202,207 ****
%------------------------------------------------------------
! @entry{ac:Ps, PS, PostScript}
%------------------------------------------------------------
--- 205,212 ----
%------------------------------------------------------------
! @entry{ac:Png, PNG, Portable Network Graphics}
+ %------------------------------------------------------------
+ @entry{ac:Ps, PS, PostScript}
%------------------------------------------------------------
Index: Seminarbericht.tex
===================================================================
RCS file: /cvsroot/xpg-xml/doc/Seminarbericht.tex,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** Seminarbericht.tex 19 May 2002 18:45:27 -0000 1.3
--- Seminarbericht.tex 21 May 2002 01:12:10 -0000 1.4
***************
*** 1,7 ****
! \documentclass[oneside,a4paper,11pt]{book}
\usepackage{german}
\usepackage{isolatin1}
\usepackage[dinodraft,german]{dino}
%\usepackage{acronym}
--- 1,8 ----
! \documentclass[oneside,a4paper,10pt]{book}
[...1730 lines suppressed...]
! Funktionalität, kann aber auch noch in viele Richtungen hin erweitert und
! verbessert werden. Das Design dieses Framework bietet also eine Unmenge an
! Möglichkeiten.
\appendix
***************
*** 1976,1980 ****
\chapter{Schema der Statemachine}
! \label{sec:Schema}
\footnotesize
--- 2371,2375 ----
\chapter{Schema der Statemachine}
! \label{sec:SchemaDerStatemaschine}
\footnotesize
|
|
From: G?nther B. <br...@us...> - 2002-05-20 10:19:39
|
Update of /cvsroot/xpg-xml/doc
In directory usw-pr-cvs1:/tmp/cvs-serv4319
Modified Files:
Seminartemplate.tex
Log Message:
a bissi mehr zu den bsp
Index: Seminartemplate.tex
===================================================================
RCS file: /cvsroot/xpg-xml/doc/Seminartemplate.tex,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Seminartemplate.tex 19 May 2002 18:45:27 -0000 1.1
--- Seminartemplate.tex 20 May 2002 10:19:36 -0000 1.2
***************
*** 674,679 ****
nun ein eigenes großes Kapitel wird. Das bedeutet aber, dass Änderungen in der
Dokumentenhierarchie vorgenommen werden. Nun ist jedoch in
! Textbeschreibungssprachen wie \ac{ac:Latex}, dass diese Heirarchie eines
! Dokuments eine sehr genau vorgegebene Form haben muß - bei \ac{ac:Latex}
sind dies der Reihe nach {\em part, chapter, section, subsection,
subsubsection, paragraph, subparagraph}. Dies bedeutet nun aber, wenn
--- 674,679 ----
nun ein eigenes großes Kapitel wird. Das bedeutet aber, dass Änderungen in der
Dokumentenhierarchie vorgenommen werden. Nun ist jedoch in
! Textbeschreibungssprachen wie \LaTeX\, dass diese Heirarchie eines
! Dokuments eine sehr genau vorgegebene Form haben muß - bei \LaTeX\
sind dies der Reihe nach {\em part, chapter, section, subsection,
subsubsection, paragraph, subparagraph}. Dies bedeutet nun aber, wenn
***************
*** 690,694 ****
verschachteln kann. Aus der Tiefe dieser Verschachtelung erhält man dann
die Ebene der Hierarchie für die Übersetzung in ein Zielformat (wie
! \ac{ac:Latex }) in dem man je Ebene einen unterschiedlichen Bezeichner hat.
Eine solche Dokumentenhierarchie kann nun zum Beispiel ein Aussehen
--- 690,694 ----
verschachteln kann. Aus der Tiefe dieser Verschachtelung erhält man dann
die Ebene der Hierarchie für die Übersetzung in ein Zielformat (wie
! \LaTeX ) in dem man je Ebene einen unterschiedlichen Bezeichner hat.
Eine solche Dokumentenhierarchie kann nun zum Beispiel ein Aussehen
***************
*** 728,732 ****
Zu obigem Beispiel kann nun die dazugehörige Dokumentenhierarchie in
! \ac{ac:Latex} folgendermaßen aussehen:
\begin{verbatim}
--- 728,732 ----
Zu obigem Beispiel kann nun die dazugehörige Dokumentenhierarchie in
! \LaTeX\ folgendermaßen aussehen:
\begin{verbatim}
***************
*** 751,763 ****
\section{Rechnen}
! Häufig kommt es vor, dann man eine ganze Menge von Daten als Input hat,
sich jedoch nicht für diese gesamte Datenflut interessiert, sondern nur
! ein paar davon abgeleitete Daten benötigt. Das heißt wenn als Input zum
! Beispiel eine ganze Tabelle mit Meßwerten zu Verfügung steht ist es möglich
! daraus zusätzlich oder ausschließlich repräsentative Werte wie Maximalwerte,
! Mittelwert, die Summe oder sonstige beliebige aus den Meßwerten generierbare
! Daten. Das bedeutet aber gleichzeitig auch, dass bei einem etwaigen Update
! der Inputdaten mit einem neuerlichen Übersetzen des Dokuments diese
! generierten Daten im Output ebenfalls automatisch mit upgedatet werden.
Implementiert ist dies in dem Framework in folgender Weise, dass aufgrund des
--- 751,765 ----
\section{Rechnen}
! Häufig kommt es vor, dass man eine ganze Menge von Daten als Input hat,
sich jedoch nicht für diese gesamte Datenflut interessiert, sondern nur
! ein paar davon abgeleitete Daten benötigt, welche dann auch eine gewisse
! Aussagekraft besitzen. Das heißt, wenn als Input zum
! Beispiel eine ganze Tabelle mit Meßwerten zu Verfügung steht, ist es möglich
! daraus zusätzlich repräsentative Werte wie Maxima/Minima, Mittelwert, die
! Summe oder sonstige beliebige generierbare Daten zu ermitteln und in das
! Enddokument einfließen zu lassen. Das bedeutet aber gleichzeitig auch, dass
! bei einem etwaigen Update der Inputdaten mit einem neuerlichen Übersetzen des
! Dokuments diese generierten Daten im Output ebenfalls automatisch mit upgedatet
! werden.
Implementiert ist dies in dem Framework in folgender Weise, dass aufgrund des
***************
*** 765,783 ****
Datenspeicherung vorgesehenen \texttt{DataObject} (siehe
\ref{subsec:VerwaltungVonInputdaten},
! S. \pageref{subsec:VerwaltungVonInputdaten}) gespeichert werden können. Es
können somit also auch ganze Tabellen oder Listen von Inputdaten dort
! gesammelt abgelegt werden und am Ende dieser können dann daraus die benötigten
! Daten, wobei dies beginnend von Extremwerten, Mittelwerten oder Summen bis hin
! zu ganzen statistischen Berechnungen oder Verteilungen oder beliebeige andere
! komplizierte Berechnungen sein können, akkumuliert und entsprechend in den
Output eingefügt werden.
Als einfaches Beispiel für diese Funktionalität wurde eine Liste
implementiert, aus deren Daten dann wahlweise der Mittelwert oder die Summe
! berechnet werden und abschließend jeweils der Liste angefügt werden.
\section{Lebenslauf - 2 verschiedene Zielformate}
! Ziel dieses auf den ersten Blick relativ einfachen Anwendungsbeispiel ist es
einen Lebenslauf zu erstellen und zu übersetzen. Dazu wurde auch ein eigenes
Schema entworfen, dass das Eingabeformat desselben beschreibt. Es besteht aus
--- 767,814 ----
Datenspeicherung vorgesehenen \texttt{DataObject} (siehe
\ref{subsec:VerwaltungVonInputdaten},
! S. \pageref{subsec:VerwaltungVonInputdaten}) verwaltet werden können. Es
können somit also auch ganze Tabellen oder Listen von Inputdaten dort
! gesammelt abgelegt werden und dann daraus die benötigten
! Daten - wobei dies beginnend von Extremwerten, Mittelwerten oder Summen bis hin
! zu ganzen statistischen Berechnungen oder Verteilungen oder beliebige andere
! komplizierte Berechnungen sein können - akkumuliert und entsprechend in den
Output eingefügt werden.
Als einfaches Beispiel für diese Funktionalität wurde eine Liste
implementiert, aus deren Daten dann wahlweise der Mittelwert oder die Summe
! berechnet werden und abschließend jeweils der Liste angefügt werden. Das heißt
! man hat wahlweise einen der folgenden Inputs:
!
! \begin{tabular}{p{1cm} l l}
! \\
! & \texttt{<para>} & \texttt{<para>} \\
! & \texttt{ Liste mit Summe:} & \texttt{ Liste mit Durchschnitt:} \\
! & \texttt{</para>} & \texttt{</para>} \\
! & \texttt{<list eval=''sum''>} { } & \texttt{<list eval=''avg''>} \\
! & \texttt{ <item>3.7</item>} & \texttt{ <item>3.7</item>} \\
! & \texttt{ <item>2.8</item>} & \texttt{ <item>2.8</item>} \\
! & \texttt{ <item>13.2</item>} & \texttt{ <item>13.2</item>} \\
! & \texttt{</list>} & \texttt{</list>} \\
! \\
! \end{tabular}
!
! Und daraus generiert man dann alternativ folgende Outputs:
!
! \begin{tabular}{p{1cm} c c}
! \\
! &
! Liste mit Summe: { } &
! Liste mit Durchschnitt\\
! \\
! & 3.7 & 3.7 \\
! & 2.8 & 2.8 \\
! & 13.2 & 13.2 \\
! \\
! & {\bf $\sum $ 19.7} & {\bf $\phi $ 6.57}
! \end{tabular}
\section{Lebenslauf - 2 verschiedene Zielformate}
! Ziel dieses auf den ersten Blick relativ einfachen Anwendungsbeispiels ist es
einen Lebenslauf zu erstellen und zu übersetzen. Dazu wurde auch ein eigenes
Schema entworfen, dass das Eingabeformat desselben beschreibt. Es besteht aus
***************
*** 805,815 ****
In Geschäftsberichten, Jahresberichten, Marktanalysen, Erhebungen und noch
! vielen anderen Dokumenten ähnlicher Art ist es erforderlich
! verschiedenste Diagramme (wie z.B. Kurvendiagramme, Tortendiagramme, Blockdiagramme, ...)
! ins gewünschte Enddokument einzufügen. Das heißt man hat eine Reihe von Daten
! als Ausgangsbasis aus welchen man dann ein Diagramm beliebiger Art
! erstellen muß um dieses anschließend in das Dokument einzubinden.
! Bei diesem Framework gibt es nun dahingehend eine wesetliche Erleichterung, dass
es nur notwendig ist in das Sourcedokument die gesammelten Daten für das
Diagramm einzufügen, die Art des Diagramms anzugeben, welches gewünscht wird
--- 836,846 ----
In Geschäftsberichten, Jahresberichten, Marktanalysen, Erhebungen und noch
! vielen anderen Dokumenten ähnlicher Art ist es erforderlich Diagramme
! verschiedenster Art (wie z.B. Kurvendiagramme, Tortendiagramme, Blockdiagramme,
! ...) ins gewünschte Enddokument einzufügen. Das bedeutet es gibt eine Reihe von
! Daten als Ausgangsbasis aus welchen dann ein Diagramm beliebiger Art
! erstellt werden soll um dieses anschließend in das Dokument einzubinden.
! Bei diesem Framework gibt es nun dahingehend eine wesentliche Erleichterung, dass
es nur notwendig ist in das Sourcedokument die gesammelten Daten für das
Diagramm einzufügen, die Art des Diagramms anzugeben, welches gewünscht wird
***************
*** 819,826 ****
Enddokument eingebunden. Diese komfortable Vorgehensweise konnte gewonnen
werden durch das Einbinden des \texttt{Chart2D}-Packages (FIXXME: Referenz
! sourceforge.net/projects/chart2d) mit welchen auf einfach Weise aus einer
Reihe von Daten verschiedene Arten von Diagrammen erstellt werden
können. Solche vom \texttt{Chart2D}-Package erstellten Graphiken werden
! dann in Files gespeichert und diese werden dann in den Output eingebunden.
Der Dateninput kann also ähnliche Form wie folgt haben:
--- 850,858 ----
Enddokument eingebunden. Diese komfortable Vorgehensweise konnte gewonnen
werden durch das Einbinden des \texttt{Chart2D}-Packages (FIXXME: Referenz
! sourceforge.net/projects/chart2d) mit welchem auf einfach Weise aus einer
Reihe von Daten verschiedene Arten von Diagrammen erstellt werden
können. Solche vom \texttt{Chart2D}-Package erstellten Graphiken werden
! dann im \ac{ac:Png}-Format in Files gespeichert und diese können dann in recht
! komfortabel in den Output eingebunden werden.
Der Dateninput kann also ähnliche Form wie folgt haben:
***************
*** 842,848 ****
\end{verbatim}
! Und dementsprechend wird dann folgene Graphik in das Enddokument eingebunden:
! \image[1.0]{images/Quartalsumsätze}{}{Beispiel: generiertes Tortendiagramm}{fig:PieChart}
--- 874,881 ----
\end{verbatim}
! Und dementsprechend wird dann eine Graphik wie in Abbildung \ref{fig:PieChart}
! in das Enddokument eingebunden.
! \image[0.9]{images/PieChart}{Beispiel: generiertes Tortendiagramm}{}{fig:PieChart}
|
|
From: G?nther B. <br...@us...> - 2002-05-20 07:43:51
|
Update of /cvsroot/xpg-xml/edu/iicm/xpg/transitions/latex
In directory usw-pr-cvs1:/tmp/cvs-serv19295/transitions/latex
Modified Files:
WriteChartTransition.java
Log Message:
chart example is now working :-))
Index: WriteChartTransition.java
===================================================================
RCS file: /cvsroot/xpg-xml/edu/iicm/xpg/transitions/latex/WriteChartTransition.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** WriteChartTransition.java 19 May 2002 08:36:43 -0000 1.1
--- WriteChartTransition.java 20 May 2002 07:43:48 -0000 1.2
***************
*** 39,42 ****
--- 39,43 ----
import net.sourceforge.chart2d.Dataset;
import net.sourceforge.chart2d.PieChart2DProperties;
+ import net.sourceforge.chart2d.Chart2D;
import net.sourceforge.chart2d.PieChart2D;
import net.sourceforge.chart2d.LBChart2D;
***************
*** 86,89 ****
--- 87,92 ----
Chart2DProperties chart2DProps = new Chart2DProperties();
chart2DProps.setChartTitleText(list_title);
+ Chart2D chart2D = new LBChart2D();
+ JFrame frame = new JFrame();
if (chart_type.equals("pie"))
***************
*** 105,122 ****
new PieChart2DProperties (chart2DProps, dataset);
pieChart2DProps.setLegendLabelsTexts (legendLabels);
! PieChart2D chart2D = new PieChart2D (pieChart2DProps);
//<-- End Chart2D configuration -->
-
- JFrame frame = new JFrame();
- frame.getContentPane().add (chart2D); //Add Chart2D to GUI
- frame.setTitle (list_title);
- frame.pack();
- Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
- frame.setLocation ( (screenSize.width - frame.getSize().width) / 2,
- (screenSize.height - frame.getSize().height) / 2 );
-
- ImageIO.write(chart2D.getImage(), "PNG", new File(chart_filename));
}
else if (chart_type.equals("line"))
{
--- 108,116 ----
new PieChart2DProperties (chart2DProps, dataset);
pieChart2DProps.setLegendLabelsTexts (legendLabels);
! chart2D = new PieChart2D (pieChart2DProps);
//<-- End Chart2D configuration -->
}
+ // FIXXME: LineChart doesn`t work properly at the moment!
else if (chart_type.equals("line"))
{
***************
*** 145,165 ****
new GraphChart2DProperties (chart2DProps, graphProps);
graphChart2DProps.setLabelsAxisLabelsTexts (axisLabels);
! graphChart2DProps.setLabelsAxisTicksAlignment (graphChart2DProps.CENTERED);
//Configure chart
! LBChart2D chart2D = new LBChart2D (graphChart2DProps);
//<-- End Chart2D configuration -->
-
- JFrame frame = new JFrame();
- frame.getContentPane().add (chart2D); //Add Chart2D to GUI
- frame.setTitle (list_title);
- frame.pack();
- Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
- frame.setLocation ( (screenSize.width - frame.getSize().width) / 2,
- (screenSize.height - frame.getSize().height) / 2 );
-
- ImageIO.write(chart2D.getImage(), "PNG", new File(chart_filename));
}
result.append("\n\\includegraphics{" + chart_filename + "}\n");
--- 139,159 ----
new GraphChart2DProperties (chart2DProps, graphProps);
graphChart2DProps.setLabelsAxisLabelsTexts (axisLabels);
! graphChart2DProps.setLabelsAxisTicksAlignment(graphChart2DProps.CENTERED);
//Configure chart
! chart2D = new LBChart2D (graphChart2DProps);
//<-- End Chart2D configuration -->
}
+ frame.getContentPane().add (chart2D); //Add Chart2D to GUI
+ frame.setTitle (list_title);
+ frame.pack();
+ Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
+ frame.setLocation ( (screenSize.width - frame.getSize().width) / 2,
+ (screenSize.height - frame.getSize().height) / 2 );
+
+ ImageIO.write(chart2D.getImage(), "png",
+ new File(chart_filename + ".png"));
+
result.append("\n\\includegraphics{" + chart_filename + "}\n");
|
|
From: G?nther B. <br...@us...> - 2002-05-20 07:43:51
|
Update of /cvsroot/xpg-xml/edu/iicm/xpg/transitions/simple
In directory usw-pr-cvs1:/tmp/cvs-serv19295/transitions/simple
Modified Files:
WriteChartTransition.java
Log Message:
chart example is now working :-))
Index: WriteChartTransition.java
===================================================================
RCS file: /cvsroot/xpg-xml/edu/iicm/xpg/transitions/simple/WriteChartTransition.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** WriteChartTransition.java 19 May 2002 08:36:44 -0000 1.1
--- WriteChartTransition.java 20 May 2002 07:43:48 -0000 1.2
***************
*** 40,43 ****
--- 40,44 ----
import net.sourceforge.chart2d.PieChart2DProperties;
import net.sourceforge.chart2d.PieChart2D;
+ import net.sourceforge.chart2d.Chart2D;
import net.sourceforge.chart2d.LBChart2D;
***************
*** 86,89 ****
--- 87,92 ----
Chart2DProperties chart2DProps = new Chart2DProperties();
chart2DProps.setChartTitleText(list_title);
+ Chart2D chart2D = new LBChart2D();
+ JFrame frame = new JFrame();
if (chart_type.equals("pie"))
***************
*** 105,122 ****
new PieChart2DProperties (chart2DProps, dataset);
pieChart2DProps.setLegendLabelsTexts (legendLabels);
! PieChart2D chart2D = new PieChart2D (pieChart2DProps);
//<-- End Chart2D configuration -->
-
- JFrame frame = new JFrame();
- frame.getContentPane().add (chart2D); //Add Chart2D to GUI
- frame.setTitle (list_title);
- frame.pack();
- Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
- frame.setLocation ( (screenSize.width - frame.getSize().width) / 2,
- (screenSize.height - frame.getSize().height) / 2 );
-
- ImageIO.write(chart2D.getImage(), "PNG", new File(chart_filename));
}
else if (chart_type.equals("line"))
{
--- 108,116 ----
new PieChart2DProperties (chart2DProps, dataset);
pieChart2DProps.setLegendLabelsTexts (legendLabels);
! chart2D = new PieChart2D (pieChart2DProps);
//<-- End Chart2D configuration -->
}
+ // FIXXME: LineChart doesn`t work properly at the moment!
else if (chart_type.equals("line"))
{
***************
*** 145,166 ****
new GraphChart2DProperties (chart2DProps, graphProps);
graphChart2DProps.setLabelsAxisLabelsTexts (axisLabels);
! graphChart2DProps.setLabelsAxisTicksAlignment (graphChart2DProps.CENTERED);
//Configure chart
! LBChart2D chart2D = new LBChart2D (graphChart2DProps);
//<-- End Chart2D configuration -->
-
- JFrame frame = new JFrame();
- frame.getContentPane().add (chart2D); //Add Chart2D to GUI
- frame.setTitle (list_title);
- frame.pack();
- Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
- frame.setLocation ( (screenSize.width - frame.getSize().width) / 2,
- (screenSize.height - frame.getSize().height) / 2 );
-
- ImageIO.write(chart2D.getImage(), "PNG", new File(chart_filename));
}
! result.append("\n<img href=\"" + chart_filename + "\">\n");
return(null);
--- 139,160 ----
new GraphChart2DProperties (chart2DProps, graphProps);
graphChart2DProps.setLabelsAxisLabelsTexts (axisLabels);
! graphChart2DProps.setLabelsAxisTicksAlignment(graphChart2DProps.CENTERED);
//Configure chart
! chart2D = new LBChart2D (graphChart2DProps);
//<-- End Chart2D configuration -->
}
! frame.getContentPane().add (chart2D); //Add Chart2D to GUI
! frame.setTitle (list_title);
! frame.pack();
! Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
! frame.setLocation ( (screenSize.width - frame.getSize().width) / 2,
! (screenSize.height - frame.getSize().height) / 2 );
!
! ImageIO.write(chart2D.getImage(), "png",
! new File(chart_filename + ".png"));
!
! result.append("\n<img src=\"" + chart_filename + ".png\">\n");
return(null);
|
|
From: Edmund H. <so...@us...> - 2002-05-19 18:45:37
|
Update of /cvsroot/xpg-xml/doc
In directory usw-pr-cvs1:/tmp/cvs-serv23785
Modified Files:
Seminarbericht.gdf Seminarbericht.tex
Added Files:
Seminartemplate.tex
Log Message:
seminarbericht update
--- NEW FILE: Seminartemplate.tex ---
\documentclass[oneside,a4paper,10pt]{report}
\usepackage{german}
\usepackage{isolatin1}
% hyphenation of words with umlauts: results in ugly font!
%\usepackage[T1]{fontenc}
%\usepackage[latin1]{inputenc}
\usepackage[dinodraft,german]{dino}
% ---------- change paragraph layout --------------------
\parskip1.2ex % Vertikaler Abstand zwischen Absaetzen
\parindent0cm % Nicht einrücken bei neuem Absatz
% ---------- change layout of page --------------------
%\usepackage{geometry}
%\geometry{a4paper,left=3cm, right=2cm, top=2cm, bottom=1cm}
% works quite ok:
%\textheight 250mm
%\topmargin -20mm
%\headheight 10mm
%\headsep \baselineskip % distance between header and text
%\topskip 10mm % height of header-line
%\textwidth 160mm
%\oddsidemargin 0mm
%\evensidemargin 0mm
%\voffset -5mm
% ---------- change name of tables --------------------
\renewcommand{\tablename}{Tabelle}
\global\def\tableCaption{\tablename}
% ------------------- settings for pdf documents ----------------------------
\expandafter\ifx\csname pdfoutput\endcsname\relax
\else
\hypersetup{backref,
pdfauthor={\ehaselwanter},
pdftitle={Seminarbericht XPG-XDML},
pdfsubject={},
% colorlinks=true,
%% linkcolor=webgreen, %defined below
%% filecolor=webbrown, %defined below
%% citecolor=webgreen, %defined below
% pdfpagemode=None,
a4paper=true,
% bookmarksopen=false
}
%
%Define some eye-pleasing colors for this document
%
% \definecolor{webgreen}{rgb}{0,.5,0}
% \definecolor{webbrown}{rgb}{.6,0,0}
\fi
\setcounter{page}{0}
\begin{document}
\chapter{Das Framework, ein komponentenbasierter Ansatz}
Für das Framework können drei unterschiedliche Gruppen von
Benutzern der Software indentifiziert werden: Der {\em Endanwender},
respektive der Autor von Dokumenten, der ausschließlich daran interessiert ist, seine
Dokumente gemäß der entsprechenden (\ac{ac:Xml}) Struktur - d. h. unter
Verwendung eines bereits genau definierten XML Schemas - zu verfassen. Der
{\em Dokument Entwickler}, der verschiedene Dokumentarten klassifiziert
und die jeweiligen Schematas dazu festlegt und die entsprechendern
Transformationen entwickelt, mit denen er das Basislayout der Zielformate
festlegt. Und der {\em Systementwickler}, der den Kern des Systems entwirft
und ihm weitere Funktionalität hinzufügen kann. Um dem zu entsprechen wurde ein
Framework konzipiert, das es erlaubt auf verschiedene Art und Weise
erweitert und eingesetzt zu werden.
\section{Ein einfaches Beispiel}
Um nun die Grundstrukturen und Vorgangsweisen des Frameworks zu skizzieren
betrachten wir vorerst ein einfaches Beispiel. Wir wollen ein Eingabedokument
das im XML-Format vorliegen soll in ein konkretes Zielformat, in diesem Fall
wählen wir HTML, übersetzten. Als erster Schritt muß eine
Beschreibung des Sourcedokumentes - sozusagen einer Dokumentenklasse -
modelliert werden. Der Einfachheit halber wird in diesem nur ein Element
\texttt{<doc>} und ein Element \texttt{<title>} verarbeitet.
Die Information, welche mit dem \texttt{<title>} Element umschlossen wird,
soll in das HTML-Ausgabedokument übernommen werden.
In XML Syntax sieht dieses Beispiel dann folgendermaßen aus:
\texttt{simpledoc.xml}:
\begin{verbatim}
<doc
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="simpledoc.xsd">
<title>Title Definition</title>
</doc>
\end{verbatim}
Um garantieren zu können, dass die Verarbeitung dieses Dokumentes durch das Framework
korrekt abläuft, muss zu dem Eingabedokument ein XML-Schema (siehe
\ref{subsec:Schema}, S. \pageref{subsec:Schema}) entworfen
werden. Ausserdem ist damit eine ganze Klasse von Dokumenten spezifiziert.
\texttt{simpledoc.xsd}:
\begin{verbatim}
<?xml version="1.0" standalone="no"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="doc">
<xsd:complexType>
<xsd:all>
<xsd:element name="title" type="xsd:string"/>
</xsd:all>
</xsd:complexType>
</xsd:element>
</xsd:schema>
\end{verbatim}
Betrachten wir nun die Abarbeitung dieses Dokumentes im Hinblick auf unser
Ziel, daraus ein HTML Dokument zu machen. Im Eingabedokument sind durch seine
(XML) Struktur folgende Informationen implizit enthalten:
\begin{itemize}
\item \texttt{<doc>} - Drei Informationen: Erstens, dass das Dokument
begonnen hat, zweitens das Auftreten eines \texttt{<doc>} Elementes und
drittens, dass das File \texttt{simpledoc.xsd} das zugehörige XML-Schema ist.
\item \texttt{<title>} Das Auftreten des \texttt{<title>}-Elementes
\item ``\texttt{Title Definition}'' - Alle Zeichen zwischen dem \texttt{<title>} und dem
\texttt{</title>} Element, in diesem Fall die Zeichenfolge ``\texttt{Title Definition}''
\item \texttt{</title>} - Das Auftreten des \texttt{</title>}-Elementes
\item \texttt{</doc>} - Das Auftreten des \texttt{</doc>}-Elementes und das
Ende des Dokumentes
\end{itemize}
Bei einer sequentiellen Abarbeitung dem sogenannten {\em Parsen} des Dokumentes kann man die Folge der
Informationen als Folge von Ereignissen (Events), die etwas bewirken können,
auffassen (im Detail siehe \ref{subsec:DerParser}, S.\pageref{subsec:DerParser}).
Dieses XML-Dokument, das dem zugehörigem XML-Schema genügt, ist nur ein Dokument
aus der Menge der Dokumente die mit dem XML-Schema beschrieben werden. Wir
müssen auf alle Kombinationen respektive Reihenfolgen dieser Ereignisse
reagieren können, die das entworfene XML-Schema eindeutig und überprüfbar
vorgibt. Somit ergibt sich für diese Dokumentenklasse das in Abbildung
\ref{fig:statemachine} dargestellte Ablaufdiagramm, das alle möglichen und
gültigen Pfade enthält.
\image[1.0]{images/bspSimple}{Das Ablaufdiagramm zum \texttt{<doc>} Beispiel }{}{fig:statemachine}
Das alleine stellt allerdings nur eine theoretische Betrachtung aller gewünschten Abläufe der Ereignisse
dar. Wie man am Ablaufdiagramm leicht erkennt, kann dieses Verhalten mit einem
dem Diagramm entsprechendem endlichen Automaten (Finite-State-Machine) FIXXME Referenz erreicht
werden. Dabei bilden die Ereignisse die auslösenden Momente (Trigger, Transitionen) von einem gültigen
Zwischenzustand (State) zum nächsten gültigen Zwischenzustand. Diese Zustände
müssen nicht zwingend verschieden sein. Jedes Dokument wird zumindest zwei
{\em ausgezeichnete} Zustände haben, den Dokument-Start-Zustand und den Dokument-Ende-Zustand.
Die Statemachine ist das Kernstück dieses Frameworks (siehe \ref{sec:DasDesigndesFrameworks},
S. \pageref{sec:DasDesigndesFrameworks}). Es ist nun eine von obigem Schema abgeleitete
Beschreibung dieser erforderlich, damit sie dann das Dokument (respektive
die ganze mit obigem Schema beschriebene Dokumentenart) {\em versteht}. Diese
Beschreibung erfolgt zweckmäßiger Weise auch mittels eines validierbarem
XML-Dokumentes, da wir verschiedene Dokumentklassen verarbeiten wollen und damit auch
entsprechend unterschiedliche endliche Automaten aufbauen müssen. Für die
Validierung muss diese Beschreibung auch einem XML-Schema genügen, dem XML-Schema für
die Statemachine (im Anhang auf Seite \pageref{sec:Schema}).
Bereits an diesem kleinem Beispiel kann man erkennen, dass die Anzahl der Zustände
schnell sehr umfangreich wird. Allerdings muss dies nur einmal für eine
Dokumentklasse gemacht werden. Nachfolgend sind die wesentlichen Abschnitte dieses
XML-Dokumentes, dem sogenannten Konfigurationsfile der Statemaschine, für diese
Dokumentklasse, dargestellt.
1. Angabe des Schemas
% \footnotesize
\begin{verbatim}
<?xml version="1.0" standalone="no"?>
<statemachine
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="StateMachineConfig.xsd">
\end{verbatim}
2. Die Liste aller gültigen Zustände. Der Startzustand muss besonders
ausgezeichnet sein, damit man einen gültigen Ausgangszustand der
Statemachine hat.
\begin{verbatim}
<states>
<startstate>STATE_TOP_LEVEL_FILE</startstate>
<state>STATE_TOP_LEVEL_DOC</state>
<state>STATE_DOC_TITLE_DEF</state>
<state>STATE_FINISHED</state>
</states>
\end{verbatim}
3. Die Liste aller zugelassenen Transitionen. Die Zustände des endlichen
Automaten werden vor den Transitionen bekanntgegeben, damit schon beim
Parsen festgestellt werden kann, ob die Transitionen eine gültige
Zustansänderung beschreiben.
\begin{verbatim}
<transitions>
<transition>
<beginstate>STATE_TOP_LEVEL_FILE</beginstate>
<nextstate>STATE_TOP_LEVEL_DOC</nextstate>
<element type="start">doc</element>
<classname>WriteGeneralHeaderTransition</classname>
</transition>
.
.
.
<transition>
<beginstate>STATE_TOP_LEVEL_FILE</beginstate>
<nextstate>STATE_FINISHED</nextstate>
<element type="enddoc" />
<classname>StopMachineTransition</classname>
</transition>
</transitions>
</statemachine>
\end{verbatim}
%\normalsize
Sämtliche für die Übersetzung des XML-Sourcedokuments notwendigen
Dokumente (Schemata, Konfigurationsfile, ...) sind nun
vorhanden.
Ziel unserer Bemühungen ist es aber aus einem XML-Eingabedokument ein
HTML-Ausgabedokument zu machen. Es fehlt also noch etwas entscheidendes,
nämlich die Anweisungen, welche die Generierung des Outputs in der Zielsprache -
für dieses kleine Beispiel HTML - übernehmen. Diese Anweisungen werden bei der
Beschreibung Transitionen als Klassenname angegeben (im Detail siehe \ref{subsec:Transitions}
, S.\pageref{subsec:Transitions}).
Die hier benötigten Anweisungen bzw. Klassen sind nun:
\begin{description}
\item [PrimitiveTransition] Diese implementiert nur das Interface
einer Transition und trägt weiter nichts zum Output bei. Sie wird
benötigt um von einem Zustand der Statemachine in einen anderen zu wechseln.
\item [WriteGeneralHeaderTransition] Diese schreibt den
allgemeinen Kopf des Outputdokuments. Im diesem Beispiel mit \ac{ac:Html}
als Zielsprache ist dies das öffnende \texttt{<html>} Tag, das komplette
\texttt{<head>} Element und das öffnende \texttt{<body>} Tag.
\item [StoreDocTitleTransition] Diese speichert den Inhalt des
\texttt{<title>} Elements des \ac{ac:Xml} Eingabedokuments (im Detail siehe
\ref{subsec:VerwaltungVonInputdaten}, S.\pageref{subsec:VerwaltungVonInputdaten}).
\item [WriteDocTitleTransition] Diese schreibt den Inhalt des
\texttt{<title>} Elements des \ac{ac:Xml} Source in den Output, eingebettet
in ein \texttt{<h1>} Element.
\item [WriteGeneralFooterTransition] Diese schreibt nun das generelle
Dokumentende des Outputs; für das \ac{ac:Html} Beispiel ist dies das
schließende \texttt{</body>} und das schließende \texttt{</html>} Tag.
\item [StopMachineTransition] Diese wird aufgerufen, wenn der komplette
Input abgearbeitet wurde (EOF bei einem Eingabedokument). Sie stoppt die
Statemachine und stellt somit sicher dass das Framework korrekt terminieren kann.
\end{description}
Mittels dem Konfigurationsfile wird nun also der Statemachine beigebracht
Sourcedokumente, welche dem entsprechenden Schema genügen, zu {\em
verstehen}.
Mit Hilfe der entsprechenden Transitionen generiert die Statemachine beim
Abarbeiten des Inputs den gewünschten Output. Für dieses einfache Beispiel
kann der generierte Output dann folgendermaßen aussehen:
\begin{verbatim}
<html>
<head>
<title></title>
</head>
<body>
<h1>Title Definition</h1>
</body>
</html>
\end{verbatim}
\section{Das Design des Frameworks}
\label{sec:DasDesigndesFrameworks}
Bereits für das vorangehende einfache Beispiel ist eine gewisser Aufwand
notwendig, um zu dem gewünschten Ergebnis zu gelangen. Zusätzlich zu dem eigentlich zu
übersetzenden Eingabedokument mußten ein XML-Schema für dieses, ein XML-Schema
für die Statemaschine, ein Konfigurationsfile und eine Reihe von Transitionen
erstellt werden. Es wurde allerdings der gesamte Aufwand aller
Benutzergruppen {\em Endanwender}, {\em Dokument Entwickler} und {\em Systementwickler} dargestellt. Unterteilt
man nun wieder in diese drei einführend erkannten Gruppen von Benutzern der
Software, dann relativiert sich dieser Aufwand recht rasch wieder:
Der {\em Systementwickler}, welcher den funktionalen Kern des Frameworks
entwickelt, entwirft dazu auch das entsprechende XML-Schema für das
Konfigurationsfile der Statemachine. Dieses Statemachineschema wird
zusammen mit dem Kern des System nur einmal geschrieben und ändert sich in
folge nur bei gravierenden Eingriffen in die Kernfunktionalität des Systems.
Der {\em Dokument Entwickler} schreibt danach für eine ganze Klasse von
Dokumenten ein dem Statemachineschema genügendes Konfigurationsfile mit
welchem dann der Statemachine beigebracht werden soll, Dokumente dieser Klasse zu
{\em verstehen}. Korrespondierend zu dem Konfigurationsfile entwickelt dieser ein
XML-Schema für die Dokumente dieser Klasse. Auch entwickelt er die notwendigen
Transitionen (siehe auch \ref{subsec:Transitions}) die den Output für diese
Klasse von Dokumenten generieren sollen. Somit kreiert er für eine bestimmte Klasse
von Sourcedokumenten ein komplettes wiederverwendbares Package (siehe
\ref{sec:Packages}) - bestehend aus XML-Schema der Dokumentklasse,
Konfigurationsfile der Statemaschine und Transitionen - rumd um den
Systemkern.
Der {\em Endanwender} nimmt nun Systemkern und eines dieser Packages und muß
nur das Sourcedokument erstellen - dieses muß alelrdings dem im ausgewählten Package enthaltenen Schema
entsprechen - und kann somit den Output in der gewünschten Zielsprache
generieren.
Ähnlich der Unterteilung in verschiedene Benutzergruppen des Frameworks kann
dieses nun auch aus funktionaler Sichtweise dreigeteilt werden (siehe Abbildung
\ref{fig:Design}).
\image[1.0]{images/Design}{Framework: funktionale Darstellung}{}{fig:Design}
Der {\em Parser} (siehe \ref{subsec:DerParser}, S.\pageref{subsec:DerParser}) welcher das Sourcedokument parst und diesem
entsprechend Events generiert. Die {\em Statemachine} (siehe
\ref{sec:Statemachine}) welche diese Events dann verarbeitet und
dem entsprechend die {\em Transitionen} (siehe \ref{subsec:Transitions})
triggert, mit deren Hilfe schlußendlich der gewünschte Output erzeugt wird.
Bei den Transitionen kann man außerdem noch unterscheiden zwischen
sogenannten {\em Core }-Transitionen - das sind gleichsam eine kleine Anzahl von
Basistransitionen, die direkt zum Framework gehören - und den Transitionen
in den einzelnen {\em Packages} (siehe \ref{sec:Packages}) zur jeweils
entsprechenden Klasse von Dokumenten die damit verarbeitet werden soll.
\subsection{Der Parser}
\label{subsec:DerParser}
Dieser Teil des Frameworks übernimmt das Einlesen, sprich Parsen, des
XML-Sourcedokuments. Da beim Parsen mit \ac{ac:Dom} - Technologie die Gefahr
besteht, dass es bei großen Dokumenten zu einem Speicherproblem kommen kann,
da der gesamte \ac{ac:Dom}-Baum des Dokumentes einfach zu groß werden könnte, verwenden wir einen
ereignisbasierten Parser.
Wir haben uns für SAX2 und Xerces, den XML-Parser der das
\ac{ac:Sax} - Interface implementiert entschieden (siehe auch
\ref{subsec:Sax}, S.\pageref{subsec:Sax})\cite{xerces}\cite{sax}.
Dazu wird über die \texttt{XMLReaderFactory} der Xerces-SAXParser als
\texttt{XMLReader} erzeugt. Dem \texttt{XMLReader} muss nun ein Handler der das
\texttt{DocumentHandler}-Interface implementiert bzw. von von der
Referenzimplementierung, der Klasse \texttt{DefaultHandler}
abgeleitet ist, bekanntgegeben werden. Wir haben einen \texttt{XMLHandler}, der \texttt{DefaultHandler} abgeleitet ist, implementiert. Hier wird
die Verbindung zur \texttt{Statemachine} hergestellt, indem der \texttt{XMLReader} die
Callback-Methoden des \texttt{XMLHandlers} aufruft, in denen wiederum die
Callback-Methode der \texttt{Statemaschine} aufgerufen wird.
Für ein korrektes Funktionieren des Frameworks muss beim Parsen festgestellt
werden, ob das Eingabedokument korrekt ist. Technisch kann das auf die zwei
vorgestellten Arten, mithilfe einer DTD (siehe \ref{subsec:Dtd},
S.\pageref{subsec:Dtd}) oder eines XML-Schemas (siehe \ref{subsec:Schema},
S.\pageref{subsec:Schema}) geschehen. Aufgrund der Vorteile des XML-Schemas
gegenüber einer DTD verwenden wir hier XML-Schema zur Spezifikation der Eingabedokumente.
Somit muss der \texttt{XMLReader} noch auf Validierung mit XML-Schema
gestellt werden, damit wir auf fehlerhafte Eingabedokumente reagieren können (siehe \ref{sec:Fehlerbehandlung}, S.\pageref{sec:Fehlerbehandlung}).
Hierfür sieht SAX2 die Methode \texttt{setFeature} der Klasse
\texttt{XMLReader} vor. Die entsprechenden Attribute für Validierung und XML-Schema sind nun:
\begin{verbatim}
http://xml.org/sax/features/validation
http://apache.org/xml/features/validation/schema
\end{verbatim}
Der Parser leitet nun die Events XML-Input an die
Statemachine weiter.
\subsection{Die Statemachine}
\label{sec:Statemachine}
Die Statemachine ist die Implementierung eines deterministischen endlichen Automaten. Durch
den XML-Input kommt es zu einer Zustandstransformation
(Transition). Dadurch ergibt sich die gewünschte Ablaufsteuerung der
Verarbeitung der SAX-Events, die durch das Parsen des XML-Eingabedokumentes
hervorgerufen werden. Zusätzlich wird
bei den Transitionen die Ausführung des zu Ihnen gebundenen Java Codes
ausgelöst. Dies stellt somit einen gewünschten Seiteneffekt der
Statemachine dar. Da der gebundene Java Code beliebig und
``außerhalb'' der Statemachine Implementierung ist, können damit SAX
eventgesteuert Aktionen ausgeführt werden, die die Inputdaten (FIXXME
und alle anderen....) verarbeiten.
FIXXME: Referenz Statemachine / endlicher Automat
\subsection{Schemata und Konfigurationsfile}
Aus dem gewünschten Schema des zu verarbeitenden Dokumentes muss eine
Konfiguration der verarbeitenden Statemachine, die dem Schema der
Statemachine genügt, abgeleitet werden.
\subsection{Verwaltung von Inputdaten}
\label{subsec:VerwaltungVonInputdaten}
FIXXME: XMLElement / Stack und DataObject erklären
\subsection{Die Transitionen}
\label{subsec:Transitions}
Die Transitionen erledigen die Hauptarbeit und generieren im Endeffekt
dann den Output.
Interface der Transitionen:
\begin{verbatim}
public interface Transition
{
public String transitionTriggered(Input input,
State from_state,
State to_state,
StateMachine machine,
DataObject data)
throws Exception;
}
\end{verbatim}
Aus funktioneller Sicht kann man die Transitionen in speichernde und
schreibende unterteilen: die speichernden legen den aktuellen Input
(eventuell in modifizierter Form) im DataObject ab und die schreibenden
sind im Gegensatz dazu verantwortlich aus all den Informationen im
DataObject
sequentiell den gewünschten Output zu generieren.
Weiters gibt es sogenannte {\em Core }-Transitionen, welche zum Kern des
Systems gehören (im Gegensatz zu den Transitionen in den einzelnen
Packages).
Diese haben entweder nur eine gewisse Basisfunktionalität oder werden in
der Initialisierungsphase benötigt. Core-Transitionen sind nun folgende:
\begin{description}
\item [PrimitiveTransition]
\item [IgnoreCharsTransition]
\item [RegisterStateTransition]
\item [RegisterStartStateTransition]
\item [RegisterTransitionTransition]
\item [SetSearchPathTransition]
\item [StoreDataTransition]
\item [ClassLoaderTransition]
\item [StopMachineTransition]
\end{description}
\subsection{Packages}
\label{sec:Packages}
\subsection{Konfiguration}
Um mit einer Statemachine arbeiten zu können muss, diese zuerst
aufgebaut werden. Das heißt es müssen die zulässigen States und die
dazugehörigen Transitionen erst registriert werden. Diese sind jedoch
abhängig von der gewünschten Funktionsweise jeweils
unterschiedlich. Es wird also eine Möglichkeit benötigt die
Statemachine zu beschreiben. Um möglichst flexibel zu bleiben, passiert
das mit einem Konfigurationsdokument, welches dem Statemachine Schema
genügen muss.
Das Konfigurationsdokument wird, wie schon bei der Erklärung der SAX API
{\em
eventbasiert} geparst. Zum Registrieren
der States und Transitionen in der Statemachine gibt es nun zwei
Alternativen: entweder wird dies direkt in die Callbacks des SAX
Parsers hineinverpackt, oder man verwendet dazu wiederum eine
Statemachine, welche jedoch ``hardcodiert'' ist. Wir haben uns
entschlossen die zweite Alternative mit der ``hardcodierten''
Statemachine, die sogenannte {\em InitStateMachine },
weiterzuverfolgen.
Im Konfigurationsdokument stehen alle notwendigen Informationen, um
die gewünschte Statemachine aufbauen zu können. Das Schema für das
Konfigurationsdokument ist unabhängig von den unterschiedlichen
Verwendungszwecken immer das selbe. Da die Verarbeitung des
Konfigurationsdokuments hardcodiert ist bedingt eine Änderung dieses
Schemas einen Eingriff in den Sourcecode!
Das Konfigurationsdokument enthält die States für die Statemachine,
inklusive einem ausgezeichnetem Startstate. Weiters enthält es die
Transitionen, wobei jede Transition einen Beginstate, einen Nextstate,
ein Element, durch welches sie getriggert wird, und die Aktion als
Klassenname.
Wobei der Klassenname wegfallen kann, wenn
keine Aktion benötigt wird, dies entspricht dann einer
DefaultTransition. Weiters muss im Konfigurationsdokument noch der
Pfad für die Transitionen angegeben werden.
Genau genommen werden allerdings nicht direkt die entsprechenden
Aktionen/Klassen registriert sondern nur eine sogenannte {\em
ClassLoaderTransition } welche den Namen der entsprechenden Klasse
dann beinhaltet und bei Erhalt eines Triggers dann mittels dem {\em
Factory Pattern} FIXXME (Gamma et al) diese zur Laufzeit nachlädt und
sogleich
einen Trigger auf diese setzt, sie also auch gleich ausführt. Somit
werden die Klassen erst beim Auftreten eines entsprechenden Triggers
nachgeladen. Auch wenn eine Transition mehrmals benötigt wird wird sie
nur einmalig nachgeladen, da diese Implementierung des Factory Patterns in
Java
intern ein Caching betreibt.
\section{Fehlerbehandlung}
\label{sec:Fehlerbehandlung}
Bei der Verarbeitung von Dokumenten können verschiedene Arten von Fehlern
auftreten.
Einerseits Fehler des Parsers und der Statemachine die aufgrund von
``korrupten`` Inputdateien auftreten koennen, andereseits Fehler die durch
Transitionen erzeugt werden.
\subsection{Parser Fehler}
Das \ac{ac:W3c} hat in der {\em XML Recommandation 1.0} \cite{rec-xml} zwei
Arten von Fehlern definiert.
\begin{description}
\item [error:] Eine Verletzung der XML Spezifikation, es sind die Konsiquenzen
nicht definiert. Ein Beispiel hierfür ist bei einem Validierenden Parser,
wenn das Dokument nicht dem angegebnen Schema bzw. der \ac{ac:Dtd}
entspricht.
\item [fatal error:] Eine Verletzung der XML Spezifaktion, es darf die normale
Verabeitung vom Parser nicht fortgesetzt werden. Diese Art von Fehler tritt
zum Beispiel auf wenn ein XML Dokument nicht wohlgeformt ist.
\end{description}
\textbf{FIXXXME --> thick red line} \\
Das SAX API stellt zur Verarbeitung dieser Fehler das Interface
\texttt{ErrorHandler} zur Verfügung. Um von einer Applikation ein eigene
Fehlerbehandlung zu gewährleisten, muss der \texttt{ErrorHandler}
beim XML Reader registiert werden. Es werden dann vom SAX Parser Fehler an
diesen Handler gemeldet.
Es müssen in diesem Interface die zwei
Callback Funtktionen \texttt{error} und \texttt{fatalError} implementiert
werden.Die Informationen über den Aufgetretenen Fehler werden den beiden
Funktionen mittels \texttt{SAXParseException} als Parameter übergeben.
Das Standardverhalten dieser Beiden Funktionen ist, dass sie gar nichts tun.
Dies ist aber im Fall der Statemachine ein nicht wünschenswertes verhalten,
da ja vom \texttt{???Handler} die Trigger fuer die einzelnen Transitionen
ausgelöst werden und ein nicht wohlgeformtes bzw. nicht gültiges XML Dokument
falsche oder nicht Vorhandene Transitionen auslösen kann.
Es werden deshalb Fehler ausgegeben, die Verarbeitung des Inputs abgebrochen
und die Statemachine ``sauber`` heruntergefahren.
\textbf{end FIXXXME --> thick red line} \\
\subsection{Statemachine Fehler}
Da ja die Statemachine dynamisch in Abhängigkeit der zu Verarbeiteten
Dokumentklassen aufgebaut wird können auch hier verschiedene Fehler auftreten,
die noch nicht vom Parser entdeckt und an das Framework gemeldet wurden.
Hierbei handelt es sich um Fehler die bei der Initalisierung der Statemachine
durch eine Konfigurationsdatei auftreten können, welche zwar dem XML Schema
für diese Dokumentklasse entspricht jedoch trotzdem nicht korrekt verarbeitet
wird. Solche Fehler sind zum Beispiel der Versuch mehrere States mit dem
gleichen Namen zu registrieren, oder die Registrierung einer Transition deren Anfangs- und/oder der Endstate nicht registriert wurde.
Da durch ein XML Schema nur die Struktur eines Dokumentes vorgegeben, der
Inhalt jedoch
nur rudimentär eingschränkt werden kann (siehe
Restrictionbase XMLSchema ??? Recomendation) können diese Fehler nicht vom
Parser gefunden werden.
Um die Transparenz, wie das Framework arbeitet, für den
Dokumententwickler zu wahren, wurde die Designentscheidung getroffen, dass die
Initialisierung der Statemachine bei einem solchen Fehler abgebrochen wird.
Es könnte beim Versuch einen solchen Fehler bei der Initialsierung
auszubessern nicht garantiert werden, dass die Statemachine das geplante
Verhalten zeigt.
Bei der eigentlichen Verarbeitung kann es jedoch auch zu Eingaben kommen die
von der Statemachine nicht interpretiert werden können.
Ein solcher Fehler tritt auf, wenn es für einen Input im gerade aktuellen State
keine geine gültige Transitionen gibt. Dies bewirkt, dass das Dokument nicht
korrekt bis zum Ende verarbeitet werden kann und deshalb wird ein solcher
Fehler wie ein Parser Fehler behandelt. Warum kann dies nun auftreten wo
doch der Parser validierend agiert? Einer der Gründe ist, dass die
Statemachine für eine Dokumentklasse initialisiert wurde die nicht dem XML -
Schema des zu verarbeitenden Dokuments entspricht.
Für den den Parser ist dieses Dokument jedoch valide, die Statemachine
versteht es jedoch nicht und liefert dann diesen Fehler.
\textbf{FIXXXME --> thick red line} \\
Die Transitionen können auch Fehler verursachen, wo thalze aber nicht weiss
welche.
\textbf{FIXXXME --> thick red line} \\
\chapter{Anwendungsbeispiele}
\label{sec:Anwendungsbeispiele}
\section{Konfiguration}
Ein Einsatzbeispiel für das Konzept der Statemaschine findet sich
bereits im Gesamtkonzept des komponentenbasierten Ansatzes zur
Übersetzung von Dokumenten in andere Formate mittels einer
Statemachine wieder. Da die hier zur Übersetzung verwendete
Statemachine sehr flexibel sein muß - sie muß mit unterschiedlichen
Eingangsformaten (vorerst unterschiedlichen XML-Schemata) arbeiten und
in unterschiedliche Ausgansformate (z.B. \ac{ac:Html}, LaTeX, ...) übersetzen
können - ist es unmöglich bereits zur Compilezeit alle möglichen Stati
und Transitionen berücksichtigen zu können. Das bedeutet die
Konfiguration dieser Statemachine - das Registrieren der benötigten
Stati und Transitionen - kann erst zur Laufzeit erfolgen. Die
notwendigen Informationen zur Konfiguration werden in ein XML-File -
das sogenannte {\em Configfile } - geschrieben, welches einem
vorgegebenen Schema (dem {\em Configfile-Schema }) gehorcht. Dieses
wird mittels SAX geparst, welcher seine Events an eine
(Konfigurations-)Statemachine weitersendet, welche nun allerdings
hardcodiert und mit den enthaltenen Stati und Transitionen an das
vorgegebene Schema angepasst ist. Diese Konfigurations-Statemachine
übernimmt nun das Registrieren der notweendigen Stati und Transitionen
in der für die Übersetzung benötigten Statemachine; das heißt das
Ergebnis der Konfigurationstatemachine ist wiederum eine Statemachine,
welche nun flexibel konfiguriert ist und zum Übersetzen von
XML-Dokumenten in beliebige Formate eingesetzt werden kann.
\section{Problemstellung XPGForms}
Ein gängiges Problem in der Webseitengestaltung bzw. Programmierung
ist das Verarbeiten von Daten, die vom User eingegeben werden. Es ist
sinnvoll, einen generellen Ansatz für dieses Problem zu schaffen, da
die Abläufe immer dieselben sind, nur die Repräsentation und die
verwendeten Daten ändern sich. Es wäre vom Vorteil, wenn ein Framework
existieren würde, dass diese Abläufe umfasst; es sollte für die
jeweiligen Projekte bzw. Webseiten nur noch eine Datenbeschreibung vom
Programmierer in einer geeigneten Form modelliert werden. Der Grafiker
kann dazu parallel Templates entwerfen, in die per Platzhalter die
Datenfelder eingefügt werden können.
Eine geeignete Lösung wäre dafür, die Datenfelder in einem geeigneten
Format (XML bzw. XML Schema bieten sich an) zu beschreiben. Durch
verschiedene Transformationen wird eine Ablaufsteuerung generiert, die
das User Interface für den Benutzer bereitstellt. Die Erzeugung der
eigentlichen Web Formulare passiert also automatisiert. Dies hat nicht
nur den Vorteil einer Zeitersparnis, sondern durch die Formalisierung
des Prozesses werden Fehlerquellen der Implementierung minimiert. Die
XPG State Machine kommt an dem Punkt der Umwandlung von XML in PHP ins
Spiel; von einer Quellensprache (XML) wird in eine mögliche
Zielsprache (PHP) transformiert. Es wäre jedoch leicht möglich, auch
z. B. JSP oder ASP damit zu erzeugen.
\section{\LaTeX: flexible Handhabung ganzer Dokumentblöcke}
Während der Erstellung größerer Dokumente kann es immer wieder vorkommen,
dass es notwendig ist Teile eines Dokuments umzustrukturieren, ganze
Blöcke des Dokuments zu verschieben. Dabei kann es passieren, dass aus
einem ursprünglich eigenem Kapitel nunmehr ein Unterkapitel wird oder
umgekehrt aus einem anfangs nur als kleines Unterkapitel gedachtem Block
nun ein eigenes großes Kapitel wird. Das bedeutet aber, dass Änderungen in der
Dokumentenhierarchie vorgenommen werden. Nun ist jedoch in
Textbeschreibungssprachen wie \ac{ac:Latex}, dass diese Heirarchie eines
Dokuments eine sehr genau vorgegebene Form haben muß - bei \ac{ac:Latex}
sind dies der Reihe nach {\em part, chapter, section, subsection,
subsubsection, paragraph, subparagraph}. Dies bedeutet nun aber, wenn
bei solchen Umstrukturierungen aus Unterkapiteln eigene Kapitel werden
(und analog umgekehrt), dass diese Modifikationen der Dokumenthierarchie
händisch nachgebessert werden müssen: aus einem {\em section} wird ein
{\em chapter}, aus dem darin enthaltenen {\em subsection} wird ein
{\em section} und gleich weiter im ganzen verschobenen Block (respektive
umgekehrt wenn aus einem Kapitel ein Unterkapitel wird).
Dieses händische Nachbessern wird obsolet, wenn man in der
Dokumenthierarchie nur ein Element (z.B. {\em section }) kennt, unabhängig
von derjeweiligen Hierarchieebene - man dieses also beliebig ineinander
verschachteln kann. Aus der Tiefe dieser Verschachtelung erhält man dann
die Ebene der Hierarchie für die Übersetzung in ein Zielformat (wie
\ac{ac:Latex }) in dem man je Ebene einen unterschiedlichen Bezeichner hat.
Eine solche Dokumentenhierarchie kann nun zum Beispiel ein Aussehen
wie folgt haben:
\begin{verbatim}
<document>
<section>
<title>1. Kapitel</title>
<para> ... </para>
</section>
<section>
<title>2. Kapitel</title>
<para> ... </para>
<section>
<title>1. Abschnitt</title>
<para> ... </para>
</section>
<section>
<title>2. Abschnitt</title>
<para> ... </para>
</section>
</section>
</document>
\end{verbatim}
Der eigentliche Inhalt der einzelnen Abschnitte befindet sich hier in den
\texttt{<para>} Elementen, und wird entsprechend er weiters darin
enthaltenen Elemente ins Zielformat übersetzt. Die \texttt{<title>} Elemente
enthalten die überschriften der einzelnen (Unter-)Kapitel. Für die
\texttt{<section>} Elemente wir die jeweile Verschachtelungstiefe akkumuliert
(d.h. bei einen Starttag um eins erhöht und beim Endtag wieder um eins
erniedrigt) und entsprechend dieser dann der entsprechende Bezeichner in der
Zielsprache ausgewählt.
Zu obigem Beispiel kann nun die dazugehörige Dokumentenhierarchie in
\ac{ac:Latex} folgendermaßen aussehen:
\begin{verbatim}
\begin{document}
\section{1. Kapitel}
...
\section{2. Kapitel}
...
\subsection{1. Abschnitt}
...
\subsection{2. Abschnitt}
...
\end{document}
\end{verbatim}
\section{Rechnen}
Häufig kommt es vor, dann man eine ganze Menge von Daten als Input hat,
sich jedoch nicht für diese gesamte Datenflut interessiert, sondern nur
ein paar davon abgeleitete Daten benötigt. Das heißt wenn als Input zum
Beispiel eine ganze Tabelle mit Meßwerten zu Verfügung steht ist es möglich
daraus zusätzlich oder ausschließlich repräsentative Werte wie Maximalwerte,
Mittelwert, die Summe oder sonstige beliebige aus den Meßwerten generierbare
Daten. Das bedeutet aber gleichzeitig auch, dass bei einem etwaigen Update
der Inputdaten mit einem neuerlichen Übersetzen des Dokuments diese
generierten Daten im Output ebenfalls automatisch mit upgedatet werden.
Implementiert ist dies in dem Framework in folgender Weise, dass aufgrund des
Designs sämtliche Inputdaten der einzelen \ac{ac:Xml}-Elemente im zur
Datenspeicherung vorgesehenen \texttt{DataObject} (siehe
\ref{subsec:VerwaltungVonInputdaten},
S. \pageref{subsec:VerwaltungVonInputdaten}) gespeichert werden können. Es
können somit also auch ganze Tabellen oder Listen von Inputdaten dort
gesammelt abgelegt werden und am Ende dieser können dann daraus die benötigten
Daten, wobei dies beginnend von Extremwerten, Mittelwerten oder Summen bis hin
zu ganzen statistischen Berechnungen oder Verteilungen oder beliebeige andere
komplizierte Berechnungen sein können, akkumuliert und entsprechend in den
Output eingefügt werden.
Als einfaches Beispiel für diese Funktionalität wurde eine Liste
implementiert, aus deren Daten dann wahlweise der Mittelwert oder die Summe
berechnet werden und abschließend jeweils der Liste angefügt werden.
\section{Lebenslauf - 2 verschiedene Zielformate}
Ziel dieses auf den ersten Blick relativ einfachen Anwendungsbeispiel ist es
einen Lebenslauf zu erstellen und zu übersetzen. Dazu wurde auch ein eigenes
Schema entworfen, dass das Eingabeformat desselben beschreibt. Es besteht aus
einem ersten Teil welcher die gesamten persönlichen Daten wie Name, Geburtsdaten,
Adresse, Telefon und dergleichen enthält und anschließend einer Reihe von
Listen zu den einzelnen Themen wie zum Beispiel Schulbildung, beruflicher Werdegang,
weitere Qualifikationen und ähnlichen mehr. Außerdem sind noch als Attribute
eine Bezeichnung des Lebenslauf und eine Sprachauswahl vorgesehen.
Dieser Aufbau für das Eingabeformat des Lebenslauf wurde dadurch gewonnen,
da als erstes Zielformat {\LaTeX } gewählt wurde in Zusammenspiel mit einem
speziellen \ac{ac:Cv} Style. Die Übersetzung des Lebenslauf nach {\LaTeX } wurde
auch speziell auf die Verwendung dieses Styles abgestimmt.
Der Lebenslauf soll nun aber auch noch in andere Zielformate
(z.B. \ac{ac:Html}) übersetzt werden können. Dazu kann der Großteil der
Transitionen für die Übersetzung nach \LaTeX wiederverwendet werden und nur
jene die effektiv den Output formatieren, welche jedoch eine geringere Anzahl
darstellen, entsprechend adaptiert werden. Es können also wenn einmal die
Übersetzung in ein bestimmtes Format vorhanden ist mit relativ geringem
Aufwand Übersetzungen in andere Formate hinzugefügt werden.
\section{Diagramme}
In Geschäftsberichten, Jahresberichten, Marktanalysen, Erhebungen und noch
vielen anderen Dokumenten ähnlicher Art ist es erforderlich
verschiedenste Diagramme (wie z.B. Kurvendiagramme, Tortendiagramme, Blockdiagramme, ...)
ins gewünschte Enddokument einzufügen. Das heißt man hat eine Reihe von Daten
als Ausgangsbasis aus welchen man dann ein Diagramm beliebiger Art
erstellen muß um dieses anschließend in das Dokument einzubinden.
Bei diesem Framework gibt es nun dahingehend eine wesetliche Erleichterung, dass
es nur notwendig ist in das Sourcedokument die gesammelten Daten für das
Diagramm einzufügen, die Art des Diagramms anzugeben, welches gewünscht wird
und die dafür außer
den Daten noch notwendigen Angaben, und beim Übesetzen in das gewünschte
Zielformat wird dann automatisch das erforderliche Diagramm erstellt und in das
Enddokument eingebunden. Diese komfortable Vorgehensweise konnte gewonnen
werden durch das Einbinden des \texttt{Chart2D}-Packages (FIXXME: Referenz
sourceforge.net/projects/chart2d) mit welchen auf einfach Weise aus einer
Reihe von Daten verschiedene Arten von Diagrammen erstellt werden
können. Solche vom \texttt{Chart2D}-Package erstellten Graphiken werden
dann in Files gespeichert und diese werden dann in den Output eingebunden.
Der Dateninput kann also ähnliche Form wie folgt haben:
\begin{verbatim}
<chart>
<title>Quartalsumsätze 2001</title>
<list chart="pie">
<title>Quartalsumsätze</title>
<item caption="1. Quartal">127</item>
<item caption="2. Quartal">158</item>
<item caption="3. Quartal">113</item>
<item caption="4. Quartal">147</item>
</list>
</chart>
\end{verbatim}
Und dementsprechend wird dann folgene Graphik in das Enddokument eingebunden:
\image[1.0]{images/Quartalsumsätze}{}{Beispiel: generiertes Tortendiagramm}{fig:PieChart}
\section{Apache Servlet}
\chapter{Zusammenfassung und Diskussion}
nicht umgesetzte urds
\section{Zusammenfassung und Diskussion}
bla
\section{Ausblick}
bla
\end{document}
Index: Seminarbericht.gdf
===================================================================
RCS file: /cvsroot/xpg-xml/doc/Seminarbericht.gdf,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Seminarbericht.gdf 18 May 2002 22:07:27 -0000 1.1
--- Seminarbericht.gdf 19 May 2002 18:45:27 -0000 1.2
***************
*** 258,261 ****
--- 258,264 ----
%------------------------------------------------------------
+ @entry{ac:Uri, URI, Uniform Resource Identifier}
+
+ %------------------------------------------------------------
@entry{ac:Url, URL, Uniform Resource Locator}
see also the glossary entry for \gls{gloss:Url}
Index: Seminarbericht.tex
===================================================================
RCS file: /cvsroot/xpg-xml/doc/Seminarbericht.tex,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** Seminarbericht.tex 19 May 2002 11:42:19 -0000 1.2
--- Seminarbericht.tex 19 May 2002 18:45:27 -0000 1.3
***************
*** 51,61 ****
\maketitle
! \section{Abstract}
! Jeder der schon einmal ein Dokument verfasst hat steht früher oder später vor
der Aufgabe dieses auch anderen Personen zugänglich zu machen. Meist ist
allerdings der Inhalt wertvoller als das Aussehen des Dokumentes. Vor allem
bei Wiederverwendung des enthaltenen Wissens bzw. auch nur Teilen davon, steht
! man vor dem grossen Problem der verschiedenen Dokumentformate, die von den
unterschiedlichen Programmen, die zur Erstellung des Dokuments verwendet
[...1085 lines suppressed...]
erniedrigt) und entsprechend dieser dann der entsprechende Bezeichner in der
--- 1885,1889 ----
enthaltenen Elemente ins Zielformat übersetzt. Die \texttt{<title>} Elemente
enthalten die überschriften der einzelnen (Unter-)Kapitel. Für die
! \texttt{<section>} Elemente wir die jeweilige Verschachtelungstiefe akkumuliert
(d.h. bei einen Starttag um eins erhöht und beim Endtag wieder um eins
erniedrigt) und entsprechend dieser dann der entsprechende Bezeichner in der
***************
*** 1884,1888 ****
Zu obigem Beispiel kann nun die dazugehörige Dokumentenhierarchie in
! \ac{ac:Latex} folgendermaßen aussehen:
\begin{verbatim}
--- 1891,1895 ----
Zu obigem Beispiel kann nun die dazugehörige Dokumentenhierarchie in
! \LaTeX\ folgendermaßen aussehen:
\begin{verbatim}
|
|
From: G?nther B. <br...@us...> - 2002-05-19 11:42:22
|
Update of /cvsroot/xpg-xml/doc
In directory usw-pr-cvs1:/tmp/cvs-serv27318
Modified Files:
Seminarbericht.tex
Log Message:
Latex und Rechnen Beispiel
Index: Seminarbericht.tex
===================================================================
RCS file: /cvsroot/xpg-xml/doc/Seminarbericht.tex,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** Seminarbericht.tex 18 May 2002 22:07:27 -0000 1.1
--- Seminarbericht.tex 19 May 2002 11:42:19 -0000 1.2
***************
*** 1823,1852 ****
\section{\LaTeX: flexible Handhabung ganzer Dokumentblöcke}
! Häufig kommt es vor, dass es notwendig ist Teile eines Dokumentes
! umzustrukturieren, ganze Blöcke des Dokuments zu verschieben. Dabei
! kann es auch passieren, dass aus einem Block, der zuvor ein eigenes
! Kapitel darstellte danach nur noch ein Unterkapitel wird - das heißt
! die Dokumenthierarchie wird abgeändert. In einer
! Textbeschreibungssprache wie LaTeX sind jedoch die Hierarchien eines
! Dokumentes strickt vorgegeben, und zwar in der Form
! \begin{itemize}
! \item chapter
! \item section
! \item subsection
! \item subsubsection
! \item paragraph
! \item subparagraph
! \end{itemize}
! Dies bedeuted aber, wenn bei einer etwaigen Umstrukturierung aus einem
! Kapitel ein Unterkapitel wird, dass dieser Eingriff in die Hierarchie
! händisch korrigiert werden muß.Dieses händische Korrigieren nach dem
! Verschieben von Kapitel zu Unterkapiteln und ähnlichem wird obsolet,
! wenn man als Hierarchie zum Beispiel nur ein Element {\em Section }
! kennt, dieses jedoch beliebig ineinander verschachtelt werden
! kann. Die Ebene der Hierarchie erhält man dann aus der
! Verschachtelungstiefe und nicht mehr aus dem Bezeichner. Die
! Dokumenthierarchie kann dann zum Beispiel wie folgt aussehen:
\begin{verbatim}
! <document> <section>
<title>1. Kapitel</title>
<para> ... </para>
--- 1823,1858 ----
\section{\LaTeX: flexible Handhabung ganzer Dokumentblöcke}
! Während der Erstellung größerer Dokumente kann es immer wieder vorkommen,
! dass es notwendig ist Teile eines Dokuments umzustrukturieren, ganze
! Blöcke des Dokuments zu verschieben. Dabei kann es passieren, dass aus
! einem ursprünglich eigenem Kapitel nunmehr ein Unterkapitel wird oder
! umgekehrt aus einem anfangs nur als kleines Unterkapitel gedachtem Block
! nun ein eigenes großes Kapitel wird. Das bedeutet aber, dass Änderungen in der
! Dokumentenhierarchie vorgenommen werden. Nun ist jedoch in
! Textbeschreibungssprachen wie \ac{ac:Latex}, dass diese Heirarchie eines
! Dokuments eine sehr genau vorgegebene Form haben muß - bei \ac{ac:Latex}
! sind dies der Reihe nach {\em part, chapter, section, subsection,
! subsubsection, paragraph, subparagraph}. Dies bedeutet nun aber, wenn
! bei solchen Umstrukturierungen aus Unterkapiteln eigene Kapitel werden
! (und analog umgekehrt), dass diese Modifikationen der Dokumenthierarchie
! händisch nachgebessert werden müssen: aus einem {\em section} wird ein
! {\em chapter}, aus dem darin enthaltenen {\em subsection} wird ein
! {\em section} und gleich weiter im ganzen verschobenen Block (respektive
! umgekehrt wenn aus einem Kapitel ein Unterkapitel wird).
!
! Dieses händische Nachbessern wird obsolet, wenn man in der
! Dokumenthierarchie nur ein Element (z.B. {\em section }) kennt, unabhängig
! von derjeweiligen Hierarchieebene - man dieses also beliebig ineinander
! verschachteln kann. Aus der Tiefe dieser Verschachtelung erhält man dann
! die Ebene der Hierarchie für die Übersetzung in ein Zielformat (wie
! \ac{ac:Latex }) in dem man je Ebene einen unterschiedlichen Bezeichner hat.
!
! Eine solche Dokumentenhierarchie kann nun zum Beispiel ein Aussehen
! wie folgt haben:
!
\begin{verbatim}
!
! <document>
! <section>
<title>1. Kapitel</title>
<para> ... </para>
***************
*** 1865,1883 ****
</section>
</document>
\end{verbatim}
Der eigentliche Inhalt der einzelnen Abschnitte befindet sich hier in den
! \texttt{<para>...</para>} Elementen, und wird - auf das schließende Tag
! getriggert - mittels {\em WriteParaTransition } geschrieben (dies ist
! derzeit unabhängig von der Zielsprache). Auf das Begin-Tag der Section wird eine
! sogenannte {\em WriteSectHeaderTransition } getriggert, welche dann abhängig
! von der Verschachtelungstiefe section, subsection, subsubsection, ... und
! Überschrift schreibt und die Verschachtelungstiefe um eins erhöht - diese
! wird im DataObject abgelegt. Auf das schließende Tag der Section ist eine
! sogenannte {\em SectEndTransition } getriggert. Diese vermindert nur den
! Wert der im DataObject abgelegten Verschachtelungstiefe um eins.
\section{Rechnen}
\section{Apache Servlet}
--- 1871,1925 ----
</section>
</document>
+
\end{verbatim}
Der eigentliche Inhalt der einzelnen Abschnitte befindet sich hier in den
! \texttt{<para>} Elementen, und wird entsprechend er weiters darin
! enthaltenen Elemente ins Zielformat übersetzt. Die \texttt{<title>} Elemente
! enthalten die überschriften der einzelnen (Unter-)Kapitel. Für die
! \texttt{<section>} Elemente wir die jeweile Verschachtelungstiefe akkumuliert
! (d.h. bei einen Starttag um eins erhöht und beim Endtag wieder um eins
! erniedrigt) und entsprechend dieser dann der entsprechende Bezeichner in der
! Zielsprache ausgewählt.
!
! Zu obigem Beispiel kann nun die dazugehörige Dokumentenhierarchie in
! \ac{ac:Latex} folgendermaßen aussehen:
!
! \begin{verbatim}
!
! \begin{document}
!
! \section{1. Kapitel}
! ...
!
! \section{2. Kapitel}
! ...
! \subsection{1. Abschnitt}
! ...
! \subsection{2. Abschnitt}
! ...
!
! \end{document}
!
! \end{verbatim}
\section{Rechnen}
+ Häufig kommt es vor, dann man eine ganze Menge von Daten als Input hat,
+ sich jedoch nicht für diese gesamte Datenflut interessiert, sondern nur
+ ein paar davon abgeleitete Daten benötigt. Das heißt als Input kann eine
+ ganze Tabelle von zum Beispiel Meßwerten zu Verfügung stehen, man
+ benötigt allerdings zusätzlich oder ausschließlich Maximalwerte, den
+ Mittelwert, die Summe oder sonstige aus den Inputwerten generierbare Daten.
+
+ Da aufgrund des Designs dieses Frameworks ein leichtes ist sämtliche
+ Inputdaten der einzelnen \ac{ac:Xml}-Elemente im zur Datenspeicherung
+ vorgesehenen DataObject (FIXXME: Referenz) zu speichern, kann man nun die
+ Daten eine Tabelle/Liste gesammelt dort ablegen und am Ende daraus die
+ benötigten Daten (Summe, Durchschnitt, Spitzenwerte, ...) akkumulieren
+ und in den Output einfügen.
+
+ \section{Diagramme}
+
\section{Apache Servlet}
|
|
From: G?nther B. <br...@us...> - 2002-05-19 08:36:46
|
Update of /cvsroot/xpg-xml/edu/iicm/xpg/transitions/simple
In directory usw-pr-cvs1:/tmp/cvs-serv20099/transitions/simple
Added Files:
WriteChartTransition.java
Log Message:
new staff for piechart-example
--- NEW FILE: WriteChartTransition.java ---
/***********************************************************************
*
* Copyright (c) 2001 IICM, Graz University of Technology
* Schiesstattgasse 4a, A-8010 Graz, Austria.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License (LGPL)
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***********************************************************************/
package edu.iicm.xpg.transitions.simple;
import edu.iicm.xpg.statemachine.Transition;
import edu.iicm.xpg.statemachine.State;
import edu.iicm.xpg.statemachine.StateMachine;
import edu.iicm.xpg.statemachine.Input;
import edu.iicm.xpg.statemachine.XMLInput;
import edu.iicm.xpg.statemachine.XMLElement;
import edu.iicm.xpg.statemachine.DataObject;
import edu.iicm.xpg.statemachine.Const;
import edu.iicm.xpg.util.Debug;
import net.sourceforge.chart2d.Chart2DProperties;
import net.sourceforge.chart2d.GraphProperties;
import net.sourceforge.chart2d.GraphChart2DProperties;
import net.sourceforge.chart2d.Dataset;
import net.sourceforge.chart2d.PieChart2DProperties;
import net.sourceforge.chart2d.PieChart2D;
import net.sourceforge.chart2d.LBChart2D;
import java.util.Vector;
import java.util.Enumeration;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import java.awt.Dimension;
import java.awt.Toolkit;
//----------------------------------------------------------------------
/**
* @author Guenther Brand
* @version $Revision: 1.1 $
*/
public class WriteChartTransition implements Transition
{
//----------------------------------------------------------------------
/**
* @param input the input that triggered this transition
* @param from_state the start state for this transition
* @param to_state the destination state for this transition
* @param machine the state machine that this transition belongs to
* @param data user defined data
* @return
* @exception Exception whatever an implementation can throw
*/
public String transitionTriggered(Input input,State from_state,State to_state,
StateMachine machine,DataObject data)
throws Exception
{
StringBuffer result = (StringBuffer)data.getObject(Const.RESULT_BUFFER);
Vector list_items = (Vector)data.removeObject("list items");
String list_title = ((XMLElement)data.removeObject("title")).getValue();
String chart_type = data.getXMLElement().getAttributes().getValue("chart");
String chart_filename = list_title.trim();
result.append("\n<h2>" + list_title + "<h2>\n");
//<-- Begin Chart2D configuration -->
//Configure chart properties
Chart2DProperties chart2DProps = new Chart2DProperties();
chart2DProps.setChartTitleText(list_title);
if (chart_type.equals("pie"))
{
//Configure graph properties
Dataset dataset = new Dataset (list_items.size(), 1, 1);
String[] legendLabels = new String[list_items.size()];
for (int idx = 0; idx < list_items.size(); idx++)
{
String[] item = (String[])list_items.get(idx);
legendLabels[idx] = item[0];
String value = item[1];
dataset.set(idx, 0, 0, new Float(value).floatValue());
}
PieChart2DProperties pieChart2DProps =
new PieChart2DProperties (chart2DProps, dataset);
pieChart2DProps.setLegendLabelsTexts (legendLabels);
PieChart2D chart2D = new PieChart2D (pieChart2DProps);
//<-- End Chart2D configuration -->
JFrame frame = new JFrame();
frame.getContentPane().add (chart2D); //Add Chart2D to GUI
frame.setTitle (list_title);
frame.pack();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation ( (screenSize.width - frame.getSize().width) / 2,
(screenSize.height - frame.getSize().height) / 2 );
ImageIO.write(chart2D.getImage(), "PNG", new File(chart_filename));
}
else if (chart_type.equals("line"))
{
//Configure graph properties
Dataset dataset = new Dataset(1, list_items.size(), 1);
String[] axisLabels = new String[list_items.size()];
for (int idx = 0; idx < list_items.size(); idx++)
{
String[] item = (String[])list_items.get(idx);
axisLabels[idx] = item[0];
String value = item[1];
dataset.set(0, idx, 0, new Float(value).floatValue());
}
GraphProperties graphProps = new GraphProperties (dataset);
graphProps.setGraphBarsExistence (false);
graphProps.setGraphLinesExistence (true);
graphProps.setGraphLinesFillInterior (true);
graphProps.setGraphAllowComponentAlignment (true);
graphProps.setGraphBetweenComponentsGapExistence (false);
//Configure graph chart properties
GraphChart2DProperties graphChart2DProps =
new GraphChart2DProperties (chart2DProps, graphProps);
graphChart2DProps.setLabelsAxisLabelsTexts (axisLabels);
graphChart2DProps.setLabelsAxisTicksAlignment (graphChart2DProps.CENTERED);
//Configure chart
LBChart2D chart2D = new LBChart2D (graphChart2DProps);
//<-- End Chart2D configuration -->
JFrame frame = new JFrame();
frame.getContentPane().add (chart2D); //Add Chart2D to GUI
frame.setTitle (list_title);
frame.pack();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation ( (screenSize.width - frame.getSize().width) / 2,
(screenSize.height - frame.getSize().height) / 2 );
ImageIO.write(chart2D.getImage(), "PNG", new File(chart_filename));
}
result.append("\n<img href=\"" + chart_filename + "\">\n");
return(null);
}
}
|
|
From: G?nther B. <br...@us...> - 2002-05-19 08:36:46
|
Update of /cvsroot/xpg-xml/edu/iicm/xpg/transitions/latex
In directory usw-pr-cvs1:/tmp/cvs-serv20099/transitions/latex
Modified Files:
WriteGeneralHeaderTransition.java
Added Files:
WriteChartTransition.java
Log Message:
new staff for piechart-example
--- NEW FILE: WriteChartTransition.java ---
/***********************************************************************
*
* Copyright (c) 2001 IICM, Graz University of Technology
* Schiesstattgasse 4a, A-8010 Graz, Austria.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License (LGPL)
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***********************************************************************/
package edu.iicm.xpg.transitions.latex;
import edu.iicm.xpg.statemachine.Transition;
import edu.iicm.xpg.statemachine.State;
import edu.iicm.xpg.statemachine.StateMachine;
import edu.iicm.xpg.statemachine.Input;
import edu.iicm.xpg.statemachine.XMLInput;
import edu.iicm.xpg.statemachine.XMLElement;
import edu.iicm.xpg.statemachine.DataObject;
import edu.iicm.xpg.statemachine.Const;
import edu.iicm.xpg.util.Debug;
import net.sourceforge.chart2d.Chart2DProperties;
import net.sourceforge.chart2d.GraphProperties;
import net.sourceforge.chart2d.GraphChart2DProperties;
import net.sourceforge.chart2d.Dataset;
import net.sourceforge.chart2d.PieChart2DProperties;
import net.sourceforge.chart2d.PieChart2D;
import net.sourceforge.chart2d.LBChart2D;
import java.util.Vector;
import java.util.Enumeration;
import java.io.File;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
import java.awt.Dimension;
import java.awt.Toolkit;
//----------------------------------------------------------------------
/**
* @author Guenther Brand
* @version $Revision: 1.1 $
*/
public class WriteChartTransition implements Transition
{
//----------------------------------------------------------------------
/**
* @param input the input that triggered this transition
* @param from_state the start state for this transition
* @param to_state the destination state for this transition
* @param machine the state machine that this transition belongs to
* @param data user defined data
* @return
* @exception Exception whatever an implementation can throw
*/
public String transitionTriggered(Input input,State from_state,State to_state,
StateMachine machine,DataObject data)
throws Exception
{
StringBuffer result = (StringBuffer)data.getObject(Const.RESULT_BUFFER);
Vector list_items = (Vector)data.removeObject("list items");
String list_title = ((XMLElement)data.removeObject("title")).getValue();
String chart_type = data.getXMLElement().getAttributes().getValue("chart");
String chart_filename = list_title.trim();
result.append("\n\\section{" + list_title + "}\n");
//<-- Begin Chart2D configuration -->
//Configure chart properties
Chart2DProperties chart2DProps = new Chart2DProperties();
chart2DProps.setChartTitleText(list_title);
if (chart_type.equals("pie"))
{
//Configure graph properties
Dataset dataset = new Dataset (list_items.size(), 1, 1);
String[] legendLabels = new String[list_items.size()];
for (int idx = 0; idx < list_items.size(); idx++)
{
String[] item = (String[])list_items.get(idx);
legendLabels[idx] = item[0];
String value = item[1];
dataset.set(idx, 0, 0, new Float(value).floatValue());
}
PieChart2DProperties pieChart2DProps =
new PieChart2DProperties (chart2DProps, dataset);
pieChart2DProps.setLegendLabelsTexts (legendLabels);
PieChart2D chart2D = new PieChart2D (pieChart2DProps);
//<-- End Chart2D configuration -->
JFrame frame = new JFrame();
frame.getContentPane().add (chart2D); //Add Chart2D to GUI
frame.setTitle (list_title);
frame.pack();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation ( (screenSize.width - frame.getSize().width) / 2,
(screenSize.height - frame.getSize().height) / 2 );
ImageIO.write(chart2D.getImage(), "PNG", new File(chart_filename));
}
else if (chart_type.equals("line"))
{
//Configure graph properties
Dataset dataset = new Dataset(1, list_items.size(), 1);
String[] axisLabels = new String[list_items.size()];
for (int idx = 0; idx < list_items.size(); idx++)
{
String[] item = (String[])list_items.get(idx);
axisLabels[idx] = item[0];
String value = item[1];
dataset.set(0, idx, 0, new Float(value).floatValue());
}
GraphProperties graphProps = new GraphProperties (dataset);
graphProps.setGraphBarsExistence (false);
graphProps.setGraphLinesExistence (true);
graphProps.setGraphLinesFillInterior (true);
graphProps.setGraphAllowComponentAlignment (true);
graphProps.setGraphBetweenComponentsGapExistence (false);
//Configure graph chart properties
GraphChart2DProperties graphChart2DProps =
new GraphChart2DProperties (chart2DProps, graphProps);
graphChart2DProps.setLabelsAxisLabelsTexts (axisLabels);
graphChart2DProps.setLabelsAxisTicksAlignment (graphChart2DProps.CENTERED);
//Configure chart
LBChart2D chart2D = new LBChart2D (graphChart2DProps);
//<-- End Chart2D configuration -->
JFrame frame = new JFrame();
frame.getContentPane().add (chart2D); //Add Chart2D to GUI
frame.setTitle (list_title);
frame.pack();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
frame.setLocation ( (screenSize.width - frame.getSize().width) / 2,
(screenSize.height - frame.getSize().height) / 2 );
ImageIO.write(chart2D.getImage(), "PNG", new File(chart_filename));
}
result.append("\n\\includegraphics{" + chart_filename + "}\n");
return(null);
}
}
Index: WriteGeneralHeaderTransition.java
===================================================================
RCS file: /cvsroot/xpg-xml/edu/iicm/xpg/transitions/latex/WriteGeneralHeaderTransition.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** WriteGeneralHeaderTransition.java 18 Mar 2002 06:45:54 -0000 1.1
--- WriteGeneralHeaderTransition.java 19 May 2002 08:36:43 -0000 1.2
***************
*** 56,60 ****
{
StringBuffer html_form = new StringBuffer();
! html_form.append("\\documentclass[a4paper,titlepage]{article}\n\\usepackage{times}\n\n" +
"\\begin{document}\n");
data.putObject(Const.RESULT_BUFFER, html_form);
--- 56,63 ----
{
StringBuffer html_form = new StringBuffer();
! html_form.append("\\documentclass[a4paper,titlepage]{article}\n" +
! "\\usepackage{times}\n" +
! // "\\usepackage[dinodraft,german]{dino}\n\n" +
! "\\usepackage{graphicx}\n\n" +
"\\begin{document}\n");
data.putObject(Const.RESULT_BUFFER, html_form);
|
|
From: G?nther B. <br...@us...> - 2002-05-19 08:36:46
|
Update of /cvsroot/xpg-xml/edu/iicm/xpg In directory usw-pr-cvs1:/tmp/cvs-serv20099 Added Files: chart.xsd chart1.xml chart_config_html.xml chart_config_latex.xml Log Message: new staff for piechart-example --- NEW FILE: chart.xsd --- <?xml version="1.0" standalone="no"?> <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:element name="chart"> <xsd:complexType> <xsd:sequence> <xsd:element name="title" type="xsd:string" /> <xsd:element name="list" type="List" maxOccurs="unbounded" /> </xsd:sequence> </xsd:complexType> </xsd:element> <xsd:complexType name="List"> <xsd:sequence> <xsd:element name="title" type="xsd:string" minOccurs="0"/> <xsd:element name="item" maxOccurs="unbounded"> <xsd:complexType> <xsd:simpleContent> <xsd:extension base="xsd:string"> <xsd:attribute name="caption" type="xsd:string" /> </xsd:extension> </xsd:simpleContent> </xsd:complexType> </xsd:element> </xsd:sequence> <xsd:attribute name="chart" type="ChartType" use="required" /> </xsd:complexType> <xsd:simpleType name="ChartType" > <xsd:restriction base="xsd:string"> <xsd:enumeration value="pie"/> <xsd:enumeration value="line"/> </xsd:restriction> </xsd:simpleType> </xsd:schema> --- NEW FILE: chart1.xml --- <chart xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="chart.xsd"> <title>Quartalsumsätze 2001</title> <list chart="pie"> <title>Quartalsumsätze</title> <item caption="1. Quartal">127</item> <item caption="2. Quartal">158</item> <item caption="3. Quartal">113</item> <item caption="4. Quartal">147</item> </list> </chart> --- NEW FILE: chart_config_html.xml --- <?xml version="1.0" standalone="no"?> <statemachine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="StateMachineConfig.xsd"> <path>edu.iicm.xpg.transitions.simple</path> <states> <startstate>file top</startstate> <state>doc top</state> <state>doc title</state> <state>list</state> <state>listtitle</state> <state>listitem</state> <state>finished</state> </states> <transitions> <transition> <beginstate>file top</beginstate> <nextstate>doc top</nextstate> <element type="start">chart</element> <classname>WriteGeneralHeaderTransition</classname> </transition> <transition> <beginstate>file top</beginstate> <nextstate>finished</nextstate> <element type="enddoc" /> <classname>StopMachineTransition</classname> </transition> <transition> <beginstate>file top</beginstate> <nextstate>file top</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>file top</nextstate> <element type="end">chart</element> <classname>WriteGeneralFooterTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>doc title</nextstate> <element type="start">title</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>list</nextstate> <element type="start">list</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>doc top</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>doc title</beginstate> <nextstate>doc top</nextstate> <element type="end">title</element> <classname>WriteHeaderTransition</classname> </transition> <transition> <beginstate>doc title</beginstate> <nextstate>doc title</nextstate> <classname>StoreDocTitleTransition</classname> </transition> <transition> <beginstate>list</beginstate> <nextstate>doc top</nextstate> <element type="end">list</element> <classname>WriteChartTransition</classname> </transition> <transition> <beginstate>list</beginstate> <nextstate>listtitle</nextstate> <element type="start">title</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>list</beginstate> <nextstate>listitem</nextstate> <element type="start">item</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>list</beginstate> <nextstate>list</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>listtitle</beginstate> <nextstate>list</nextstate> <element type="end">title</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>listtitle</beginstate> <nextstate>listtitle</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>listitem</beginstate> <nextstate>list</nextstate> <element type="end">item</element> <classname>StoreListItemTransition</classname> </transition> <transition> <beginstate>listitem</beginstate> <nextstate>listitem</nextstate> <classname>IgnoreCharsTransition</classname> </transition> </transitions> </statemachine > --- NEW FILE: chart_config_latex.xml --- <?xml version="1.0" standalone="no"?> <statemachine xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="StateMachineConfig.xsd"> <path>edu.iicm.xpg.transitions.latex</path> <path>edu.iicm.xpg.transitions.simple</path> <states> <startstate>file top</startstate> <state>doc top</state> <state>doc title</state> <state>list</state> <state>listtitle</state> <state>listitem</state> <state>finished</state> </states> <transitions> <transition> <beginstate>file top</beginstate> <nextstate>doc top</nextstate> <element type="start">chart</element> <classname>WriteGeneralHeaderTransition</classname> </transition> <transition> <beginstate>file top</beginstate> <nextstate>finished</nextstate> <element type="enddoc" /> <classname>StopMachineTransition</classname> </transition> <transition> <beginstate>file top</beginstate> <nextstate>file top</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>file top</nextstate> <element type="end">chart</element> <classname>WriteGeneralFooterTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>doc title</nextstate> <element type="start">title</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>list</nextstate> <element type="start">list</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>doc top</beginstate> <nextstate>doc top</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>doc title</beginstate> <nextstate>doc top</nextstate> <element type="end">title</element> <classname>WriteHeaderTransition</classname> </transition> <transition> <beginstate>doc title</beginstate> <nextstate>doc title</nextstate> <classname>StoreDocTitleTransition</classname> </transition> <transition> <beginstate>list</beginstate> <nextstate>doc top</nextstate> <element type="end">list</element> <classname>WriteChartTransition</classname> </transition> <transition> <beginstate>list</beginstate> <nextstate>listtitle</nextstate> <element type="start">title</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>list</beginstate> <nextstate>listitem</nextstate> <element type="start">item</element> <classname>PrimitiveTransition</classname> </transition> <transition> <beginstate>list</beginstate> <nextstate>list</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>listtitle</beginstate> <nextstate>list</nextstate> <element type="end">title</element> <classname>StoreXMLElementTransition</classname> </transition> <transition> <beginstate>listtitle</beginstate> <nextstate>listtitle</nextstate> <classname>IgnoreCharsTransition</classname> </transition> <transition> <beginstate>listitem</beginstate> <nextstate>list</nextstate> <element type="end">item</element> <classname>StoreListItemTransition</classname> </transition> <transition> <beginstate>listitem</beginstate> <nextstate>listitem</nextstate> <classname>IgnoreCharsTransition</classname> </transition> </transitions> </statemachine > |
|
From: G?nther B. <br...@us...> - 2002-05-19 08:35:53
|
Update of /cvsroot/xpg-xml/edu/iicm/xpg/chart_bsp In directory usw-pr-cvs1:/tmp/cvs-serv19953/chart_bsp Log Message: Directory /cvsroot/xpg-xml/edu/iicm/xpg/chart_bsp added to the repository |
|
From: Edmund H. <so...@us...> - 2002-05-18 22:07:29
|
Update of /cvsroot/xpg-xml/doc
In directory usw-pr-cvs1:/tmp/cvs-serv15301
Added Files:
Seminarbericht.bib Seminarbericht.gdf Seminarbericht.tex
Log Message:
die notwendigen Seminarbericht.* dinger, etwaige bilder einfach
bei mir anfordern
--- NEW FILE: Seminarbericht.bib ---
@Misc{Braille:Iso11548,
OPTkey = {},
OPTauthor = {},
title = {{Braille} International Standard - ISO11548},
OPThowpublished = {},
OPTmonth = {},
year = {2001},
note = {Communication aids for blind persons -- Identifiers, names and assignation to coded character sets for 8-dot Braille characters -- Part 1: General guidelines for Braille identifiers and shift marks, Part 2: Latin alphabet based character sets},
OPTannote = {}
}
@Misc{Scheme,
OPTkey = {},
author = {R. Kelsey and W. Clinger and J. Rees (Editors)},
title = {Revised(5) Report on the Algorithmic Language Scheme},
OPThowpublished = {},
OPTmonth = {},
OPTyear = {},
note = {available online: \url{http://www.swiss.ai.mit.edu/~jaffer/r5rs_toc.html}},
OPTannote = {}
}
@Misc{pdf,
OPTkey = {},
OPTauthor = {},
title = {The {PDF} Reference Manual Version 1.3},
OPThowpublished = {},
month = {3},
year = {1999},
note = {available online: \url{http://www.pdfzone.com/pdfs/PDFSPEC13.PDF}},
OPTannote = {}
}
@Misc{mathml,
OPTkey = {},
OPTauthor = {},
title = {Mathematical Markup Language (MathML) Version 2.0},
OPThowpublished = {},
month = {2},
year = {2001},
note = {available online: \url{http://www.w3.org/TR/MathML2}},
OPTannote = {}
}
@Misc{ps,
OPTkey = {},
OPTauthor = {},
title = {PostScript Language Reference, Third Edition},
howpublished = {Addison-Wesley},
OPTmonth = {},
OPTyear = {},
note = {available online: \url{http://partners.adobe.com/asn/developer/pdfs/tn/PLRM.pdf}},
OPTannote = {}
}
@Article{managing,
author = {P. Ciancarini and F. Vitali and C. Mascolo},
title = {Managing complex documents over the {WWW}: a case study for {XML}},
journal = {IEEE-Transactions-on-Knowledge-and-Data-Engineering},
year = {1999},
OPTkey = {},
volume = {11},
number = {4},
pages = {629-38},
month = {July-Aug},
OPTnote = {},
OPTannote = {}
}
@InProceedings{ flexml,
author = {A. Kaplan and J. Lunn},
title = {Flex{XML}: engineering a more flexible and adaptable web},
booktitle = {Proceedings International Conference on Information Technology: Coding and Computing.},
OPTcrossref = {},
OPTkey = {},
pages = {405-10},
year = {2001},
editor = {Dept. of Comput. Sci., Clemson Univ. },
volume = {xiv+698},
OPTnumber = {},
OPTseries = {},
address = {SC, USA},
OPTmonth = {},
organization = {IEEE Comput. Soc, Los Alamitos},
OPTpublisher = {},
note = {Proceedings International Conference on Information Technology: Coding and Computing. 2-4 April 2001; Las Vegas, NV, USA. Sponsored by: IEEE Comput. Soc},
OPTannote = {}
}
@InProceedings{ xt3d,
author = {S. Krishnamurthi and K. E. Gray and P. T.Graunke},
title = {Transformation-by-example for {XML}},
booktitle = {Practical Aspects of Declarative Languages. Second International Workshop, PADL 2000. Proceedings (Lecture Notes in Computer Science Vol.1753)},
OPTcrossref = {},
OPTkey = {},
pages = {249-62},
year = {2000},
editor = {Dept. of Comput. Sci., Rice Univ.},
volume = {1753},
OPTnumber = {},
OPTseries = {},
address = {Houston, TX, USA},
OPTmonth = {},
organization = {Springer-Verlag, Berlin, Germany},
OPTpublisher = {},
note = {Proceedings of 2nd Workshop on the Practical Aspects on Declarative Languages 2000. 17-18 Jan. 2000; Boston, MA, USA},
OPTannote = {}
}
@Misc{ xpg,
OPTkey = {},
author = {C. Dallermassl and K. Schmaranz and H. Krottmaier},
title = {XPG Concept},
OPThowpublished = {},
month = {September},
year = {2001},
note = {available online \url{http://courses.iicm.edu/xpg/docs/xpg_concept.pdf/}},
OPTannote = {}
}
@TechReport{ rec-xml,
author = {T. Bray and J. Paoli and C. M. Sperberg-McQueen and Eve Maler (Editors)},
title = {Extensible Markup Language (XML) 1.0},
institution = {World Wide Web Consortium (W3C)},
year = {2000},
OPTkey = {},
OPTtype = {},
OPTnumber = {},
OPTaddress = {},
month = {October},
note = {available online \url{http://www.w3.org/TR/REC-xml}},
OPTannote = {}
}
@Misc{sax,
OPTkey = {},
author = {D. Megginsion},
title = {Simple API for XML},
OPThowpublished = {},
month = {May},
year = {2000},
note = {available online \url{http://www.saxproject.org/}},
OPTannote = {}
}
@Misc{xerces,
OPTkey = {},
OPTauthor = {},
title = {Xerces2 Java Parser 2.0.1},
OPThowpublished = {},
OPTmonth = {},
OPTyear = {},
note = {available online \url{http://xml.apache.org/xerces2-j/}},
OPTannote = {}
}
--- NEW FILE: Seminarbericht.gdf ---
%
% this is the global glossary file for all dinopolis documents
%
% the syntax of the glossary entries is the following:
% this is a comment
%
% @entry{<label>, <short form>[, <long form>]*} <explanation>
% the label is created as following:
% "ac:ShortFormFirstLettersUppercase" for acronyms
% "gloss:ShortFormFirstLettersUppercase" for glossary entries
%
% DO NOT USE \glxref for crossreferences between acronyms and
% glossary! This creates a glossary entry in the list of
% acronyms or vice versa!!
%============================================================
[...988 lines suppressed...]
Technology). Some of the big advantages of X Windows compared to other
systems (such as MS-Windows or GEM) are its networking capabilities
and its flexibility. It is possible, for example, to run programs on
other machines and redirect their output to your display while freely
adapting the look and feel of your system.\\ In this case, the X
Server is the local X Window System, whereas the client is the remote
application that connects to the local X Server to be displayed.
%------------------------------------------------------------
@entry{gloss:Xml, XML, eXtended Markup Language} A specification
developed by the \externalref{W3C}{http://www.w3c.org}. XML is a
pared-down version of SGML, designed especially for Web documents. It
allows designers to create their own customized tags, enabling the
definition, transmission, validation, and interpretation of data
between applications and between organizations.
%============================================================
%= end of glossary
%============================================================
--- NEW FILE: Seminarbericht.tex ---
\documentclass[oneside,a4paper,11pt]{book}
\usepackage{german}
\usepackage{isolatin1}
\usepackage[dinodraft,german]{dino}
%\usepackage{acronym}
% ---------- change paragraph layout --------------------
\parskip1.2ex % Vertikaler Abstand zwischen Absaetzen
\parindent0cm % Nicht einrücken bei neuem Absatz
% ---------- change name of tables --------------------
\renewcommand{\tablename}{Tabelle}
\global\def\tableCaption{\tablename}
% ------------------- settings for pdf documents ----------------------------
\expandafter\ifx\csname pdfoutput\endcsname\relax
\else
[...1965 lines suppressed...]
</xsd:complexType>
</xsd:element>
<xsd:element name="classname" type="xsd:string" minOccurs="1" maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:simpleType name="ElementAttributes">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="start"/>
<xsd:enumeration value="end"/>
<xsd:enumeration value="enddoc"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
\end{verbatim}
\normalsize
\end{document}
|
|
From: Edmund H. <so...@us...> - 2002-05-18 22:02:59
|
Update of /cvsroot/xpg-xml/doc In directory usw-pr-cvs1:/tmp/cvs-serv13416/doc Log Message: Directory /cvsroot/xpg-xml/doc added to the repository |
|
From: Stefan T. <th...@us...> - 2002-05-15 14:32:37
|
Update of /cvsroot/xpg-xml/edu/iicm/xpg/transitions/cvlatex
In directory usw-pr-cvs1:/tmp/cvs-serv5495
Modified Files:
WritePersonalTransition.java
Log Message:
latex braclet error fixed
Index: WritePersonalTransition.java
===================================================================
RCS file: /cvsroot/xpg-xml/edu/iicm/xpg/transitions/cvlatex/WritePersonalTransition.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** WritePersonalTransition.java 13 May 2002 22:46:12 -0000 1.2
--- WritePersonalTransition.java 15 May 2002 14:32:33 -0000 1.3
***************
*** 81,85 ****
"\n\\Large{\\textsc{" + name + "}}\n" +
"\\end{center}\n" +
! "\\vspace[1.5\\baselineskip}\n");
if ( lang.equals("de") )
--- 81,85 ----
"\n\\Large{\\textsc{" + name + "}}\n" +
"\\end{center}\n" +
! "\\vspace{1.5\\baselineskip}\n");
if ( lang.equals("de") )
|
|
From: Stefan T. <th...@us...> - 2002-05-15 12:24:44
|
Update of /cvsroot/xpg-xml/edu/iicm/xpg/generator
In directory usw-pr-cvs1:/tmp/cvs-serv27095
Modified Files:
DocumentGenerator.java
Removed Files:
TestGenerator.java
Log Message:
obsolete class
Index: DocumentGenerator.java
===================================================================
RCS file: /cvsroot/xpg-xml/edu/iicm/xpg/generator/DocumentGenerator.java,v
retrieving revision 1.8
retrieving revision 1.9
diff -C2 -d -r1.8 -r1.9
*** DocumentGenerator.java 8 Apr 2002 14:13:15 -0000 1.8
--- DocumentGenerator.java 15 May 2002 12:24:39 -0000 1.9
***************
*** 57,61 ****
if (Debug.DEBUG)
{
! Debug.setWriterToFile("./debug.log");
Debug.setMessageFormat("DEBUG %level%: \"%message%\"");
Debug.addLevelsToPrint(Debug.WARNING_LEVEL+" "+ Debug.TRANSITION_LEVEL+" "+Debug.PARSER_LEVEL +" "+Debug.VERBOSE_LEVEL );
--- 57,61 ----
if (Debug.DEBUG)
{
! Debug.setWriterToFile("./documentgenerator.log");
Debug.setMessageFormat("DEBUG %level%: \"%message%\"");
Debug.addLevelsToPrint(Debug.WARNING_LEVEL+" "+ Debug.TRANSITION_LEVEL+" "+Debug.PARSER_LEVEL +" "+Debug.VERBOSE_LEVEL );
--- TestGenerator.java DELETED ---
|
|
From: G?nther B. <br...@us...> - 2002-05-13 22:46:15
|
Update of /cvsroot/xpg-xml/edu/iicm/xpg/transitions/cvlatex
In directory usw-pr-cvs1:/tmp/cvs-serv29183/transitions/cvlatex
Modified Files:
WriteGeneralHeaderTransition.java WritePersonalTransition.java
Log Message:
CV example to latex and html
Index: WriteGeneralHeaderTransition.java
===================================================================
RCS file: /cvsroot/xpg-xml/edu/iicm/xpg/transitions/cvlatex/WriteGeneralHeaderTransition.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** WriteGeneralHeaderTransition.java 4 May 2002 17:07:54 -0000 1.1
--- WriteGeneralHeaderTransition.java 13 May 2002 22:46:12 -0000 1.2
***************
*** 34,38 ****
//----------------------------------------------------------------------
/**
! * @author Klaus Schmaranz
* @version $Revision$
*/
--- 34,38 ----
//----------------------------------------------------------------------
/**
! * @author Guenther Brand
* @version $Revision$
*/
***************
*** 67,70 ****
--- 67,73 ----
data.putObject(Const.RESULT_BUFFER, document);
+
+ data.putObject("Attributes", data.getXMLElement().getAttributes());
+
return(null);
}
Index: WritePersonalTransition.java
===================================================================
RCS file: /cvsroot/xpg-xml/edu/iicm/xpg/transitions/cvlatex/WritePersonalTransition.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -d -r1.1 -r1.2
*** WritePersonalTransition.java 13 May 2002 06:25:22 -0000 1.1
--- WritePersonalTransition.java 13 May 2002 22:46:12 -0000 1.2
***************
*** 34,37 ****
--- 34,39 ----
import edu.iicm.xpg.util.Debug;
+ import org.xml.sax.Attributes;
+
import java.util.Vector;
import java.util.Enumeration;
***************
*** 63,105 ****
StringBuffer result = (StringBuffer)data.getObject(Const.RESULT_BUFFER);
String name = ((XMLElement)data.getObject("name")).getValue();
result.append("\n\\begin{center}\n" +
! "\\huge{\\textsc{Curriculum Vitae}}\n" +
"\\vspace{\\baselineskip}\n" +
"\n\\Large{\\textsc{" + name + "}}\n" +
"\\end{center}\n" +
"\\vspace[1.5\\baselineskip}\n");
!
! result.append("\n\\section{Persönliche Daten}" +
! "\n\\begin{CV}" +
! "\n\\item[Name:] " + name);
! result.append("\n\\item[geboren am:] " +
! ((XMLElement)data.getObject("birthdate")).getValue() +
! " in " +
! ((XMLElement)data.getObject("birthplace")).getValue());
! XMLElement marital = (XMLElement)data.getObject("marital");
! if ( marital != null )
! result.append("\n\\item[Familienstand:] " +
! marital.getAttributes().getValue("status"));
! result.append("\n\\item[Adresse:] " +
! ((XMLElement)data.getObject("address")).getValue());
! XMLElement country = (XMLElement)data.getObject("country");
! if ( country != null )
! result.append(", " + country.getValue());
! XMLElement phone = (XMLElement)data.getObject("phone");
! if ( phone != null )
! result.append("\n\\item[Telefon:] " + phone.getValue());
! XMLElement mobile = (XMLElement)data.getObject("mobile");
! if ( mobile != null )
! result.append("\n\\item[Mobil:] " + mobile.getValue());
! XMLElement email = (XMLElement)data.getObject("email");
! if ( email != null )
! result.append("\n\\item[E-mail:] " + email.getValue());
! XMLElement homepage = (XMLElement)data.getObject("homepage");
! if ( homepage != null )
! result.append("\n\\item[Homepage:] " + homepage.getValue());
result.append("\n\\end{CV}\n");
return(null);
}
}
--- 65,154 ----
StringBuffer result = (StringBuffer)data.getObject(Const.RESULT_BUFFER);
String name = ((XMLElement)data.getObject("name")).getValue();
+ Attributes attr = (Attributes)data.getObject("Attributes");
+ String title = attr.getValue("title");
+ String lang = attr.getValue("lang");
+
+ if ( lang == null ) lang = "en";
+
+ if ( title == null )
+ if ( lang.equals("de") )
+ title = "Lebenslauf";
+ else title = "Curriculum Vitae";
result.append("\n\\begin{center}\n" +
! "\\huge{\\textsc{" + title + "}}\n" +
"\\vspace{\\baselineskip}\n" +
"\n\\Large{\\textsc{" + name + "}}\n" +
"\\end{center}\n" +
"\\vspace[1.5\\baselineskip}\n");
!
! if ( lang.equals("de") )
! {
! result.append("\n\\section{Persönliche Daten}" +
! "\n\\begin{CV}" +
! "\n \\item [Name:] " + name);
! writeElemValue( result, "geboren am",
! (XMLElement)data.getObject("birthdate") );
! result.append(" in " +
! ((XMLElement)data.getObject("birthplace")).getValue());
! writeElemAttr( result, "Familienstand",
! (XMLElement)data.getObject("marital"), "status" );
! writeElemValue( result, "Adresse",
! (XMLElement)data.getObject("address") );
! XMLElement country = (XMLElement)data.getObject("country");
! if ( country != null )
! result.append(", " + country.getValue());
! writeElemValue( result, "Telefon",
! (XMLElement)data.getObject("phone") );
! writeElemValue(result, "Mobil",
! (XMLElement)data.getObject("mobile") );
! writeElemValue( result, "E-mail",
! (XMLElement)data.getObject("email") );
! writeElemValue( result, "Homepage",
! (XMLElement)data.getObject("homepage") );
! }
! else
! {
! result.append("\n\\section{Personal Data}" +
! "\n\\begin{CV}" +
! "\n\\item[Name:] " + name);
! writeElemValue( result, "born on",
! (XMLElement)data.getObject("birthdate") );
! result.append(" at " +
! ((XMLElement)data.getObject("birthplace")).getValue());
! writeElemAttr( result, "Marital status",
! (XMLElement)data.getObject("marital"), "status" );
! writeElemValue( result, "Address",
! (XMLElement)data.getObject("address") );
! XMLElement country = (XMLElement)data.getObject("country");
! if ( country != null )
! result.append(", " + country.getValue());
! writeElemValue( result, "Phone",
! (XMLElement)data.getObject("phone") );
! writeElemValue(result, "Mobile",
! (XMLElement)data.getObject("mobile") );
! writeElemValue( result, "E-mail",
! (XMLElement)data.getObject("email") );
! writeElemValue( result, "Homepage",
! (XMLElement)data.getObject("homepage") );
! }
result.append("\n\\end{CV}\n");
return(null);
+ }
+
+ protected void writeElemValue(StringBuffer result, String caption,
+ XMLElement elem)
+ {
+ if ( elem != null )
+ result.append("\n \\item [" + caption + ":] " + elem.getValue());
+ }
+
+ protected void writeElemAttr(StringBuffer result, String caption,
+ XMLElement elem, String attr)
+ {
+ if ( elem != null )
+ result.append("\n \\item [" + caption + ":] " +
+ elem.getAttributes().getValue(attr));
}
}
|
|
From: G?nther B. <br...@us...> - 2002-05-13 22:46:15
|
Update of /cvsroot/xpg-xml/edu/iicm/xpg/transitions/cvhtml
In directory usw-pr-cvs1:/tmp/cvs-serv29183/transitions/cvhtml
Modified Files:
WriteGeneralFooterTransition.java
WriteGeneralHeaderTransition.java
Added Files:
WriteListTransition.java WritePersonalTransition.java
Log Message:
CV example to latex and html
--- NEW FILE: WriteListTransition.java ---
/***********************************************************************
*
* Copyright (c) 2001 IICM, Graz University of Technology
* Schiesstattgasse 4a, A-8010 Graz, Austria.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License (LGPL)
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***********************************************************************/
package edu.iicm.xpg.transitions.cvhtml;
import edu.iicm.xpg.statemachine.Transition;
import edu.iicm.xpg.statemachine.State;
import edu.iicm.xpg.statemachine.StateMachine;
import edu.iicm.xpg.statemachine.Input;
import edu.iicm.xpg.statemachine.XMLInput;
import edu.iicm.xpg.statemachine.XMLElement;
import edu.iicm.xpg.statemachine.DataObject;
import edu.iicm.xpg.statemachine.Const;
import edu.iicm.xpg.util.Debug;
import java.util.Vector;
import java.util.Enumeration;
//----------------------------------------------------------------------
/**
* @author Guenther Brand
* @version $Revision: 1.1 $
*/
public class WriteListTransition implements Transition
{
//----------------------------------------------------------------------
/**
* @param input the input that triggered this transition
* @param from_state the start state for this transition
* @param to_state the destination state for this transition
* @param machine the state machine that this transition belongs to
* @param data user defined data
* @return
* @exception Exception whatever an implementation can throw
*/
public String transitionTriggered(Input input,State from_state,State to_state,
StateMachine machine,DataObject data)
throws Exception
{
StringBuffer result = (StringBuffer)data.getObject(Const.RESULT_BUFFER);
Vector list_items = (Vector)data.removeObject("list items");
String list_title = ((XMLElement)data.removeObject("title")).getValue();
result.append("\n<hr>" +
"\n<table>" +
"\n <th colspan=\"2\">" + list_title + "</th>");
for (int idx=0; idx < list_items.size(); idx++)
{
String[] item = (String[])list_items.get(idx);
String caption = item[0];
String value = item[1];
result.append("\n <tr>" +
"\n <td>");
if ( caption != null )
result.append(caption);
result.append("</td><td>" + value + "</td>" +
"\n </tr>");
}
result.append("\n</table>\n");
return(null);
}
}
--- NEW FILE: WritePersonalTransition.java ---
/***********************************************************************
*
* Copyright (c) 2001 IICM, Graz University of Technology
* Schiesstattgasse 4a, A-8010 Graz, Austria.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License (LGPL)
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***********************************************************************/
package edu.iicm.xpg.transitions.cvhtml;
import edu.iicm.xpg.statemachine.Transition;
import edu.iicm.xpg.statemachine.State;
import edu.iicm.xpg.statemachine.StateMachine;
import edu.iicm.xpg.statemachine.Input;
import edu.iicm.xpg.statemachine.XMLInput;
import edu.iicm.xpg.statemachine.XMLElement;
import edu.iicm.xpg.statemachine.DataObject;
import edu.iicm.xpg.statemachine.Const;
import edu.iicm.xpg.util.Debug;
import org.xml.sax.Attributes;
import java.util.Vector;
import java.util.Enumeration;
//----------------------------------------------------------------------
/**
* @author Guenther Brand
* @version $Revision: 1.1 $
*/
public class WritePersonalTransition implements Transition
{
//----------------------------------------------------------------------
/**
* @param input the input that triggered this transition
* @param from_state the start state for this transition
* @param to_state the destination state for this transition
* @param machine the state machine that this transition belongs to
* @param data user defined data
* @return
* @exception Exception whatever an implementation can throw
*/
public String transitionTriggered(Input input,State from_state,State to_state,
StateMachine machine,DataObject data)
throws Exception
{
StringBuffer result = (StringBuffer)data.getObject(Const.RESULT_BUFFER);
String name = ((XMLElement)data.getObject("name")).getValue();
Attributes attr = (Attributes)data.getObject("Attributes");
String title = attr.getValue("title");
String lang = attr.getValue("lang");
if ( lang == null ) lang = "en";
if ( title == null )
if ( lang.equals("de") )
title = "Lebenslauf";
else title = "Curriculum Vitae";
result.append("\n<center>\n" +
"<h1>" + title + "</h1>\n" +
"<h2>" + name + "</h2>\n" +
"<br>\n");
if ( lang.equals("de") )
{
result.append("\n<table>" +
"\n <th colspan=\"2\">Persönliche Daten</th>" +
"\n <tr>" +
"\n <td>Name</td><td>" + name + "</td>" +
"\n </tr>");
writeElemValue( result, "geboren am",
(XMLElement)data.getObject("birthdate") );
// result.append(" in " +
// ((XMLElement)data.getObject("birthplace")).getValue());
writeElemAttr( result, "Familienstand",
(XMLElement)data.getObject("marital"), "status" );
writeElemValue( result, "Adresse",
(XMLElement)data.getObject("address") );
XMLElement country = (XMLElement)data.getObject("country");
// if ( country != null )
// result.append(", " + country.getValue());
writeElemValue( result, "Telefon",
(XMLElement)data.getObject("phone") );
writeElemValue(result, "Mobil",
(XMLElement)data.getObject("mobile") );
writeElemValue( result, "E-mail",
(XMLElement)data.getObject("email") );
writeElemValue( result, "Homepage",
(XMLElement)data.getObject("homepage") );
}
else
{
result.append("\n<table>" +
"\n <th colspan=\"2\">Personal Data</th>" +
"\n <tr>" +
"\n <td>Name</td><td>" + name + "</td>" +
"\n </tr>");
writeElemValue( result, "born on",
(XMLElement)data.getObject("birthdate") );
// result.append(" at " +
// ((XMLElement)data.getObject("birthplace")).getValue());
writeElemAttr( result, "Marital status",
(XMLElement)data.getObject("marital"), "status" );
writeElemValue( result, "Address",
(XMLElement)data.getObject("address") );
XMLElement country = (XMLElement)data.getObject("country");
// if ( country != null )
// result.append(", " + country.getValue());
writeElemValue( result, "Phone",
(XMLElement)data.getObject("phone") );
writeElemValue(result, "Mobile",
(XMLElement)data.getObject("mobile") );
writeElemValue( result, "E-mail",
(XMLElement)data.getObject("email") );
writeElemValue( result, "Homepage",
(XMLElement)data.getObject("homepage") );
}
result.append("\n</table>\n");
return(null);
}
protected void writeElemValue(StringBuffer result, String caption,
XMLElement elem)
{
if ( elem != null )
result.append("\n <tr>" +
"\n <td>" + caption + "</td>" +
"<td>" + elem.getValue() + "</td>" +
"\n </tr>");
}
protected void writeElemAttr(StringBuffer result, String caption,
XMLElement elem, String attr)
{
if ( elem != null )
result.append("\n <tr>" +
"\n <td>" + caption + "</td>" +
"<td>" + elem.getAttributes().getValue(attr) + "</td>" +
"\n </tr>");
}
}
Index: WriteGeneralFooterTransition.java
===================================================================
RCS file: /cvsroot/xpg-xml/edu/iicm/xpg/transitions/cvhtml/WriteGeneralFooterTransition.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** WriteGeneralFooterTransition.java 8 May 2002 15:07:33 -0000 1.2
--- WriteGeneralFooterTransition.java 13 May 2002 22:46:12 -0000 1.3
***************
*** 29,32 ****
--- 29,33 ----
import edu.iicm.xpg.statemachine.Input;
import edu.iicm.xpg.statemachine.XMLInput;
+ import edu.iicm.xpg.statemachine.XMLElement;
import edu.iicm.xpg.statemachine.DataObject;
import edu.iicm.xpg.statemachine.Const;
***************
*** 60,64 ****
{
StringBuffer document = (StringBuffer)data.getObject(Const.RESULT_BUFFER);
! String place = (String)data.getObject("place");
Date today = new Date();
--- 61,65 ----
{
StringBuffer document = (StringBuffer)data.getObject(Const.RESULT_BUFFER);
! String place = ((XMLElement)data.getObject("place")).getValue();
Date today = new Date();
***************
*** 67,71 ****
String dateOut = dateFormatter.format(today);
! document.append("\n" + place + ", " + dateOut +
"\n\n</body>\n</html>");
--- 68,74 ----
String dateOut = dateFormatter.format(today);
! document.append("\n</center>" +
! "\n<br>" +
! "\n" + place + ", " + dateOut +
"\n\n</body>\n</html>");
Index: WriteGeneralHeaderTransition.java
===================================================================
RCS file: /cvsroot/xpg-xml/edu/iicm/xpg/transitions/cvhtml/WriteGeneralHeaderTransition.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** WriteGeneralHeaderTransition.java 8 May 2002 15:07:33 -0000 1.2
--- WriteGeneralHeaderTransition.java 13 May 2002 22:46:12 -0000 1.3
***************
*** 57,64 ****
StringBuffer document = new StringBuffer();
document.append("<html>\n<head>\n" +
! "<title>Curriculum Vitae</title>" +
"</head>\n<body>\n");
data.putObject(Const.RESULT_BUFFER, document);
return(null);
}
--- 57,67 ----
StringBuffer document = new StringBuffer();
document.append("<html>\n<head>\n" +
! "<title>Curriculum Vitae</title>\n" +
"</head>\n<body>\n");
data.putObject(Const.RESULT_BUFFER, document);
+
+ data.putObject("Attributes", data.getXMLElement().getAttributes());
+
return(null);
}
|
|
From: G?nther B. <br...@us...> - 2002-05-13 22:46:14
|
Update of /cvsroot/xpg-xml/edu/iicm/xpg
In directory usw-pr-cvs1:/tmp/cvs-serv29183
Modified Files:
cv.xsd cv_config.xml cv_guenther.xml
Log Message:
CV example to latex and html
Index: cv.xsd
===================================================================
RCS file: /cvsroot/xpg-xml/edu/iicm/xpg/cv.xsd,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** cv.xsd 13 May 2002 14:50:47 -0000 1.3
--- cv.xsd 13 May 2002 22:46:12 -0000 1.4
***************
*** 4,13 ****
<xsd:element name="curriculum">
<xsd:complexType>
- <!-- xsd:attribute name="title" type="xsd:string"/>
- <xsd:attribute name="lang" type="Lang" default="en"/ -->
<xsd:sequence>
<xsd:element name="personal" type="Personal" />
<xsd:element name="list" type="List" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
--- 4,13 ----
<xsd:element name="curriculum">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="personal" type="Personal" />
<xsd:element name="list" type="List" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
+ <xsd:attribute name="title" type="xsd:string"/>
+ <xsd:attribute name="lang" type="Lang" default="en"/>
</xsd:complexType>
</xsd:element>
***************
*** 38,46 ****
<xsd:element name="item" maxOccurs="unbounded">
<xsd:complexType>
! <xsd:simpleContent>
! <xsd:extension base="xsd:string">
! <xsd:attribute name="caption" type="xsd:string" />
! </xsd:extension>
! </xsd:simpleContent>
</xsd:complexType>
</xsd:element>
--- 38,46 ----
<xsd:element name="item" maxOccurs="unbounded">
<xsd:complexType>
! <xsd:simpleContent>
! <xsd:extension base="xsd:string">
! <xsd:attribute name="caption" type="xsd:string" />
! </xsd:extension>
! </xsd:simpleContent>
</xsd:complexType>
</xsd:element>
Index: cv_config.xml
===================================================================
RCS file: /cvsroot/xpg-xml/edu/iicm/xpg/cv_config.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** cv_config.xml 13 May 2002 06:23:57 -0000 1.2
--- cv_config.xml 13 May 2002 22:46:12 -0000 1.3
***************
*** 3,7 ****
xsi:noNamespaceSchemaLocation="StateMachineConfig.xsd">
! <path>edu.iicm.xpg.transitions.cvlatex</path>
<path>edu.iicm.xpg.transitions.simple</path>
--- 3,7 ----
xsi:noNamespaceSchemaLocation="StateMachineConfig.xsd">
! <path>edu.iicm.xpg.transitions.cvhtml</path>
<path>edu.iicm.xpg.transitions.simple</path>
Index: cv_guenther.xml
===================================================================
RCS file: /cvsroot/xpg-xml/edu/iicm/xpg/cv_guenther.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** cv_guenther.xml 13 May 2002 06:23:57 -0000 1.2
--- cv_guenther.xml 13 May 2002 22:46:12 -0000 1.3
***************
*** 1,6 ****
<?xml version="1.0" standalone="no"?>
! <curriculum xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
! xsi:noNamespaceSchemaLocation="cv.xsd">
<personal>
<name>Günther Brand</name>
--- 1,8 ----
<?xml version="1.0" standalone="no"?>
! <curriculum
! xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
! xsi:noNamespaceSchemaLocation="cv.xsd"
! lang="de">
<personal>
<name>Günther Brand</name>
|
|
From: Stefan T. <th...@us...> - 2002-05-13 15:08:04
|
Update of /cvsroot/xpg-xml/edu/iicm/xpg
In directory usw-pr-cvs1:/tmp/cvs-serv837
Modified Files:
cv.xsd
Log Message:
xsd bug fixed
Index: cv.xsd
===================================================================
RCS file: /cvsroot/xpg-xml/edu/iicm/xpg/cv.xsd,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** cv.xsd 13 May 2002 06:23:57 -0000 1.2
--- cv.xsd 13 May 2002 14:50:47 -0000 1.3
***************
*** 36,42 ****
<xsd:sequence>
<xsd:element name="title" type="xsd:string" minOccurs="0"/>
! <xsd:element name="item" type="xsd:string" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="caption" type="xsd:string" />
</xsd:complexType>
</xsd:element>
--- 36,46 ----
<xsd:sequence>
<xsd:element name="title" type="xsd:string" minOccurs="0"/>
! <xsd:element name="item" maxOccurs="unbounded">
<xsd:complexType>
+ <xsd:simpleContent>
+ <xsd:extension base="xsd:string">
<xsd:attribute name="caption" type="xsd:string" />
+ </xsd:extension>
+ </xsd:simpleContent>
</xsd:complexType>
</xsd:element>
|
|
From: G?nther B. <br...@us...> - 2002-05-13 06:25:25
|
Update of /cvsroot/xpg-xml/edu/iicm/xpg/transitions/cvlatex
In directory usw-pr-cvs1:/tmp/cvs-serv7586
Added Files:
WriteListTransition.java WritePersonalTransition.java
Log Message:
transitions for CV example
--- NEW FILE: WriteListTransition.java ---
/***********************************************************************
*
* Copyright (c) 2001 IICM, Graz University of Technology
* Schiesstattgasse 4a, A-8010 Graz, Austria.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License (LGPL)
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***********************************************************************/
package edu.iicm.xpg.transitions.cvlatex;
import edu.iicm.xpg.statemachine.Transition;
import edu.iicm.xpg.statemachine.State;
import edu.iicm.xpg.statemachine.StateMachine;
import edu.iicm.xpg.statemachine.Input;
import edu.iicm.xpg.statemachine.XMLInput;
import edu.iicm.xpg.statemachine.XMLElement;
import edu.iicm.xpg.statemachine.DataObject;
import edu.iicm.xpg.statemachine.Const;
import edu.iicm.xpg.util.Debug;
import java.util.Vector;
import java.util.Enumeration;
//----------------------------------------------------------------------
/**
* @author Guenther Brand
* @version $Revision: 1.1 $
*/
public class WriteListTransition implements Transition
{
//----------------------------------------------------------------------
/**
* @param input the input that triggered this transition
* @param from_state the start state for this transition
* @param to_state the destination state for this transition
* @param machine the state machine that this transition belongs to
* @param data user defined data
* @return
* @exception Exception whatever an implementation can throw
*/
public String transitionTriggered(Input input,State from_state,State to_state,
StateMachine machine,DataObject data)
throws Exception
{
StringBuffer result = (StringBuffer)data.getObject(Const.RESULT_BUFFER);
Vector list_items = (Vector)data.removeObject("list items");
String list_title = ((XMLElement)data.removeObject("title")).getValue();
result.append("\n\\section{" + list_title + "}\n" +
"\n\\begin{CV}\n");
for (int idx=0; idx < list_items.size(); idx++)
{
String[] item = (String[])list_items.get(idx);
String caption = item[0];
String value = item[1];
result.append("\\item ");
if ( caption != null )
result.append("[" + caption + "] ");
result.append(value + "\n");
}
result.append("\\end{CV}\n");
return(null);
}
}
--- NEW FILE: WritePersonalTransition.java ---
/***********************************************************************
*
* Copyright (c) 2001 IICM, Graz University of Technology
* Schiesstattgasse 4a, A-8010 Graz, Austria.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License (LGPL)
* as published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this program; if not, write to the
* Free Software Foundation, Inc.,
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
***********************************************************************/
package edu.iicm.xpg.transitions.cvlatex;
import edu.iicm.xpg.statemachine.Transition;
import edu.iicm.xpg.statemachine.State;
import edu.iicm.xpg.statemachine.StateMachine;
import edu.iicm.xpg.statemachine.Input;
import edu.iicm.xpg.statemachine.XMLInput;
import edu.iicm.xpg.statemachine.XMLElement;
import edu.iicm.xpg.statemachine.DataObject;
import edu.iicm.xpg.statemachine.Const;
import edu.iicm.xpg.util.Debug;
import java.util.Vector;
import java.util.Enumeration;
//----------------------------------------------------------------------
/**
* @author Guenther Brand
* @version $Revision: 1.1 $
*/
public class WritePersonalTransition implements Transition
{
//----------------------------------------------------------------------
/**
* @param input the input that triggered this transition
* @param from_state the start state for this transition
* @param to_state the destination state for this transition
* @param machine the state machine that this transition belongs to
* @param data user defined data
* @return
* @exception Exception whatever an implementation can throw
*/
public String transitionTriggered(Input input,State from_state,State to_state,
StateMachine machine,DataObject data)
throws Exception
{
StringBuffer result = (StringBuffer)data.getObject(Const.RESULT_BUFFER);
String name = ((XMLElement)data.getObject("name")).getValue();
result.append("\n\\begin{center}\n" +
"\\huge{\\textsc{Curriculum Vitae}}\n" +
"\\vspace{\\baselineskip}\n" +
"\n\\Large{\\textsc{" + name + "}}\n" +
"\\end{center}\n" +
"\\vspace[1.5\\baselineskip}\n");
result.append("\n\\section{Persönliche Daten}" +
"\n\\begin{CV}" +
"\n\\item[Name:] " + name);
result.append("\n\\item[geboren am:] " +
((XMLElement)data.getObject("birthdate")).getValue() +
" in " +
((XMLElement)data.getObject("birthplace")).getValue());
XMLElement marital = (XMLElement)data.getObject("marital");
if ( marital != null )
result.append("\n\\item[Familienstand:] " +
marital.getAttributes().getValue("status"));
result.append("\n\\item[Adresse:] " +
((XMLElement)data.getObject("address")).getValue());
XMLElement country = (XMLElement)data.getObject("country");
if ( country != null )
result.append(", " + country.getValue());
XMLElement phone = (XMLElement)data.getObject("phone");
if ( phone != null )
result.append("\n\\item[Telefon:] " + phone.getValue());
XMLElement mobile = (XMLElement)data.getObject("mobile");
if ( mobile != null )
result.append("\n\\item[Mobil:] " + mobile.getValue());
XMLElement email = (XMLElement)data.getObject("email");
if ( email != null )
result.append("\n\\item[E-mail:] " + email.getValue());
XMLElement homepage = (XMLElement)data.getObject("homepage");
if ( homepage != null )
result.append("\n\\item[Homepage:] " + homepage.getValue());
result.append("\n\\end{CV}\n");
return(null);
}
}
|