/*
* Globally match regular expression and print
* Modelled after the Unix command with the same name
* D. Spinellis, January 2004-2024
*/
import java.util.regex.*;
import java.io.*;
class Grep {
public static void main(String args[]) {
if (args.length != 2) {
System.err.println("Usage: Grep pattern file");
System.exit(1);
}
try (var in = new BufferedReader(new InputStreamReader(
new FileInputStream(args[1])))) {
Pattern compiledRe = Pattern.compile(args[0]);
String s;
while ((s = in.readLine()) != null) {
Matcher m = compiledRe.matcher(s);
if (m.find())
System.out.println(s);
}
} catch (FileNotFoundException e) {
System.err.println("Unable to open file " + args[1] + ": " + e.getMessage());
System.exit(2);
} catch (PatternSyntaxException e) {
System.err.println("Invalid RE syntax: " + e.getDescription());
System.exit(3);
} catch (IOException e) {
System.err.println("Error reading line: " + e.getMessage());
System.exit(4);
}
}
}
java Grep "abo" /usr/dict/words ... sabotage seaboard taboo thereabouts turnabout vagabond whereabout ... java Grep "^abo" /usr/dict/words aboard abode abolish abolition abominable abominate aboriginal java Grep bent /usr/dict/words absorbent bent benthic debenture incumbent recumbent java Grep "bent$" /usr/dict/words absorbent bent incumbent recumbent java Grep "[^AEIOUYaeiouy]{5,}" /usr/dict/words angstrom Armstrong birthplace bremsstrahlung corkscrew Dijkstra downstream hardscrabble jockstrap Knightsbridge lengthly Nietzsche nightclub offspring postscript Rothschild ... java Grep "(.)(.)(.)\3\2\1" /usr/dict/words braggart Brenner collocation diffident dissident glossolalia grammar grammarian installation staccato suffuse
import java.io.*;
import java.util.regex.*;
public class SplitWords {
public static void main(String[] args) {
if (args.length != 1) {
System.err.println("Usage: SplitWords file");
System.exit(1);
}
// Split on non-word characters
Pattern splitPattern = Pattern.compile("[^a-zA-Z]+");
try (var in = new BufferedReader(new InputStreamReader(
new FileInputStream(args[0])))) {
String line;
while ((line = in.readLine()) != null) {
String[] words = splitPattern.split(line);
for (String word : words) {
System.out.println(word);
}
}
} catch (FileNotFoundException e) {
System.err.println("Unable to open file " + args[0] + ": " + e.getMessage());
System.exit(2);
} catch (IOException e) {
System.err.println("Error reading line: " + e.getMessage());
System.exit(3);
}
}
}
/*
* Collect and print Web statistics
* D. Spinellis, 2004-2024
*/
import java.util.*;
import java.util.regex.*;
import java.io.*;
class WebStats {
/**
* Increment the integer value of map's member by 1
* The member is obtained by using the matcher to extract
* the specified group from the string s
*/
static void increment(Map<String, Integer> map, String s, Matcher m, int group) {
String member = s.substring(m.start(group), m.end(group));
Integer i = map.get(member);
map.put(member, i == null ? 1 : i + 1);
}
/** List the contents of the given map */
static void list(String title, Map<String, Integer> map) {
System.out.println("\n" + title);
for (Map.Entry e : map.entrySet())
System.out.println(e.getValue() + " " + e.getKey());
}
/** List the contents of the given map ordered by their values.
* (You are not expected to undestand this).
*/
static void sortedList(String title, Map<String, Integer> map) {
System.out.println("\n" + title);
var valueOrder = new TreeSet<Map.Entry<String, Integer>>(new
Comparator<Map.Entry<String, Integer>>() {
public int compare(Map.Entry<String, Integer> a,
Map.Entry<String, Integer> b) {
return (-a.getValue().compareTo(b.getValue()));
}
}
);
valueOrder.addAll(map.entrySet());
for (Map.Entry e : valueOrder)
System.out.println(e.getValue() + " " + e.getKey());
}
public static void main(String args[]) {
if (args.length != 1) {
System.err.println("Usage: WebStats file");
System.exit(1);
}
Pattern cre = null; // Compiled RE
try {
// A standard log line is a line like:
// 192.168.136.16 - - [26/Jan/2004:19:45:48 +0200] "GET /c136.html HTTP/1.1" 200 1674 "http://office/c120.html" "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5) Gecko/20031007"
String patternString = """
([-\\w.]+)\\s+ # 1. Host
([-\\w]+)\\s+ # 2. Logname
([-\\w]+)\\s+ # 3. User
\\[(\\d+)/ # 4. Date
(\\w+)/ # 5. Month
(\\d+): # 6. Year
(\\d+): # 7. Hour
(\\d+) # 8. Minute
([^]]+?)\\]\\s+ # 9. Rest of time
\"([-\\w]+)\\s* # 10. Request verb
([^\\s]*) # 11. Request URL
([^\"]*?)\"\\s+ # 12. Request protocol etc.
(\\d+)\\s+ # 13. Status
([-\\d]+)\\s+ # 14. Bytes
\"([^\"]*)\"\\s+ # 15. Referrer URL
\"([^\"]*)\" # 16. Client
""";
cre = Pattern.compile(patternString, Pattern.COMMENTS);
} catch (PatternSyntaxException e) {
System.err.println("Invalid RE syntax: " + e.getDescription());
System.exit(1);
}
BufferedReader in = null;
try {
in = new BufferedReader(new InputStreamReader(new FileInputStream(args[0])));
} catch (FileNotFoundException e) {
System.err.println("Unable to open file " + args[1] + ": " + e.getMessage());
System.exit(1);
}
var host = new HashMap<String, Integer>();
var hour = new HashMap<String, Integer>();
var request = new HashMap<String, Integer>();
var referrer = new HashMap<String, Integer>();
try {
String s;
while ((s = in.readLine()) != null) {
Matcher m = cre.matcher(s);
if (!m.matches())
System.out.println("Invalid line: " + s);
else {
increment(host, s, m, 1);
increment(hour, s, m, 7);
increment(request, s, m, 11);
increment(referrer, s, m, 15);
}
}
} catch (Exception e) {
System.err.println("Error reading line: " + e.getMessage());
System.exit(1);
}
sortedList("Host Access Counts", host);
sortedList("Hourly Access Counts", hour);
sortedList("Request URL Access Counts", request);
sortedList("Referrer URL Access Counts", referrer);
}
}
{
"name": "John",
"age": 30,
"isStudent": false,
"courses": ["Math", "Science"],
"address": {
"city": "Athens",
"country": "Greece"
}
}
package gr.aueb.dmst.dds.example;
import com.google.gson.Gson;
record Person(String name, int age) {}
public class JsonIO {
public static void main(String[] args) {
Gson gson = new Gson();
// Read a JSON object
String json = "{\"name\":\"Anna\", \"age\":25}";
Person person = gson.fromJson(json, Person.class);
System.out.println("Read Person: " + person);
// Serialize a Java object into JSON
String serializedJson = gson.toJson(person);
System.out.println("Serialized JSON: " + serializedJson);
}
}
<city>Larisa</city>
<?xml version="1.0" encoding="US-ASCII" ?>
<city_info>
<name>Larisa</name>
<area_code>241</area_code>
<latitude>39.38</latitude>
<longitude>-22.25</longitude>
<country>Greece</country>
</city_info>
<alumnus />
Ηλεκτρονικό τιμολόγιο (https://docs.oasis-open.org/ubl/os-UBL-2.1/xml/UBL-Invoice-2.1-Example.xml)
<city country="el" id="HER">
<name>Hrakleio</name>
</city>
Οντότητα | Σύνταξη XML |
---|---|
< | < |
& | & |
> | > |
" | " |
' | ' |
<?xml version="1.0" encoding="UTF-8"?>
<ekad xmlns="http://www.gsis.gr/ekad"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
afm="046523469">
<branch aa="0">
<kad typeOfKad="1">
<value>71121908</value>
</kad>
</branch>
</ekad>
<?xml version="1.0" ?>
<studentID>802345</studentID>
<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="studentID" type="xsd:integer" />
</xsd:schema>
<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="studentID" >
<xsd:simpleType>
<xsd:restriction base="xsd:integer">
<xsd:pattern value="80\d{4}" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:schema>
<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="grade" >
<xsd:simpleType>
<xsd:restriction base="xsd:float">
<xsd:pattern value="\d+\.[05]"/>
<xsd:minInclusive value="0"/>
<xsd:maxInclusive value="10"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
</xsd:schema>
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Athens"/>
<xsd:enumeration value="Thessaloniki"/>
<xsd:enumeration value="Argostoli"/>
<xsd:enumeration value="Volos"/>
<!-- ... -->
</xsd:restriction>
</xsd:simpleType>
<xsd:attribute name="name" type="simple-type" use="..." />
<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="country">
<xsd:complexType>
<xsd:simpleContent >
<xsd:extension base="xsd:string" >
<xsd:attribute name="code" type="xsd:string" use="required" />
</xsd:extension>
</xsd:simpleContent >
</xsd:complexType>
</xsd:element>
</xsd:schema>
Παράδειγμα εγγράφου:
<?xml version="1.0" ?>
<country code="el">Greece</country>
<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="javaProgram">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="package" type="xsd:string" />
<xsd:element name="import" type="xsd:string" maxOccurs="unbounded" />
<xsd:element name="class">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="name" type="xsd:string" />
<xsd:choice maxOccurs="unbounded">
<xsd:element name="field" type="xsd:string" />
<xsd:element name="ctor" type="xsd:string" />
<xsd:element name="method" type="xsd:string" />
</xsd:choice>
</xsd:sequence>
<xsd:attribute name="extends" type="xsd:string" use="optional" />
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
Παράδειγμα εγγράφου:
<?xml version="1.0" ?>
<javaProgram>
<package>gr.aueb.dds.bio</package>
<import>java.util.Date</import>
<import>java.math.BigDecimal</import>
<class extends="Object">
<name>Point</name>
<field>int x</field>
<field>int y</field>
<ctor>Point(int x, int y)</ctor>
<field>static int numPoints</field>
</class>
</javaProgram>
<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="class" >
<xsd:complexType>
<xsd:sequence>
<xsd:element name="student" type="xsd:string"
minOccurs="10" maxOccurs="150" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.gsis.gr/ekad" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.gsis.gr/ekad" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="ekad">
<xs:annotation>
<xs:documentation>root element</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="branch" nillable="false" maxOccurs="unbounded">
<xs:annotation>
<xs:documentation>Εγκατάσταση</xs:documentation>
</xs:annotation>
<xs:complexType>
<xs:sequence>
<xs:element name="kad" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="value" nillable="false">
<xs:annotation>
<xs:documentation>Η τιμή του ΚΑΔ</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:integer">
<xs:totalDigits value="15"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
<xs:attribute name="typeOfKad" use="required">
<xs:annotation>
<xs:documentation>Είδος ΚΑΔ (δραστηριότητας). 1=Κύρια, 2=Δευτερεύουσα, 3=Λοιπή, 4=Βοηθητική</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:enumeration value="1"/>
<xs:enumeration value="2"/>
<xs:enumeration value="3"/>
<xs:enumeration value="4"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="aa" use="required">
<xs:annotation>
<xs:documentation>ΑΑ εγκατάστασης. Η έδρα δηλώνεται σαν υποκατάστημα με ΑΑ=0. Εάν υπάρχει μητρική εταιρεία στο εξωτερικό, ο ΚΑΔ της δηλώνεται ως υποκατάστημα με ΑΑ=9999</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:int">
<xs:minInclusive value="0"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="afm" use="required">
<xs:annotation>
<xs:documentation>ΑΦΜ υπόχρεου</xs:documentation>
</xs:annotation>
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:minLength value="9"/>
<xs:maxLength value="9"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
</xs:schema>
<xsl:template match="name">
</xsl:template>
<xsl:value-of select="projtitle" />
<?xml version="1.0" ?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="project">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="shortname" type="xsd:string" />
<xsd:element name="projtitle" type="xsd:string" />
<xsd:element name="startdate" type="xsd:date" minOccurs="0" />
<xsd:element name="enddate" type="xsd:date" />
<xsd:element name="web_site" type="xsd:string" minOccurs="0" />
<xsd:element name="our_budget" type="xsd:integer" minOccurs="0" />
<xsd:element name="total_budget" type="xsd:integer" minOccurs="0" />
<xsd:element name="funding_agency" type="xsd:string" minOccurs="0" />
<xsd:element name="funding_programme" type="xsd:string" minOccurs="0" />
<xsd:element name="project_code" type="xsd:string" minOccurs="0" />
<xsd:element name="partner" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="shortname" type="xsd:string" />
<xsd:element name="country" type="xsd:string" />
<xsd:element name="web_site" type="xsd:string" minOccurs="0" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:element name="logo" type="xsd:string" minOccurs="0" />
<xsd:element name="description" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<?xml version="1.0"?>
<project>
<shortname>mExpress</shortname>
<projtitle>mobile in-EXhibition PRovision of Electronic Support Services</projtitle>
<startdate>2002-03-05</startdate>
<enddate>2004-04-01</enddate>
<web_site>http://mexpress.intranet.gr/</web_site>
<our_budget>328</our_budget>
<total_budget>3493</total_budget>
<funding_agency>European Commission</funding_agency>
<funding_programme>IST</funding_programme>
<project_code>IST-2001-33432</project_code>
<partner>
<shortname>Intracom</shortname>
<country>EL</country>
<web_site>http://www.intracom.gr</web_site>
</partner>
<partner>
<shortname>Ericsson</shortname>
<country>DK</country>
<web_site>http://www.ericsson.com/</web_site>
</partner>
<partner>
<shortname>ELISA</shortname>
<country>FIN</country>
<web_site>http://www.elisa.com</web_site>
</partner>
<partner>
<shortname>POULIADIS</shortname>
<country>EL</country>
<web_site>http://www.pouliadis.gr</web_site>
</partner>
<partner>
<shortname>SSF</shortname>
<country>FIN</country>
<web_site>http://www.ssf.fi/</web_site>
</partner>
<partner>
<shortname>HUT</shortname>
<country>FIN</country>
<web_site>http://www.hut.fi</web_site>
</partner>
<partner>
<shortname>FFC</shortname>
<country>FIN</country>
</partner>
<partner>
<shortname>ROTA</shortname>
<country>EL</country>
<web_site>http://www.rota.gr</web_site>
</partner>
<logo>../images/p_mexpress.gif</logo>
<description>
mEXPRESS aims to exploit the technological opportunities arising from
evolution in the areas of wireless networks and positioning mechanisms in
order to support and facilitate the professional exhibition industry in
a context-aware manner. It will contribute to the economic development of
the Community by providing means for efficient operation and interaction
in information-rich environments such as exhibitions, and significantly
enhancing promotional activities and business communications. The mEXPRESS
project will provide an integrated mediation platform (mEXPRESS Service
Provider) oriented to exhibition shows and events.
</description>
</project>
<?xml version="1.0"?>
<!-- Apply using
xml tr project.xslt mexpress.xml
-->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="project">
<h1>
<xsl:value-of select="shortname" />
-
<xsl:value-of select="projtitle" />
</h1>
<!-- Show Logo -->
<xsl:element name="img">
<xsl:attribute name="src"><xsl:value-of select="logo" /></xsl:attribute>
</xsl:element>
<br /> <br />
<!-- Project Summary information -->
<xsl:if test="count(project_code) != 0">
Project Code:
<xsl:value-of select="project_code" />
<xsl:if test="@international = 'yes'">
(International)
</xsl:if>
<br/>
</xsl:if>
<xsl:if test="count(funding_programme) != 0">
Funding programme: <xsl:value-of select="funding_programme" />
<br />
</xsl:if>
<xsl:if test="count(funding_agency) != 0">
Funding Agency: <xsl:value-of select="funding_agency" />
<br />
</xsl:if>
<xsl:if test="@type != ''">
Project type:
<xsl:choose>
<xsl:when test="@type = 'rtd'">RTD</xsl:when>
<xsl:when test="@type = 'consulting'">Consulting</xsl:when>
<xsl:when test="@type = 'training'">Training</xsl:when>
<xsl:when test="@type = 'dissemination'">Dissemination</xsl:when>
</xsl:choose>
<br />
</xsl:if>
<xsl:if test="count(web_site) != 0">
Web site:
<xsl:element name="a">
<xsl:attribute name="href"><xsl:value-of select="web_site"/></xsl:attribute>
<xsl:value-of select="web_site" />
</xsl:element>
<br />
<br />
</xsl:if>
<xsl:if test="count(our_budget) != 0">
ELTRUN budget: <xsl:value-of select="our_budget" /> EUR
<br />
</xsl:if>
<xsl:if test="count(total_budget) != 0">
Total budget: <xsl:value-of select="total_budget" /> EUR
<br />
</xsl:if>
<br />
</xsl:template>
</xsl:stylesheet>
mExpress - mobile in-EXhibition PRovision of Electronic Support ServicesProject Code: IST-2001-33432 (International) Funding programme: IST Funding Agency: European Commission Project type: RTD Web site: http://mexpress.intranet.gr/ (http://mexpress.intranet.gr/) ELTRUN budget: 328 EUR Total budget: 3493 EUR |
NamedNodeMap
getAttributes()
NodeList
getChildNodes()
Node
getFirstChild()
,
Node
getLastChild()
Node
getNextSibling()
,
Node
getPreviousSibling()
String
getNodeName()
,
short
getNodeType()
String
getNodeValue()
Node
getParentNode()
boolean
hasAttributes()
boolean
hasChildNodes()
Node
insertBefore(Node newChild,
Node refChild)
Node
removeChild(Node oldChild)
Node
replaceChild(Node newChild,
Node oldChild)
void
setNodeValue(String nodeValue)
Διεπαφή | nodeName | nodeValue | attributes |
---|---|---|---|
Document | "#document" |
null | null |
Element | Όνομα της ετικέτας | null | NamedNodeMap |
Attr | Όνομα του προσδιορισμού | Τιμή του προσδιορισμού | null |
Text |
"#text" |
Το κείμενο | null |
Comment | "#comment" |
Το σχόλιο | null |
NodeList getElementsByTagName(String tagname)
// Create the DocumentBuilderFactory
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// Create the document builder
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(new File("students.xml"));
String s = "<athlete><name>Pyros</name><surname>Dimas</surname></athlete>";
Document doc =db.parse(new ByteArrayInputStream(s.getBytes()));
import javax.xml.parsers.*;
import java.io.*;
import org.w3c.dom.*;
class Average {
public static void main(String args[]) {
if (args.length != 2) {
System.err.println("Usage: Average element file");
System.exit(1);
}
Document doc = null;
try {
// Create the DocumentBuilderFactory
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
// Create the document builder
DocumentBuilder db = dbf.newDocumentBuilder();
// Create DOM document from the file
doc = db.parse(new File(args[1]));
} catch (Exception e) {
System.err.println("Parsing failed: " + e);
System.exit(1);
}
NodeList nodes = doc.getElementsByTagName(args[0]);
double sum = 0.0;
for (int i = 0; i < nodes.getLength(); i++) {
String grade = nodes.item(i).getFirstChild().getNodeValue();
sum += (Integer.valueOf(grade)).doubleValue();
}
System.out.println(sum / nodes.getLength());
}
}
<result_list>
<result>
<id>809678</id>
<grade>9</grade>
</result>
<result>
<id>809630</id>
<grade>8</grade>
</result>
<result>
<id>809679</id>
<grade>10</grade>
</result>
<result>
<id>809673</id>
<grade>6</grade>
</result>
</result_list>
java Average grade grade.xml 8.25
Μπορείτε να κατεβάσετε το αντίστοιχο αρχείο και να στείλετε τους βαθμούς σας από τους δεσμούς που βρίσκονται στη σελίδα των ασκήσεων.
<!ELEMENT element_name (content)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT student (person_data)>
<!ELEMENT person_data (name, surname)>
<!ELEMENT person_name (given_name, initial?, last_name)>
<!ELEMENT owned_cars (car*)>
<!ELEMENT course_lecturer (person_data+)>
<!ELEMENT engine (two_stroke | four_stroke | wankel | rotary)>
<!ELEMENT person_details (name, surname, (vat_number | id_number))>
<!ELEMENT alumnus EMPTY>
<!ELEMENT text ANY>
<!--
-
- Document Type Description for the projects
-
- $Id: project.dtd,v 1.2 2004/01/24 20:20:04 bkarak Exp $
-
-->
<!ELEMENT project (
shortname,
projtitle,
startdate?,
enddate,
web_site?,
our_budget?,
total_budget?,
funding_agency?,
funding_programme?,
project_code?,
partner*,
logo?,
description
)>
<!ELEMENT projtitle (#PCDATA)>
<!ELEMENT our_budget (#PCDATA)>
<!ELEMENT total_budget (#PCDATA)>
<!ELEMENT funding_agency (#PCDATA)>
<!ELEMENT funding_programme (#PCDATA)>
<!ELEMENT project_code (#PCDATA)>
<!ELEMENT web_site (#PCDATA)>
<!ELEMENT startdate (#PCDATA)>
<!ELEMENT enddate (#PCDATA)>
<!ELEMENT shortname (#PCDATA)>
<!ELEMENT logo (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT partner (shortname, country, web_site?)>
<!ELEMENT shortname (#PCDATA)>
<!ELEMENT country (#PCDATA)>
<?xml version="1.0"?>
<project>
<shortname>mExpress</shortname>
<projtitle>mobile in-EXhibition PRovision of Electronic Support Services</projtitle>
<startdate>20020305</startdate>
<enddate>20040401</enddate>
<web_site>http://mexpress.intranet.gr/</web_site>
<our_budget>328 EUR</our_budget>
<total_budget>3,493 EUR</total_budget>
<funding_agency>European Commission</funding_agency>
<funding_programme>IST</funding_programme>
<project_code>IST-2001-33432</project_code>
<partner>
<shortname>Intracom</shortname>
<country>EL</country>
<web_site>http://www.intracom.gr</web_site>
</partner>
<partner>
<shortname>Ericsson</shortname>
<country>DK</country>
<web_site>http://www.ericsson.com/</web_site>
</partner>
<partner>
<shortname>ELISA</shortname>
<country>FIN</country>
<web_site>http://www.elisa.com</web_site>
</partner>
<partner>
<shortname>POULIADIS</shortname>
<country>EL</country>
<web_site>http://www.pouliadis.gr</web_site>
</partner>
<partner>
<shortname>SSF</shortname>
<country>FIN</country>
<web_site>http://www.ssf.fi/</web_site>
</partner>
<partner>
<shortname>HUT</shortname>
<country>FIN</country>
<web_site>http://www.hut.fi</web_site>
</partner>
<partner>
<shortname>FFC</shortname>
<country>FIN</country>
</partner>
<partner>
<shortname>ROTA</shortname>
<country>EL</country>
<web_site>http://www.rota.gr</web_site>
</partner>
<logo>../images/p_mexpress.gif</logo>
<description>
mEXPRESS aims to exploit the technological opportunities arising from
evolution in the areas of wireless networks and positioning mechanisms in
order to support and facilitate the professional exhibition industry in
a context-aware manner. It will contribute to the economic development of
the Community by providing means for efficient operation and interaction
in information-rich environments such as exhibitions, and significantly
enhancing promotional activities and business communications. The mEXPRESS
project will provide an integrated mediation platform (mEXPRESS Service
Provider) oriented to exhibition shows and events.
</description>
</project>
<!ATTLIST όνομα_στοιχείου
όνομα_προσδιορισμού τύπος_προσδιορισμού περιορισμός
...
>
<!ATTLIST project
id ID #REQUIRED
contact CDATA #IMPLIED
scientific_coordinator CDATA #IMPLIED
project_manager CDATA #IMPLIED
group CDATA #REQUIRED
international (yes | no) #REQUIRED
type (consulting | rtd | training | dissemination) #REQUIRED
>
<?xml version="1.0"?>
<project
id="p_mexpress"
group="g_sense g_wrc"
scientific_coordinator="m_dds"
contact="m_pateli"
international="yes"
type="rtd"
project_manager="m_pateli"
>
<!-- ... -->
</project>