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); } } |