summaryrefslogtreecommitdiffstats
path: root/kvoctrain/kvoctrain/docs/kvtml-structure.txt
blob: 3a28920803e93625481e7783985d30a112cb3606 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
<?xml version="1.0"?>
<!doctype kvtml system "kvoctrain.dtd">
<!--
This is a machine generated file.
Be careful when editing here.

Short definition:   <!--  The level of indentation shows the relation: right is "owned" by left -->
                    <!-- attributes are preceded by %  ->

lesson       lesson group
 desc        name
   %no       its index
   %current  is current lesson
type         type group
 desc        name
   %no       its index
e            expression of dictionary
  %s         is selected
  %m         lesson member
  %t         common expression type
 o           original
   %q        in query ("o" is given, "t" is wanted)
   %l        language code
   %r        remark
   %p        pronunciation
   %width    column width
   %t        expression type (see QueryManager.h)
   %tf       false friend from
   %ff       false friend to
   %a        antonym
   %y        synonym
   %x        example
   %u        usage label
   %h        paraphrase
 t           translation ..
   %q        in query ("t" is given, "o" is wanted)
   %l        language code
   %r        remark
   %p        pronunciation
   %width    column width
   %t        expression type
   %tf       false friend from
   %ff       false friend to
   %a        antonym
   %y        synonym
   %x        example
   %u        usage label
   %h        paraphrase

   %d        last query date (from;to)
   %w        dito, compressed
   %g        grade (from;to)
   %c        count (from;to)
   %b        bad count (from;to)


Valid xml means:
 - Close all tags
 - Keep proper hierarchy
 - All attributes are quoted

--
>
<kvtml
  encoding="8Bit"                                           <!-- Encoding (starting from here)  8Bit or UTF8     -->
  generator="kvoctrain v0.7.0pre3"                          <!-- just in case                            -->
  cols="3"                                                  <!-- as well: just in case                   -->
  lines="3"                                                 <!-- just for progressbar on startup         -->
  title="Beispieldatei: Deutsch - Englisch/Französisch"     <!-- 4 self explaining lines ;-)             -->
  author="Ewald Arnold"
  license="OpenContent"
  remark="Beispieldatei mit allen Eigenschaften">

 <lesson width="104">                                       <!-- block with lesson names, width designates the last width of the leftmiost column -->
  <desc no="1">Lektion eins</desc>
  <desc no="2">Lektion zwei</desc>
  <desc no="3">Lektion drei</desc>
  <desc no="4">Lektion vier</desc>
 </lesson>

 <article>                                                  <!-- Define all the articles of the languages -->
  <e l="de">                                                <!-- definete and indefinite atricle          -->
   <fd>die</fd>                                             <!-- use iso codes for languge reference      -->
   <fi>eine</fi>
   <md>der</md>
   <mi>einer</mi>
   <nd>das</nd>
   <ni>ein</ni>
  </e>
  <e l="en">
   <fd>fd en</fd>
   <fi>fi en</fi>
   <md>md en</md>
   <mi>mi en</mi>
   <nd>nd en</nd>
   <ni>ni en</ni>
  </e>
  <e l="fr">
   <fd>la</fd>
   <fi>une</fi>
   <md>le</md>
   <mi>un</mi>
  </e>
 </article>

 <conjugation>                   <!-- Prefix for conjugations      -->
  <e l="de">                     <!-- all languages must be listed -->
   <s1>ich</s1>                  <!-- same order as above          -->
   <s2>du</s2>
   <s3f>sie</s3f>
   <s3m>er</s3m>
   <s3n>es</s3n>
   <p1>wir</p1>
   <p2>ihr</p2>
   <p3f common="1">sie</p3f>     <!-- third person is the same for all -->
   <p3m>sie</p3m>
   <p3n>sie</p3n>
  </e>
  <e l="en">
   <s1>I</s1>
   <s2>you</s2>
   <s3f>he</s3f>
   <s3m>she</s3m>
   <s3n>it</s3n>
   <p1>we</p1>
   <p2>you</p2>
   <p3f common="1">they</p3f>
  </e>
  <e l="fr">
   <s1>je</s1>
   <s2>tu</s2>
   <s3f>elle</s3f>
   <s3m>il</s3m>
   <p1>nous</p1>
   <p2>vous</p2>
   <p3f>elles</p3f>
   <p3m>ils</p3m>
  </e>
 </conjugation>

 <options>                                  <!-- document related options, e.g. don't sort -->
  <sort on="1"/>
 </options>

 <type>                                     <!-- user defined word types -->
  <desc no="1">Mein Typ 1</desc>
  <desc no="2">Mein Typ 2</desc>
  <desc no="3">Mein Typ 3</desc>
 </type>

 <tense>                                    <!-- user defined tenses -->
  <desc no="1">Benutzer-Konjugation 1</desc>
 </tense>

 <usage>                                    <!-- user defined usage labels -->
  <desc no="1">Benutzersprachebene 1</desc>
 </usage>

 <e
     m="3"    <!-- lesson index 3, name see above -->
     s="1"    <!-- selected from last query (not yet queried) -->
     t="v">   <!-- type of word: here verb-->

     <o width="208"           <!-- original expression, width of column when last saved  -->
      l="de"                  <!-- language code de: german     -->
      charset="ISO 8859-1"    <!-- charset needed for correct displaing  -->
      y="laufen">             <!-- synonyms, separated by commas currently  -->
      
  <conjugation                      <!-- list the conjugations for the current verb  -->

  >                     
   <t n="PrSi">                     <!-- internal tense: simple present     -->
      <s1>gehe</s1>                 <!-- I, you, he, she ...               -->
      <s2>gehst</s2>
      <s3f common="1">geht</s3f>    <!-- he, she, it the same              -->
      <p1>gehen</p1>
      <p2>gehen</p2>
      <p3f common="1">gehen</p3f></t>
   <t n="PaSi"><s1>schwamm</s1><s2>schwammst</s2></t>
  </conjugation>
  gehen</o>                         <!-- the base word         -->



    <t                              <!-- first translation     -->
      width="208"
      l="en"                        <!-- lang code             -->
      g="1;2"                       <!-- current grade #from# original ; #to# original. 0=not queried, 1..7 (7 is best)) -->
      c="2;0"                       <!-- number of queries so far (from/to the original)   -->
      b="1;0"                       <!-- number of wrong answers (from/to)   -->
      d="12312;123123"              <!-- last query date (from/to) using time()-function   -->
      ff="falscher Freund"          <!-- false friend (from original)   -->
      tf="Freund falscher">         <!-- false friend (to original)   -->
      
   <conjugation
   >
    <t n="PaSi"><s1>went</s1></t>
    <t n="PaPa"><s1>have gone</s1></t>
   </conjugation>
   go</t>
   
     <t width="208"                       <!-- second translation             -->
        l="fr"                            <!-- french                         -->
        charset="Unicode"                 <!-- encoding in unicode            -->
   >aller</t></e>                         <!-- end of this record             -->

 <e m="4"                                 <!-- language code may be omitted from second line on -->
    s="1"
    t="aj">                               <!-- word type: adjectiv           -->

    <o r="unregelmässiges Adjektiv"       <!-- user defined comment           -->
       a="schlecht">                      <!-- antonym of this word           -->

  <comparison>                            <!-- block with comparison forms for this word -->
   <l1>gut</l1>
   <l2>besser</l2>
   <l3>am besten</l3>
  </comparison>
  gut</o><t>                              <!-- first translation -->
   <comparison>
    <l1>good</l1><l2>better</l2><l3>best</l3>
   </comparison>
   good</t><t>                            <!-- second translation -->
    <comparison>
     <l1>bon</l1><l2>meilleur</l2><l3>le meilleur</l3>
    </comparison>
    bon</t></e>
 <e m="2" t="n">
    <o y="Fußgelenk"                    <!-- synonyms                       -->
     u="anat"                           <!-- usage label, internal code for "anatomy" -->
     >Knöchel</o>

     <t p="nackls">                     <!-- pronunciation according to your personal taste. With unicode you may
                                             as well use the phonetic alphabet              -->
     knuckles</t><t g="2;3" c="1;1" b="1;1">cheville</t></e>
</kvtml>


<!--

  Some additional comments:

  All properties are intended to be shared with other users, even between totally different
  languages and encodings.

  The document always uses placeholders which are used to display "real" names according
  to the users language. E.g. "v" means "Verb" whereas "n" means noun which can be extended
  by a subtyp to "noun, female" by writing a placeholder "n:f".

  The same applies to usage labels. Here you may concatenate an arbitrary number of usage
  labels with a comma:  u="anat,biol"  will result in "Anatomy, Biology"

  User defined properties always start with "#" and a number (internal properties always start
  with a letter). e.g. t="#1" references the first entry in the user defined tenses.
  Of course one can't provide automatic translation of the user defined properties this way.

-->