File Coverage

tidy-html5.c
Criterion Covered Total %
statement 3056 13447 22.7
branch 1815 13296 13.6
condition n/a
subroutine n/a
pod n/a
total 4871 26743 18.2


line stmt bran cond sub pod time code
1             /*
2             This file was generated by
3              
4             ./tools/make-c-file.pl
5             */
6             #include
7             #include
8             #include "tidy-html5.h"
9             #ifndef __FORWARD_H__
10             #define __FORWARD_H__
11              
12             /* forward.h -- Forward declarations for major Tidy structures
13              
14             (c) 1998-2007 (W3C) MIT, ERCIM, Keio University
15             See tidy.h for the copyright notice.
16              
17             Avoids many include file circular dependencies.
18              
19             Try to keep this file down to the minimum to avoid
20             cross-talk between modules.
21              
22             Header files include this file. C files include tidy-int.h.
23              
24             */
25              
26             /* #include "tidyplatform.h" */
27             /* #include "tidy.h" */
28              
29             /* Internal symbols are prefixed to avoid clashes with other libraries */
30             #define TYDYAPPEND(str1,str2) str1##str2
31             #define TY_(str) TYDYAPPEND(prvTidy,str)
32              
33             /* Internal symbols are prefixed with 'hidden' attr, to avoid exporting */
34             #if defined(_WIN32) || defined(__CYGWIN__)
35             #define TY_PRIVATE
36             #else
37             #define TY_PRIVATE __attribute__((__visibility__("hidden")))
38             #endif
39              
40             struct _StreamIn;
41             typedef struct _StreamIn StreamIn;
42              
43             struct _StreamOut;
44             typedef struct _StreamOut StreamOut;
45              
46             struct _TidyDocImpl;
47             typedef struct _TidyDocImpl TidyDocImpl;
48              
49             struct _TidyMessageImpl;
50             typedef struct _TidyMessageImpl TidyMessageImpl;
51              
52             /* @todo: this name isn't very instructive! */
53             struct _Dict;
54             typedef struct _Dict Dict;
55              
56             struct _Attribute;
57             typedef struct _Attribute Attribute;
58              
59             struct _AttVal;
60             typedef struct _AttVal AttVal;
61              
62             struct _Node;
63             typedef struct _Node Node;
64              
65             struct _IStack;
66             typedef struct _IStack IStack;
67              
68             struct _Lexer;
69             typedef struct _Lexer Lexer;
70              
71             TY_PRIVATE extern TidyAllocator TY_(g_default_allocator);
72              
73             /** Wrappers for easy memory allocation using an allocator */
74             #define TidyAlloc(allocator, size) ((allocator)->vtbl->alloc((allocator), (size)))
75             #define TidyRealloc(allocator, block, size) ((allocator)->vtbl->realloc((allocator), (block), (size)))
76             #define TidyFree(allocator, block) ((allocator)->vtbl->free((allocator), (block)))
77             #define TidyPanic(allocator, msg) ((allocator)->vtbl->panic((allocator), (msg)))
78             #define TidyClearMemory(block, size) memset((block), 0, (size))
79            
80              
81             #endif /* __FORWARD_H__ */
82             #ifndef __ACCESS_H__
83             #define __ACCESS_H__
84              
85             /*********************************************************************
86             * carry out accessibility checks
87             *
88             * This module carries out processes for all accessibility checks. It
89             * traverses through all the content within the tree and evaluates the
90             * tags for accessibility.
91             *
92             * To perform the following checks, 'AccessibilityChecks' must be
93             * called AFTER the tree structure has been formed.
94             *
95             * If, in the command prompt or configuration file, there is no
96             * specification of which accessibility priorities to check, then no
97             * accessibility checks will be performed.
98             *
99             * The accessibility checks to perform depending on user's desire:
100             * 1. priority 1
101             * 2. priority 1 & 2
102             * 3. priority 1, 2, & 3
103             *
104             * Reference document: http://www.w3.org/TR/WAI-WEBCONTENT/
105             *
106             * Copyright University of Toronto
107             * Portions (c) 1998-2006 (W3C) MIT, ERCIM, Keio University
108             * See `tidy.h` for the copyright notice.
109             * Programmed by: Mike Lam and Chris Ridpath
110             * Modifications by: Terry Teague (TRT)
111             * Further modifications: consult git log.
112             *********************************************************************/
113              
114             /* #include "forward.h" */
115              
116              
117             enum {
118             TEXTBUF_SIZE=128u
119             };
120              
121             struct _TidyAccessImpl;
122             typedef struct _TidyAccessImpl TidyAccessImpl;
123              
124             struct _TidyAccessImpl
125             {
126             /* gets set from Tidy variable AccessibilityCheckLevel */
127             int PRIORITYCHK; /**< */
128              
129             /* Number of characters that are found within the concatenated text */
130             int counter;
131              
132             /* list of characters in the text nodes found within a container element */
133             tmbchar textNode[ TEXTBUF_SIZE ];
134              
135             /* The list of characters found within one text node */
136             tmbchar text[ TEXTBUF_SIZE ];
137              
138             /* Number of frame elements found within a frameset */
139             int numFrames;
140              
141             /* Number of 'longdesc' attributes found within a frameset */
142             int HasCheckedLongDesc;
143              
144             int CheckedHeaders;
145             int ListElements;
146             int OtherListElements;
147              
148             /* For 'USEMAP' identifier */
149             Bool HasUseMap;
150             Bool HasName;
151             Bool HasMap;
152              
153             /* For tracking nodes that are deleted from the original parse tree - TRT */
154             /* Node *access_tree; */
155              
156             Bool HasTH;
157             Bool HasValidFor;
158             Bool HasValidId;
159             Bool HasValidRowHeaders;
160             Bool HasValidColumnHeaders;
161             Bool HasInvalidRowHeader;
162             Bool HasInvalidColumnHeader;
163             int ForID;
164              
165             };
166              
167              
168             TY_PRIVATE void TY_(AccessibilityChecks)( TidyDocImpl* doc );
169              
170              
171             #endif /* __ACCESS_H__ */
172             #ifndef __ATTRDICT_H__
173             #define __ATTRDICT_H__
174              
175             /* attrdict.h -- extended attribute information
176              
177             (c) 1998-2006 (W3C) MIT, ERCIM, Keio University
178             See tidy.h for the copyright notice.
179              
180             */
181              
182             /* #include "tidy.h" */
183              
184             typedef struct _AttrVersion
185             {
186             TidyAttrId attribute;
187             unsigned int versions;
188             } AttrVersion;
189              
190             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_A)[];
191             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_ABBR)[];
192             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_ACRONYM)[];
193             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_ADDRESS)[];
194             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_APPLET)[];
195             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_AREA)[];
196             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_B)[];
197             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_BASE)[];
198             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_BASEFONT)[];
199             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_BDO)[];
200             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_BIG)[];
201             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_BLOCKQUOTE)[];
202             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_BODY)[];
203             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_BR)[];
204             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_BUTTON)[];
205             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_CAPTION)[];
206             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_CENTER)[];
207             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_CITE)[];
208             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_CODE)[];
209             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_COL)[];
210             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_COLGROUP)[];
211             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_DD)[];
212             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_DEL)[];
213             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_DFN)[];
214             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_DIR)[];
215             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_DIV)[];
216             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_DL)[];
217             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_DT)[];
218             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_EM)[];
219             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_FIELDSET)[];
220             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_FONT)[];
221             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_FORM)[];
222             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_FRAME)[];
223             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_FRAMESET)[];
224             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_H1)[];
225             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_H2)[];
226             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_H3)[];
227             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_H4)[];
228             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_H5)[];
229             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_H6)[];
230             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_HEAD)[];
231             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_HR)[];
232             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_HTML)[];
233             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_I)[];
234             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_IFRAME)[];
235             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_IMG)[];
236             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_INPUT)[];
237             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_INS)[];
238             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_ISINDEX)[];
239             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_KBD)[];
240             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_LABEL)[];
241             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_LEGEND)[];
242             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_LI)[];
243             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_LINK)[];
244             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_LISTING)[];
245             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_MAP)[];
246             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_MATHML)[]; /* [i_a]2 */
247             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_MENU)[];
248             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_META)[];
249             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_NEXTID)[];
250             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_NOFRAMES)[];
251             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_NOSCRIPT)[];
252             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_OBJECT)[];
253             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_OL)[];
254             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_OPTGROUP)[];
255             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_OPTION)[];
256             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_P)[];
257             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_PARAM)[];
258             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_PICTURE)[]; /* Issue #151 - html5 */
259             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_PLAINTEXT)[];
260             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_PRE)[];
261             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_Q)[];
262             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_RB)[];
263             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_RBC)[];
264             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_RP)[];
265             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_RT)[];
266             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_RTC)[];
267             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_RUBY)[];
268             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_S)[];
269             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_SAMP)[];
270             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_SCRIPT)[];
271             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_SELECT)[];
272             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_SMALL)[];
273             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_SPAN)[];
274             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_STRIKE)[];
275             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_STRONG)[];
276             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_STYLE)[];
277             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_SUB)[];
278             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_SUP)[];
279             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_SVG)[];
280             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_TABLE)[];
281             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_TBODY)[];
282             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_TD)[];
283             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_TEXTAREA)[];
284             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_TFOOT)[];
285             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_TH)[];
286             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_THEAD)[];
287             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_TITLE)[];
288             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_TR)[];
289             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_TT)[];
290             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_U)[];
291             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_UL)[];
292             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_VAR)[];
293             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_XMP)[];
294              
295             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_TRACK)[];
296             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_SUMMARY)[];
297             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_FIGCAPTION)[];
298             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_HGROUP)[];
299             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_FIGURE)[];
300             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_ARTICLE)[];
301             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_ASIDE)[];
302             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_BDI)[];
303             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_NAV)[];
304             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_SECTION)[];
305             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_FOOTER)[];
306             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_HEADER)[];
307             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_DETAILS)[];
308             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_DIALOG)[];
309             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_COMMAND)[];
310             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_MAIN)[];
311             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_MARK)[];
312             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_OUTPUT)[];
313             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_MENUITEM)[];
314             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_METER)[];
315             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_PROGRESS)[];
316             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_SLOT)[];
317             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_TEMPLATE)[];
318             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_TIME)[];
319             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_DATA)[];
320             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_DATALIST)[];
321             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_AUDIO)[];
322             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_VIDEO)[];
323             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_CANVAS)[];
324             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_SOURCE)[];
325             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_EMBED)[];
326             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_KEYGEN)[];
327             TY_PRIVATE extern const AttrVersion TY_(W3CAttrsFor_WBR)[];
328              
329             #endif /* __ATTRDICT_H__ */
330             #ifndef __ATTRS_H__
331             #define __ATTRS_H__
332              
333             /* attrs.h -- recognize HTML attributes
334              
335             (c) 1998-2007 (W3C) MIT, ERCIM, Keio University
336             See tidy.h for the copyright notice.
337              
338             */
339              
340             /* #include "forward.h" */
341              
342             /* declaration for methods that check attribute values */
343             typedef void (AttrCheck)(TidyDocImpl* doc, Node *node, AttVal *attval);
344              
345             struct _Attribute
346             {
347             TidyAttrId id;
348             tmbstr name;
349             AttrCheck* attrchk;
350              
351             struct _Attribute* next;
352             };
353              
354              
355             /*
356             Anchor/Node linked list
357             */
358              
359             struct _Anchor
360             {
361             struct _Anchor *next;
362             Node *node;
363             char *name;
364             };
365              
366             typedef struct _Anchor Anchor;
367              
368             enum
369             {
370             ATTRIBUTE_HASH_SIZE=178u
371             };
372              
373             struct _AttrHash
374             {
375             Attribute const* attr;
376             struct _AttrHash* next;
377             };
378              
379             typedef struct _AttrHash AttrHash;
380              
381             enum
382             {
383             ANCHOR_HASH_SIZE=1021u
384             };
385              
386             /* Keeps a list of attributes that are sorted ahead of the others. */
387             typedef struct _priorityAttribs {
388             tmbstr* list;
389             unsigned int count;
390             unsigned int capacity;
391             } PriorityAttribs;
392              
393             struct _TidyAttribImpl
394             {
395             /* anchor/node lookup */
396             Anchor* anchor_hash[ANCHOR_HASH_SIZE];
397              
398             /* Declared literal attributes */
399             Attribute* declared_attr_list;
400              
401             /* Prioritized list of attributes to write */
402             PriorityAttribs priorityAttribs;
403              
404             AttrHash* hashtab[ATTRIBUTE_HASH_SIZE];
405             };
406              
407             typedef struct _TidyAttribImpl TidyAttribImpl;
408              
409             #define XHTML_NAMESPACE "http://www.w3.org/1999/xhtml"
410              
411             TY_PRIVATE AttrCheck TY_(CheckUrl);
412              
413             /* public method for finding attribute definition by name */
414             TY_PRIVATE const Attribute* TY_(CheckAttribute)( TidyDocImpl* doc, Node *node, AttVal *attval );
415              
416             TY_PRIVATE const Attribute* TY_(FindAttribute)( TidyDocImpl* doc, AttVal *attval );
417              
418             TY_PRIVATE AttVal* TY_(GetAttrByName)( Node *node, ctmbstr name );
419              
420             TY_PRIVATE void TY_(DropAttrByName)( TidyDocImpl* doc, Node *node, ctmbstr name );
421              
422             TY_PRIVATE AttVal* TY_(AddAttribute)( TidyDocImpl* doc,
423             Node *node, ctmbstr name, ctmbstr value );
424              
425             TY_PRIVATE AttVal* TY_(RepairAttrValue)(TidyDocImpl* doc, Node* node, ctmbstr name, ctmbstr value);
426              
427             /* Add an item to the list of priority attributes to write first. */
428             TY_PRIVATE void TY_(DefinePriorityAttribute)(TidyDocImpl* doc, ctmbstr name);
429              
430             /* Start an iterator for priority attributes. */
431             TY_PRIVATE TidyIterator TY_(getPriorityAttrList)( TidyDocImpl* doc );
432              
433             /* Get the next priority attribute. */
434             TY_PRIVATE ctmbstr TY_(getNextPriorityAttr)( TidyDocImpl* doc, TidyIterator* iter );
435              
436             TY_PRIVATE Bool TY_(IsUrl)( TidyDocImpl* doc, ctmbstr attrname );
437              
438             /* Bool IsBool( TidyDocImpl* doc, ctmbstr attrname ); */
439              
440             TY_PRIVATE Bool TY_(IsScript)( TidyDocImpl* doc, ctmbstr attrname );
441              
442             /* may id or name serve as anchor? */
443             TY_PRIVATE Bool TY_(IsAnchorElement)( TidyDocImpl* doc, Node* node );
444              
445             /*
446             In CSS1, selectors can contain only the characters A-Z, 0-9, and
447             Unicode characters 161-255, plus dash (-); they cannot start with
448             a dash or a digit; they can also contain escaped characters and any
449             Unicode character as a numeric code (see next item).
450              
451             The backslash followed by at most four hexadecimal digits (0..9A..F)
452             stands for the Unicode character with that number.
453              
454             Any character except a hexadecimal digit can be escaped to remove its
455             special meaning, by putting a backslash in front.
456              
457             #508936 - CSS class naming for -clean option
458             */
459             TY_PRIVATE Bool TY_(IsCSS1Selector)( ctmbstr buf );
460              
461             TY_PRIVATE Bool TY_(IsValidHTMLID)(ctmbstr id);
462             TY_PRIVATE Bool TY_(IsValidXMLID)(ctmbstr id);
463              
464             /* removes anchor for specific node */
465             TY_PRIVATE void TY_(RemoveAnchorByNode)( TidyDocImpl* doc, ctmbstr name, Node *node );
466              
467             /* free all anchors */
468             TY_PRIVATE void TY_(FreeAnchors)( TidyDocImpl* doc );
469              
470              
471             /* public methods for inititializing/freeing attribute dictionary */
472             TY_PRIVATE void TY_(InitAttrs)( TidyDocImpl* doc );
473             TY_PRIVATE void TY_(FreeAttrTable)( TidyDocImpl* doc );
474              
475             TY_PRIVATE void TY_(FreeAttrPriorityList)( TidyDocImpl* doc );
476              
477             TY_PRIVATE void TY_(AppendToClassAttr)( TidyDocImpl* doc, AttVal *classattr, ctmbstr classname );
478             /*
479             the same attribute name can't be used
480             more than once in each element
481             */
482             TY_PRIVATE void TY_(RepairDuplicateAttributes)( TidyDocImpl* doc, Node* node, Bool isXml );
483             TY_PRIVATE void TY_(SortAttributes)(TidyDocImpl* doc, Node* node, TidyAttrSortStrategy strat);
484              
485             TY_PRIVATE Bool TY_(IsBoolAttribute)( AttVal* attval );
486             TY_PRIVATE Bool TY_(attrIsEvent)( AttVal* attval );
487              
488             TY_PRIVATE AttVal* TY_(AttrGetById)( Node* node, TidyAttrId id );
489              
490             TY_PRIVATE unsigned int TY_(NodeAttributeVersions)( Node* node, TidyAttrId id );
491              
492             TY_PRIVATE Bool TY_(AttributeIsProprietary)(Node* node, AttVal* attval);
493             TY_PRIVATE Bool TY_(AttributeIsMismatched)(Node* node, AttVal* attval, TidyDocImpl* doc);
494              
495              
496             /* 0 == TidyAttr_UNKNOWN */
497             #define AttrId(av) ((av) && (av)->dict ? (av)->dict->id : TidyAttr_UNKNOWN)
498             #define AttrIsId(av, atid) ((av) && (av)->dict && ((av)->dict->id == atid))
499              
500             #define AttrHasValue(attr) ((attr) && (attr)->value)
501             #define AttrValueIs(attr, val) (AttrHasValue(attr) && \
502             TY_(tmbstrcasecmp)((attr)->value, val) == 0)
503             #define AttrContains(attr, val) (AttrHasValue(attr) && \
504             TY_(tmbsubstr)((attr)->value, val) != NULL)
505             #define AttrVersions(attr) ((attr) && (attr)->dict ? (attr)->dict->versions : VERS_PROPRIETARY)
506              
507             #define AttrsHaveSameId(a, b) (a && b && a->dict && b->dict && a->dict->id && \
508             b->dict->id && a->dict->id == b->dict->id)
509              
510             #define attrIsABBR(av) AttrIsId( av, TidyAttr_ABBR )
511             #define attrIsACCEPT(av) AttrIsId( av, TidyAttr_ACCEPT )
512             #define attrIsACCEPT_CHARSET(av) AttrIsId( av, TidyAttr_ACCEPT_CHARSET )
513             #define attrIsACCESSKEY(av) AttrIsId( av, TidyAttr_ACCESSKEY )
514             #define attrIsACTION(av) AttrIsId( av, TidyAttr_ACTION )
515             #define attrIsADD_DATE(av) AttrIsId( av, TidyAttr_ADD_DATE )
516             #define attrIsALIGN(av) AttrIsId( av, TidyAttr_ALIGN )
517             #define attrIsALINK(av) AttrIsId( av, TidyAttr_ALINK )
518             #define attrIsALT(av) AttrIsId( av, TidyAttr_ALT )
519             #define attrIsARCHIVE(av) AttrIsId( av, TidyAttr_ARCHIVE )
520             #define attrIsAXIS(av) AttrIsId( av, TidyAttr_AXIS )
521             #define attrIsBACKGROUND(av) AttrIsId( av, TidyAttr_BACKGROUND )
522             #define attrIsBGCOLOR(av) AttrIsId( av, TidyAttr_BGCOLOR )
523             #define attrIsBGPROPERTIES(av) AttrIsId( av, TidyAttr_BGPROPERTIES )
524             #define attrIsBORDER(av) AttrIsId( av, TidyAttr_BORDER )
525             #define attrIsBORDERCOLOR(av) AttrIsId( av, TidyAttr_BORDERCOLOR )
526             #define attrIsBOTTOMMARGIN(av) AttrIsId( av, TidyAttr_BOTTOMMARGIN )
527             #define attrIsCELLPADDING(av) AttrIsId( av, TidyAttr_CELLPADDING )
528             #define attrIsCELLSPACING(av) AttrIsId( av, TidyAttr_CELLSPACING )
529             #define attrIsCHARSET(av) AttrIsId( av, TidyAttr_CHARSET )
530             #define attrIsCHAR(av) AttrIsId( av, TidyAttr_CHAR )
531             #define attrIsCHAROFF(av) AttrIsId( av, TidyAttr_CHAROFF )
532             #define attrIsCHARSET(av) AttrIsId( av, TidyAttr_CHARSET )
533             #define attrIsCHECKED(av) AttrIsId( av, TidyAttr_CHECKED )
534             #define attrIsCITE(av) AttrIsId( av, TidyAttr_CITE )
535             #define attrIsCLASS(av) AttrIsId( av, TidyAttr_CLASS )
536             #define attrIsCLASSID(av) AttrIsId( av, TidyAttr_CLASSID )
537             #define attrIsCLEAR(av) AttrIsId( av, TidyAttr_CLEAR )
538             #define attrIsCODE(av) AttrIsId( av, TidyAttr_CODE )
539             #define attrIsCODEBASE(av) AttrIsId( av, TidyAttr_CODEBASE )
540             #define attrIsCODETYPE(av) AttrIsId( av, TidyAttr_CODETYPE )
541             #define attrIsCOLOR(av) AttrIsId( av, TidyAttr_COLOR )
542             #define attrIsCOLS(av) AttrIsId( av, TidyAttr_COLS )
543             #define attrIsCOLSPAN(av) AttrIsId( av, TidyAttr_COLSPAN )
544             #define attrIsCOMPACT(av) AttrIsId( av, TidyAttr_COMPACT )
545             #define attrIsCONTENT(av) AttrIsId( av, TidyAttr_CONTENT )
546             #define attrIsCOORDS(av) AttrIsId( av, TidyAttr_COORDS )
547             #define attrIsDATA(av) AttrIsId( av, TidyAttr_DATA )
548             #define attrIsDATAFLD(av) AttrIsId( av, TidyAttr_DATAFLD )
549             #define attrIsDATAFORMATAS(av) AttrIsId( av, TidyAttr_DATAFORMATAS )
550             #define attrIsDATAPAGESIZE(av) AttrIsId( av, TidyAttr_DATAPAGESIZE )
551             #define attrIsDATASRC(av) AttrIsId( av, TidyAttr_DATASRC )
552             #define attrIsDATETIME(av) AttrIsId( av, TidyAttr_DATETIME )
553             #define attrIsDECLARE(av) AttrIsId( av, TidyAttr_DECLARE )
554             #define attrIsDEFER(av) AttrIsId( av, TidyAttr_DEFER )
555             #define attrIsDIR(av) AttrIsId( av, TidyAttr_DIR )
556             #define attrIsDISABLED(av) AttrIsId( av, TidyAttr_DISABLED )
557             #define attrIsENCODING(av) AttrIsId( av, TidyAttr_ENCODING )
558             #define attrIsENCTYPE(av) AttrIsId( av, TidyAttr_ENCTYPE )
559             #define attrIsFACE(av) AttrIsId( av, TidyAttr_FACE )
560             #define attrIsFOR(av) AttrIsId( av, TidyAttr_FOR )
561             #define attrIsFRAME(av) AttrIsId( av, TidyAttr_FRAME )
562             #define attrIsFRAMEBORDER(av) AttrIsId( av, TidyAttr_FRAMEBORDER )
563             #define attrIsFRAMESPACING(av) AttrIsId( av, TidyAttr_FRAMESPACING )
564             #define attrIsGRIDX(av) AttrIsId( av, TidyAttr_GRIDX )
565             #define attrIsGRIDY(av) AttrIsId( av, TidyAttr_GRIDY )
566             #define attrIsHEADERS(av) AttrIsId( av, TidyAttr_HEADERS )
567             #define attrIsHEIGHT(av) AttrIsId( av, TidyAttr_HEIGHT )
568             #define attrIsHREF(av) AttrIsId( av, TidyAttr_HREF )
569             #define attrIsHREFLANG(av) AttrIsId( av, TidyAttr_HREFLANG )
570             #define attrIsHSPACE(av) AttrIsId( av, TidyAttr_HSPACE )
571             #define attrIsHTTP_EQUIV(av) AttrIsId( av, TidyAttr_HTTP_EQUIV )
572             #define attrIsID(av) AttrIsId( av, TidyAttr_ID )
573             #define attrIsISMAP(av) AttrIsId( av, TidyAttr_ISMAP )
574             #define attrIsITEMID(av) AttrIsId( av, TidyAttr_ITEMID )
575             #define attrIsITEMPROP(av) AttrIsId( av, TidyAttr_ITEMPROP )
576             #define attrIsITEMREF(av) AttrIsId( av, TidyAttr_ITEMREF )
577             #define attrIsITEMSCOPE(av) AttrIsId( av, TidyAttr_ITEMSCOPE )
578             #define attrIsITEMTYPE(av) AttrIsId( av, TidyAttr_ITEMTYPE )
579             #define attrIsLABEL(av) AttrIsId( av, TidyAttr_LABEL )
580             #define attrIsLANG(av) AttrIsId( av, TidyAttr_LANG )
581             #define attrIsLANGUAGE(av) AttrIsId( av, TidyAttr_LANGUAGE )
582             #define attrIsLAST_MODIFIED(av) AttrIsId( av, TidyAttr_LAST_MODIFIED )
583             #define attrIsLAST_VISIT(av) AttrIsId( av, TidyAttr_LAST_VISIT )
584             #define attrIsLEFTMARGIN(av) AttrIsId( av, TidyAttr_LEFTMARGIN )
585             #define attrIsLINK(av) AttrIsId( av, TidyAttr_LINK )
586             #define attrIsLONGDESC(av) AttrIsId( av, TidyAttr_LONGDESC )
587             #define attrIsLOWSRC(av) AttrIsId( av, TidyAttr_LOWSRC )
588             #define attrIsMARGINHEIGHT(av) AttrIsId( av, TidyAttr_MARGINHEIGHT )
589             #define attrIsMARGINWIDTH(av) AttrIsId( av, TidyAttr_MARGINWIDTH )
590             #define attrIsMAXLENGTH(av) AttrIsId( av, TidyAttr_MAXLENGTH )
591             #define attrIsMEDIA(av) AttrIsId( av, TidyAttr_MEDIA )
592             #define attrIsMETHOD(av) AttrIsId( av, TidyAttr_METHOD )
593             #define attrIsMULTIPLE(av) AttrIsId( av, TidyAttr_MULTIPLE )
594             #define attrIsNAME(av) AttrIsId( av, TidyAttr_NAME )
595             #define attrIsNOHREF(av) AttrIsId( av, TidyAttr_NOHREF )
596             #define attrIsNORESIZE(av) AttrIsId( av, TidyAttr_NORESIZE )
597             #define attrIsNOSHADE(av) AttrIsId( av, TidyAttr_NOSHADE )
598             #define attrIsNOWRAP(av) AttrIsId( av, TidyAttr_NOWRAP )
599             #define attrIsOBJECT(av) AttrIsId( av, TidyAttr_OBJECT )
600             #define attrIsOnAFTERUPDATE(av) AttrIsId( av, TidyAttr_OnAFTERUPDATE )
601             #define attrIsOnBEFOREUNLOAD(av) AttrIsId( av, TidyAttr_OnBEFOREUNLOAD )
602             #define attrIsOnBEFOREUPDATE(av) AttrIsId( av, TidyAttr_OnBEFOREUPDATE )
603             #define attrIsOnBLUR(av) AttrIsId( av, TidyAttr_OnBLUR )
604             #define attrIsOnCHANGE(av) AttrIsId( av, TidyAttr_OnCHANGE )
605             #define attrIsOnCLICK(av) AttrIsId( av, TidyAttr_OnCLICK )
606             #define attrIsOnDATAAVAILABLE(av) AttrIsId( av, TidyAttr_OnDATAAVAILABLE )
607             #define attrIsOnDATASETCHANGED(av) AttrIsId( av, TidyAttr_OnDATASETCHANGED )
608             #define attrIsOnDATASETCOMPLETE(av) AttrIsId( av, TidyAttr_OnDATASETCOMPLETE )
609             #define attrIsOnDBLCLICK(av) AttrIsId( av, TidyAttr_OnDBLCLICK )
610             #define attrIsOnERRORUPDATE(av) AttrIsId( av, TidyAttr_OnERRORUPDATE )
611             #define attrIsOnFOCUS(av) AttrIsId( av, TidyAttr_OnFOCUS )
612             #define attrIsOnKEYDOWN(av) AttrIsId( av, TidyAttr_OnKEYDOWN )
613             #define attrIsOnKEYPRESS(av) AttrIsId( av, TidyAttr_OnKEYPRESS )
614             #define attrIsOnKEYUP(av) AttrIsId( av, TidyAttr_OnKEYUP )
615             #define attrIsOnLOAD(av) AttrIsId( av, TidyAttr_OnLOAD )
616             #define attrIsOnMOUSEDOWN(av) AttrIsId( av, TidyAttr_OnMOUSEDOWN )
617             #define attrIsOnMOUSEMOVE(av) AttrIsId( av, TidyAttr_OnMOUSEMOVE )
618             #define attrIsOnMOUSEOUT(av) AttrIsId( av, TidyAttr_OnMOUSEOUT )
619             #define attrIsOnMOUSEOVER(av) AttrIsId( av, TidyAttr_OnMOUSEOVER )
620             #define attrIsOnMOUSEUP(av) AttrIsId( av, TidyAttr_OnMOUSEUP )
621             #define attrIsOnRESET(av) AttrIsId( av, TidyAttr_OnRESET )
622             #define attrIsOnROWENTER(av) AttrIsId( av, TidyAttr_OnROWENTER )
623             #define attrIsOnROWEXIT(av) AttrIsId( av, TidyAttr_OnROWEXIT )
624             #define attrIsOnSELECT(av) AttrIsId( av, TidyAttr_OnSELECT )
625             #define attrIsOnSUBMIT(av) AttrIsId( av, TidyAttr_OnSUBMIT )
626             #define attrIsOnUNLOAD(av) AttrIsId( av, TidyAttr_OnUNLOAD )
627             #define attrIsPROFILE(av) AttrIsId( av, TidyAttr_PROFILE )
628             #define attrIsPROMPT(av) AttrIsId( av, TidyAttr_PROMPT )
629             #define attrIsRBSPAN(av) AttrIsId( av, TidyAttr_RBSPAN )
630             #define attrIsREADONLY(av) AttrIsId( av, TidyAttr_READONLY )
631             #define attrIsREL(av) AttrIsId( av, TidyAttr_REL )
632             #define attrIsREV(av) AttrIsId( av, TidyAttr_REV )
633             #define attrIsRIGHTMARGIN(av) AttrIsId( av, TidyAttr_RIGHTMARGIN )
634             #define attrIsROLE(av) AttrIsId( av, TidyAttr_ROLE )
635             #define attrIsROWS(av) AttrIsId( av, TidyAttr_ROWS )
636             #define attrIsROWSPAN(av) AttrIsId( av, TidyAttr_ROWSPAN )
637             #define attrIsRULES(av) AttrIsId( av, TidyAttr_RULES )
638             #define attrIsSCHEME(av) AttrIsId( av, TidyAttr_SCHEME )
639             #define attrIsSCOPE(av) AttrIsId( av, TidyAttr_SCOPE )
640             #define attrIsSCROLLING(av) AttrIsId( av, TidyAttr_SCROLLING )
641             #define attrIsSELECTED(av) AttrIsId( av, TidyAttr_SELECTED )
642             #define attrIsSHAPE(av) AttrIsId( av, TidyAttr_SHAPE )
643             #define attrIsSHOWGRID(av) AttrIsId( av, TidyAttr_SHOWGRID )
644             #define attrIsSHOWGRIDX(av) AttrIsId( av, TidyAttr_SHOWGRIDX )
645             #define attrIsSHOWGRIDY(av) AttrIsId( av, TidyAttr_SHOWGRIDY )
646             #define attrIsSIZE(av) AttrIsId( av, TidyAttr_SIZE )
647             #define attrIsSLOT(av) AttrIsId( av, TidyAttr_SLOT )
648             #define attrIsSPAN(av) AttrIsId( av, TidyAttr_SPAN )
649             #define attrIsSRC(av) AttrIsId( av, TidyAttr_SRC )
650             #define attrIsSTANDBY(av) AttrIsId( av, TidyAttr_STANDBY )
651             #define attrIsSTART(av) AttrIsId( av, TidyAttr_START )
652             #define attrIsSTYLE(av) AttrIsId( av, TidyAttr_STYLE )
653             #define attrIsSUMMARY(av) AttrIsId( av, TidyAttr_SUMMARY )
654             #define attrIsTABINDEX(av) AttrIsId( av, TidyAttr_TABINDEX )
655             #define attrIsTARGET(av) AttrIsId( av, TidyAttr_TARGET )
656             #define attrIsTEXT(av) AttrIsId( av, TidyAttr_TEXT )
657             #define attrIsTITLE(av) AttrIsId( av, TidyAttr_TITLE )
658             #define attrIsTOPMARGIN(av) AttrIsId( av, TidyAttr_TOPMARGIN )
659             #define attrIsTYPE(av) AttrIsId( av, TidyAttr_TYPE )
660             #define attrIsUSEMAP(av) AttrIsId( av, TidyAttr_USEMAP )
661             #define attrIsVALIGN(av) AttrIsId( av, TidyAttr_VALIGN )
662             #define attrIsVALUE(av) AttrIsId( av, TidyAttr_VALUE )
663             #define attrIsVALUETYPE(av) AttrIsId( av, TidyAttr_VALUETYPE )
664             #define attrIsVERSION(av) AttrIsId( av, TidyAttr_VERSION )
665             #define attrIsVLINK(av) AttrIsId( av, TidyAttr_VLINK )
666             #define attrIsVSPACE(av) AttrIsId( av, TidyAttr_VSPACE )
667             #define attrIsWIDTH(av) AttrIsId( av, TidyAttr_WIDTH )
668             #define attrIsWRAP(av) AttrIsId( av, TidyAttr_WRAP )
669             #define attrIsXMLNS(av) AttrIsId( av, TidyAttr_XMLNS )
670             #define attrIsXML_LANG(av) AttrIsId( av, TidyAttr_XML_LANG )
671             #define attrIsXML_SPACE(av) AttrIsId( av, TidyAttr_XML_SPACE )
672             #define attrIsARIA_ACTIVEDESCENDANT(av) AttrIsId( av, TidyAttr_ARIA_ACTIVEDESCENDANT )
673             #define attrIsARIA_ATOMIC(av) AttrIsId( av, TidyAttr_ARIA_ATOMIC )
674             #define attrIsARIA_AUTOCOMPLETE(av) AttrIsId( av, TidyAttr_ARIA_AUTOCOMPLETE )
675             #define attrIsARIA_BUSY(av) AttrIsId( av, TidyAttr_ARIA_BUSY )
676             #define attrIsARIA_CHECKED(av) AttrIsId( av, TidyAttr_ARIA_CHECKED )
677             #define attrIsARIA_CONTROLS(av) AttrIsId( av, TidyAttr_ARIA_CONTROLS )
678             #define attrIsARIA_DESCRIBEDBY(av) AttrIsId( av, TidyAttr_ARIA_DESCRIBEDBY )
679             #define attrIsARIA_DISABLED(av) AttrIsId( av, TidyAttr_ARIA_DISABLED )
680             #define attrIsARIA_DROPEFFECT(av) AttrIsId( av, TidyAttr_ARIA_DROPEFFECT )
681             #define attrIsARIA_EXPANDED(av) AttrIsId( av, TidyAttr_ARIA_EXPANDED )
682             #define attrIsARIA_FLOWTO(av) AttrIsId( av, TidyAttr_ARIA_FLOWTO )
683             #define attrIsARIA_GRABBED(av) AttrIsId( av, TidyAttr_ARIA_GRABBED )
684             #define attrIsARIA_HASPOPUP(av) AttrIsId( av, TidyAttr_ARIA_HASPOPUP )
685             #define attrIsARIA_HIDDEN(av) AttrIsId( av, TidyAttr_ARIA_HIDDEN )
686             #define attrIsARIA_INVALID(av) AttrIsId( av, TidyAttr_ARIA_INVALID )
687             #define attrIsARIA_LABEL(av) AttrIsId( av, TidyAttr_ARIA_LABEL )
688             #define attrIsARIA_LABELLEDBY(av) AttrIsId( av, TidyAttr_ARIA_LABELLEDBY )
689             #define attrIsARIA_LEVEL(av) AttrIsId( av, TidyAttr_ARIA_LEVEL )
690             #define attrIsARIA_LIVE(av) AttrIsId( av, TidyAttr_ARIA_LIVE )
691             #define attrIsARIA_MULTILINE(av) AttrIsId( av, TidyAttr_ARIA_MULTILINE )
692             #define attrIsARIA_MULTISELECTABLE(av) AttrIsId( av, TidyAttr_ARIA_MULTISELECTABLE )
693             #define attrIsARIA_ORIENTATION(av) AttrIsId( av, TidyAttr_ARIA_ORIENTATION )
694             #define attrIsARIA_OWNS(av) AttrIsId( av, TidyAttr_ARIA_OWNS )
695             #define attrIsARIA_POSINSET(av) AttrIsId( av, TidyAttr_ARIA_POSINSET )
696             #define attrIsARIA_PRESSED(av) AttrIsId( av, TidyAttr_ARIA_PRESSED )
697             #define attrIsARIA_READONLY(av) AttrIsId( av, TidyAttr_ARIA_READONLY )
698             #define attrIsARIA_RELEVANT(av) AttrIsId( av, TidyAttr_ARIA_RELEVANT )
699             #define attrIsARIA_REQUIRED(av) AttrIsId( av, TidyAttr_ARIA_REQUIRED )
700             #define attrIsARIA_SELECTED(av) AttrIsId( av, TidyAttr_ARIA_SELECTED )
701             #define attrIsARIA_SETSIZE(av) AttrIsId( av, TidyAttr_ARIA_SETSIZE )
702             #define attrIsARIA_SORT(av) AttrIsId( av, TidyAttr_ARIA_SORT )
703             #define attrIsARIA_VALUEMAX(av) AttrIsId( av, TidyAttr_ARIA_VALUEMAX )
704             #define attrIsARIA_VALUEMIN(av) AttrIsId( av, TidyAttr_ARIA_VALUEMIN )
705             #define attrIsARIA_VALUENOW(av) AttrIsId( av, TidyAttr_ARIA_VALUENOW )
706             #define attrIsARIA_VALUETEXT(av) AttrIsId( av, TidyAttr_ARIA_VALUETEXT )
707             #define attrIsSVG_FILL(av) AttrIsId( av, TidyAttr_FILL )
708             #define attrIsSVG_FILLRULE(av) AttrIsId( av, TidyAttr_FILLRULE )
709             #define attrIsSVG_STROKE(av) AttrIsId( av, TidyAttr_STROKE )
710             #define attrIsSVG_STROKEDASHARRAY(av) AttrIsId( av, TidyAttr_STROKEDASHARRAY )
711             #define attrIsSVG_STROKEDASHOFFSET(av) AttrIsId( av, TidyAttr_STROKEDASHOFFSET )
712             #define attrIsSVG_STROKELINECAP(av) AttrIsId( av, TidyAttr_STROKELINECAP )
713             #define attrIsSVG_STROKELINEJOIN(av) AttrIsId( av, TidyAttr_STROKELINEJOIN )
714             #define attrIsSVG_STROKEMITERLIMIT(av) AttrIsId( av, TidyAttr_STROKEMITERLIMIT )
715             #define attrIsSVG_STROKEWIDTH(av) AttrIsId( av, TidyAttr_STROKEWIDTH )
716             #define attrIsSVG_COLORINTERPOLATION(a) AttrIsId( a, TidyAttr_COLORINTERPOLATION )
717             #define attrIsSVG_COLORRENDERING(av) AttrIsId( av, TidyAttr_COLORRENDERING )
718             #define attrIsSVG_OPACITY(av) AttrIsId( av, TidyAttr_OPACITY )
719             #define attrIsSVG_STROKEOPACITY(av) AttrIsId( av, TidyAttr_STROKEOPACITY )
720             #define attrIsSVG_FILLOPACITY(av) AttrIsId( av, TidyAttr_FILLOPACITY )
721              
722             /* Attribute Retrieval macros
723             */
724             #define attrGetHREF( nod ) TY_(AttrGetById)( nod, TidyAttr_HREF )
725             #define attrGetSRC( nod ) TY_(AttrGetById)( nod, TidyAttr_SRC )
726             #define attrGetID( nod ) TY_(AttrGetById)( nod, TidyAttr_ID )
727             #define attrGetNAME( nod ) TY_(AttrGetById)( nod, TidyAttr_NAME )
728             #define attrGetSUMMARY( nod ) TY_(AttrGetById)( nod, TidyAttr_SUMMARY )
729             #define attrGetALT( nod ) TY_(AttrGetById)( nod, TidyAttr_ALT )
730             #define attrGetLONGDESC( nod ) TY_(AttrGetById)( nod, TidyAttr_LONGDESC )
731             #define attrGetUSEMAP( nod ) TY_(AttrGetById)( nod, TidyAttr_USEMAP )
732             #define attrGetISMAP( nod ) TY_(AttrGetById)( nod, TidyAttr_ISMAP )
733             #define attrGetLANGUAGE( nod ) TY_(AttrGetById)( nod, TidyAttr_LANGUAGE )
734             #define attrGetTYPE( nod ) TY_(AttrGetById)( nod, TidyAttr_TYPE )
735             #define attrGetVALUE( nod ) TY_(AttrGetById)( nod, TidyAttr_VALUE )
736             #define attrGetCONTENT( nod ) TY_(AttrGetById)( nod, TidyAttr_CONTENT )
737             #define attrGetTITLE( nod ) TY_(AttrGetById)( nod, TidyAttr_TITLE )
738             #define attrGetXMLNS( nod ) TY_(AttrGetById)( nod, TidyAttr_XMLNS )
739             #define attrGetDATAFLD( nod ) TY_(AttrGetById)( nod, TidyAttr_DATAFLD )
740             #define attrGetWIDTH( nod ) TY_(AttrGetById)( nod, TidyAttr_WIDTH )
741             #define attrGetHEIGHT( nod ) TY_(AttrGetById)( nod, TidyAttr_HEIGHT )
742             #define attrGetFOR( nod ) TY_(AttrGetById)( nod, TidyAttr_FOR )
743             #define attrGetSELECTED( nod ) TY_(AttrGetById)( nod, TidyAttr_SELECTED )
744             #define attrGetCHARSET( nod ) TY_(AttrGetById)( nod, TidyAttr_CHARSET )
745             #define attrGetCHECKED( nod ) TY_(AttrGetById)( nod, TidyAttr_CHECKED )
746             #define attrGetLANG( nod ) TY_(AttrGetById)( nod, TidyAttr_LANG )
747             #define attrGetTARGET( nod ) TY_(AttrGetById)( nod, TidyAttr_TARGET )
748             #define attrGetHTTP_EQUIV( nod ) TY_(AttrGetById)( nod, TidyAttr_HTTP_EQUIV )
749             #define attrGetREL( nod ) TY_(AttrGetById)( nod, TidyAttr_REL )
750              
751             #define attrGetOnMOUSEMOVE( nod ) TY_(AttrGetById)( nod, TidyAttr_OnMOUSEMOVE )
752             #define attrGetOnMOUSEDOWN( nod ) TY_(AttrGetById)( nod, TidyAttr_OnMOUSEDOWN )
753             #define attrGetOnMOUSEUP( nod ) TY_(AttrGetById)( nod, TidyAttr_OnMOUSEUP )
754             #define attrGetOnCLICK( nod ) TY_(AttrGetById)( nod, TidyAttr_OnCLICK )
755             #define attrGetOnMOUSEOVER( nod ) TY_(AttrGetById)( nod, TidyAttr_OnMOUSEOVER )
756             #define attrGetOnMOUSEOUT( nod ) TY_(AttrGetById)( nod, TidyAttr_OnMOUSEOUT )
757             #define attrGetOnKEYDOWN( nod ) TY_(AttrGetById)( nod, TidyAttr_OnKEYDOWN )
758             #define attrGetOnKEYUP( nod ) TY_(AttrGetById)( nod, TidyAttr_OnKEYUP )
759             #define attrGetOnKEYPRESS( nod ) TY_(AttrGetById)( nod, TidyAttr_OnKEYPRESS )
760             #define attrGetOnFOCUS( nod ) TY_(AttrGetById)( nod, TidyAttr_OnFOCUS )
761             #define attrGetOnBLUR( nod ) TY_(AttrGetById)( nod, TidyAttr_OnBLUR )
762              
763             #define attrGetBGCOLOR( nod ) TY_(AttrGetById)( nod, TidyAttr_BGCOLOR )
764              
765             #define attrGetLINK( nod ) TY_(AttrGetById)( nod, TidyAttr_LINK )
766             #define attrGetALINK( nod ) TY_(AttrGetById)( nod, TidyAttr_ALINK )
767             #define attrGetVLINK( nod ) TY_(AttrGetById)( nod, TidyAttr_VLINK )
768              
769             #define attrGetTEXT( nod ) TY_(AttrGetById)( nod, TidyAttr_TEXT )
770             #define attrGetSTYLE( nod ) TY_(AttrGetById)( nod, TidyAttr_STYLE )
771             #define attrGetABBR( nod ) TY_(AttrGetById)( nod, TidyAttr_ABBR )
772             #define attrGetCOLSPAN( nod ) TY_(AttrGetById)( nod, TidyAttr_COLSPAN )
773             #define attrGetFONT( nod ) TY_(AttrGetById)( nod, TidyAttr_FONT )
774             #define attrGetBASEFONT( nod ) TY_(AttrGetById)( nod, TidyAttr_BASEFONT )
775             #define attrGetROWSPAN( nod ) TY_(AttrGetById)( nod, TidyAttr_ROWSPAN )
776              
777             #define attrGetROLE( nod ) TY_(AttrGetById)( nod, TidyAttr_ROLE )
778              
779             #define attrGetARIA_ACTIVEDESCENDANT( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_ACTIVEDESCENDANT )
780             #define attrGetARIA_ATOMIC( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_ATOMIC )
781             #define attrGetARIA_AUTOCOMPLETE( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_AUTOCOMPLETE )
782             #define attrGetARIA_BUSY( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_BUSY )
783             #define attrGetARIA_CHECKED( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_CHECKED )
784             #define attrGetARIA_CONTROLS( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_CONTROLS )
785             #define attrGetARIA_DESCRIBEDBY( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_DESCRIBEDBY )
786             #define attrGetARIA_DISABLED( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_DISABLED )
787             #define attrGetARIA_DROPEFFECT( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_DROPEFFECT )
788             #define attrGetARIA_EXPANDED( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_EXPANDED )
789             #define attrGetARIA_FLOWTO( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_FLOWTO )
790             #define attrGetARIA_GRABBED( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_GRABBED )
791             #define attrGetARIA_HASPOPUP( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_HASPOPUP )
792             #define attrGetARIA_HIDDEN( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_HIDDEN )
793             #define attrGetARIA_INVALID( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_INVALID )
794             #define attrGetARIA_LABEL( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_LABEL )
795             #define attrGetARIA_LABELLEDBY( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_LABELLEDBY )
796             #define attrGetARIA_LEVEL( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_LEVEL )
797             #define attrGetARIA_LIVE( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_LIVE )
798             #define attrGetARIA_MULTILINE( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_MULTILINE )
799             #define attrGetARIA_MULTISELECTABLE( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_MULTISELECTABLE )
800             #define attrGetARIA_ORIENTATION( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_ORIENTATION )
801             #define attrGetARIA_OWNS( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_OWNS )
802             #define attrGetARIA_POSINSET( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_POSINSET )
803             #define attrGetARIA_PRESSED( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_PRESSED )
804             #define attrGetARIA_READONLY( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_READONLY )
805             #define attrGetARIA_RELEVANT( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_RELEVANT )
806             #define attrGetARIA_REQUIRED( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_REQUIRED )
807             #define attrGetARIA_SELECTED( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_SELECTED )
808             #define attrGetARIA_SETSIZE( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_SETSIZE )
809             #define attrGetARIA_SORT( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_SORT )
810             #define attrGetARIA_VALUEMAX( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_VALUEMAX )
811             #define attrGetARIA_VALUEMIN( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_VALUEMIN )
812             #define attrGetARIA_VALUENOW( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_VALUENOW )
813             #define attrGetARIA_VALUETEXT( nod ) TY_(AttrGetById)( nod, TidyAttr_ARIA_VALUETEXT )
814              
815             #endif /* __ATTRS_H__ */
816             #ifndef __CHARSETS_H__
817             #define __CHARSETS_H__
818              
819             /* charsets.h -- character set information and mappings
820              
821             (c) 1998-2021 (W3C) MIT, ERCIM, Keio University
822             See tidy.h for the copyright notice.
823              
824             */
825              
826             TY_PRIVATE unsigned int TY_(GetEncodingIdFromName)(ctmbstr name);
827             TY_PRIVATE unsigned int TY_(GetEncodingIdFromCodePage)(unsigned int cp);
828             TY_PRIVATE unsigned int TY_(GetEncodingCodePageFromName)(ctmbstr name);
829             TY_PRIVATE unsigned int TY_(GetEncodingCodePageFromId)(unsigned int id);
830             TY_PRIVATE ctmbstr TY_(GetEncodingNameFromId)(unsigned int id);
831             TY_PRIVATE ctmbstr TY_(GetEncodingNameFromCodePage)(unsigned int cp);
832              
833             #endif /* __CHARSETS_H__ */
834              
835             #ifndef __CLEAN_H__
836             #define __CLEAN_H__
837              
838             /* clean.h -- clean up misuse of presentation markup
839              
840             (c) 1998-2006 (W3C) MIT, ERCIM, Keio University
841             See tidy.h for the copyright notice.
842              
843             */
844              
845             TY_PRIVATE void TY_(FixNodeLinks)(Node *node);
846              
847             TY_PRIVATE void TY_(FreeStyles)( TidyDocImpl* doc );
848              
849             /* Add class="foo" to node
850             */
851             TY_PRIVATE void TY_(AddStyleAsClass)( TidyDocImpl* doc, Node *node, ctmbstr stylevalue );
852             TY_PRIVATE void TY_(AddStyleProperty)(TidyDocImpl* doc, Node *node, ctmbstr property );
853              
854             TY_PRIVATE void TY_(CleanDocument)( TidyDocImpl* doc );
855              
856             /* simplifies ... ... etc. */
857             TY_PRIVATE void TY_(NestedEmphasis)( TidyDocImpl* doc, Node* node );
858              
859             /* replace i by em and b by strong */
860             TY_PRIVATE void TY_(EmFromI)( TidyDocImpl* doc, Node* node );
861              
862             /*
863             Some people use dir or ul without an li
864             to indent the content. The pattern to
865             look for is a list with a single implicit
866             li. This is recursively replaced by an
867             implicit blockquote.
868             */
869             TY_PRIVATE void TY_(List2BQ)( TidyDocImpl* doc, Node* node );
870              
871             /*
872             Replace implicit blockquote by div with an indent
873             taking care to reduce nested blockquotes to a single
874             div with the indent set to match the nesting depth
875             */
876             TY_PRIVATE void TY_(BQ2Div)( TidyDocImpl* doc, Node* node );
877              
878              
879             TY_PRIVATE void TY_(DropSections)( TidyDocImpl* doc, Node* node );
880              
881              
882             /*
883             This is a major clean up to strip out all the extra stuff you get
884             when you save as web page from Word 2000. It doesn't yet know what
885             to do with VML tags, but these will appear as errors unless you
886             declare them as new tags, such as o:p which needs to be declared
887             as inline.
888             */
889             TY_PRIVATE void TY_(CleanWord2000)( TidyDocImpl* doc, Node *node);
890              
891             TY_PRIVATE Bool TY_(IsWord2000)( TidyDocImpl* doc );
892              
893             /* where appropriate move object elements from head to body */
894             TY_PRIVATE void TY_(BumpObject)( TidyDocImpl* doc, Node *html );
895              
896             TY_PRIVATE Bool TY_(TidyMetaCharset)(TidyDocImpl* doc);
897              
898             TY_PRIVATE void TY_(DropComments)(TidyDocImpl* doc, Node* node);
899             TY_PRIVATE void TY_(DropFontElements)(TidyDocImpl* doc, Node* node, Node **pnode);
900             TY_PRIVATE void TY_(WbrToSpace)(TidyDocImpl* doc, Node* node);
901             TY_PRIVATE void TY_(DowngradeTypography)(TidyDocImpl* doc, Node* node);
902             TY_PRIVATE void TY_(ReplacePreformattedSpaces)(TidyDocImpl* doc, Node* node);
903             TY_PRIVATE void TY_(NormalizeSpaces)(Lexer *lexer, Node *node);
904             TY_PRIVATE void TY_(ConvertCDATANodes)(TidyDocImpl* doc, Node* node);
905              
906             TY_PRIVATE void TY_(FixAnchors)(TidyDocImpl* doc, Node *node, Bool wantName, Bool wantId);
907             TY_PRIVATE void TY_(FixXhtmlNamespace)(TidyDocImpl* doc, Bool wantXmlns);
908             TY_PRIVATE void TY_(FixLanguageInformation)(TidyDocImpl* doc, Node* node, Bool wantXmlLang, Bool wantLang);
909              
910             /* Issue #567 - move style elements from body to head */
911             TY_PRIVATE void TY_(CleanStyle)(TidyDocImpl* doc, Node *html);
912             /* Issue #692 - discard multiple titles */
913             TY_PRIVATE void TY_(CleanHead)(TidyDocImpl* doc);
914              
915             #endif /* __CLEAN_H__ */
916             #ifndef __FILEIO_H__
917             #define __FILEIO_H__
918              
919             /** @file fileio.h - does standard C I/O
920              
921             Implementation of a FILE* based TidyInputSource and
922             TidyOutputSink.
923              
924             (c) 1998-2007 (W3C) MIT, ERCIM, Keio University
925             See tidy.h for the copyright notice.
926              
927             */
928              
929             /* #include "tidybuffio.h" */
930             #ifdef __cplusplus
931             extern "C" {
932             #endif
933              
934             /** Allocate and initialize file input source */
935             TY_PRIVATE int TY_(initFileSource)( TidyAllocator *allocator, TidyInputSource* source, FILE* fp );
936              
937             /** Free file input source */
938             TY_PRIVATE void TY_(freeFileSource)( TidyInputSource* source, Bool closeIt );
939              
940             #if SUPPORT_POSIX_MAPPED_FILES
941             /** Allocate and initialize file input source using Standard C I/O */
942             TY_PRIVATE int TY_(initStdIOFileSource)( TidyAllocator *allocator, TidyInputSource* source, FILE* fp );
943              
944             /** Free file input source using Standard C I/O */
945             TY_PRIVATE void TY_(freeStdIOFileSource)( TidyInputSource* source, Bool closeIt );
946             #endif
947              
948             /** Initialize file output sink */
949             TY_PRIVATE void TY_(initFileSink)( TidyOutputSink* sink, FILE* fp );
950              
951             /* Needed for internal declarations */
952             TY_PRIVATE void TIDY_CALL TY_(filesink_putByte)( void* sinkData, byte bv );
953              
954             #ifdef __cplusplus
955             }
956             #endif
957             #endif /* __FILEIO_H__ */
958             #ifndef __STREAMIO_H__
959             #define __STREAMIO_H__
960              
961             /* streamio.h -- handles character stream I/O
962              
963             (c) 1998-2007 (W3C) MIT, ERCIM, Keio University
964             See tidy.h for the copyright notice.
965              
966             Wrapper around Tidy input source and output sink
967             that calls appropriate interfaces, and applies
968             necessary char encoding transformations: to/from
969             ISO-10646 and/or UTF-8.
970              
971             */
972              
973             /* #include "forward.h" */
974             /* #include "tidybuffio.h" */
975             /* #include "fileio.h" */
976              
977             #ifdef __cplusplus
978             extern "C"
979             {
980             #endif
981             typedef enum
982             {
983             FileIO,
984             BufferIO,
985             UserIO
986             } IOType;
987              
988             /* states for ISO 2022
989              
990             A document in ISO-2022 based encoding uses some ESC sequences called
991             "designator" to switch character sets. The designators defined and
992             used in ISO-2022-JP are:
993              
994             "ESC" + "(" + ? for ISO646 variants
995              
996             "ESC" + "$" + ? and
997             "ESC" + "$" + "(" + ? for multibyte character sets
998             */
999             typedef enum
1000             {
1001             FSM_ASCII,
1002             FSM_ESC,
1003             FSM_ESCD,
1004             FSM_ESCDP,
1005             FSM_ESCP,
1006             FSM_NONASCII
1007             } ISO2022State;
1008              
1009             /************************
1010             ** Source
1011             ************************/
1012              
1013             enum
1014             {
1015             CHARBUF_SIZE=5,
1016             LASTPOS_SIZE=64
1017             };
1018              
1019             /* non-raw input is cleaned up*/
1020             struct _StreamIn
1021             {
1022             ISO2022State state; /* FSM for ISO2022 */
1023             Bool pushed;
1024             TidyAllocator *allocator;
1025             tchar* charbuf;
1026             unsigned int bufpos;
1027             unsigned int bufsize;
1028             int tabs;
1029             int lastcols[LASTPOS_SIZE];
1030             unsigned short curlastpos; /* current last position in lastcols */
1031             unsigned short firstlastpos; /* first valid last position in lastcols */
1032             int curcol;
1033             int curline;
1034             int encoding;
1035             IOType iotype;
1036              
1037             TidyInputSource source;
1038              
1039             /* Pointer back to document for error reporting */
1040             TidyDocImpl* doc;
1041             };
1042              
1043             TY_PRIVATE StreamIn* TY_(initStreamIn)( TidyDocImpl* doc, int encoding );
1044             TY_PRIVATE void TY_(freeStreamIn)(StreamIn* in);
1045              
1046             TY_PRIVATE StreamIn* TY_(FileInput)( TidyDocImpl* doc, FILE* fp, int encoding );
1047             TY_PRIVATE StreamIn* TY_(BufferInput)( TidyDocImpl* doc, TidyBuffer* content, int encoding );
1048             TY_PRIVATE StreamIn* TY_(UserInput)( TidyDocImpl* doc, TidyInputSource* source, int encoding );
1049              
1050             TY_PRIVATE int TY_(ReadBOMEncoding)(StreamIn *in);
1051             TY_PRIVATE unsigned int TY_(ReadChar)( StreamIn* in );
1052             TY_PRIVATE void TY_(UngetChar)( unsigned int c, StreamIn* in );
1053             TY_PRIVATE Bool TY_(IsEOF)( StreamIn* in );
1054              
1055              
1056             /************************
1057             ** Sink
1058             ************************/
1059              
1060             struct _StreamOut
1061             {
1062             int encoding;
1063             ISO2022State state; /* for ISO 2022 */
1064             unsigned int nl;
1065             IOType iotype;
1066             TidyOutputSink sink;
1067             };
1068              
1069             TY_PRIVATE StreamOut* TY_(FileOutput)( TidyDocImpl *doc, FILE* fp, int encoding, unsigned int newln );
1070             TY_PRIVATE StreamOut* TY_(BufferOutput)( TidyDocImpl *doc, TidyBuffer* buf, int encoding, unsigned int newln );
1071             TY_PRIVATE StreamOut* TY_(UserOutput)( TidyDocImpl *doc, TidyOutputSink* sink, int encoding, unsigned int newln );
1072              
1073             TY_PRIVATE StreamOut* TY_(StdErrOutput)(void);
1074             /* StreamOut* StdOutOutput(void); */
1075             TY_PRIVATE void TY_(ReleaseStreamOut)( TidyDocImpl *doc, StreamOut* out );
1076              
1077             TY_PRIVATE void TY_(WriteChar)( unsigned int c, StreamOut* out );
1078             TY_PRIVATE void TY_(outBOM)( StreamOut *out );
1079              
1080             TY_PRIVATE ctmbstr TY_(GetEncodingNameFromTidyId)(unsigned int id);
1081             TY_PRIVATE ctmbstr TY_(GetEncodingOptNameFromTidyId)(unsigned int id);
1082             TY_PRIVATE int TY_(GetCharEncodingFromOptName)(ctmbstr charenc);
1083              
1084             /************************
1085             ** Misc
1086             ************************/
1087              
1088             /* character encodings
1089             */
1090             #define RAW 0
1091             #define ASCII 1
1092             #define LATIN0 2
1093             #define LATIN1 3
1094             #define UTF8 4
1095             #define ISO2022 5
1096             #define MACROMAN 6
1097             #define WIN1252 7
1098             #define IBM858 8
1099             #define UTF16LE 9
1100             #define UTF16BE 10
1101             #define UTF16 11
1102             #define BIG5 12
1103             #define SHIFTJIS 13
1104              
1105             /* Function for conversion from Windows-1252 to Unicode */
1106             TY_PRIVATE unsigned int TY_(DecodeWin1252)(unsigned int c);
1107              
1108             /* Function to convert from MacRoman to Unicode */
1109             TY_PRIVATE unsigned int TY_(DecodeMacRoman)(unsigned int c);
1110              
1111             #ifdef __cplusplus
1112             }
1113             #endif
1114              
1115              
1116             /* Use numeric constants as opposed to escape chars (\r, \n)
1117             ** to avoid conflict Mac compilers that may re-define these.
1118             */
1119             /* #define '\r' 0xD */
1120             /* #define '\n' 0xA */
1121              
1122             #if defined(MAC_OS_CLASSIC)
1123             # define DEFAULT_NL_CONFIG TidyCR
1124             #elif defined(_WIN32) || defined(OS2_OS)
1125             # define DEFAULT_NL_CONFIG TidyCRLF
1126             #else
1127             # define DEFAULT_NL_CONFIG TidyLF
1128             #endif
1129              
1130              
1131             #endif /* __STREAMIO_H__ */
1132             #ifndef __CONFIG_H__
1133             #define __CONFIG_H__
1134              
1135             /**************************************************************************//**
1136             * @file
1137             * Read configuration files and manage configuration properties.
1138             *
1139             * Config files associate a property name with a value.
1140             *
1141             * // comments can start at the beginning of a line
1142             * # comments can start at the beginning of a line
1143             * name: short values fit onto one line
1144             * name: a really long value that
1145             * continues on the next line
1146             *
1147             * Property names are case insensitive and should be less than 60 characters
1148             * in length, and must start at the begining of the line, as whitespace at
1149             * the start of a line signifies a line continuation.
1150             *
1151             * @author HTACG, et al (consult git log)
1152             *
1153             * @copyright
1154             * Copyright (c) 1998-2017 World Wide Web Consortium (Massachusetts
1155             * Institute of Technology, European Research Consortium for Informatics
1156             * and Mathematics, Keio University) and HTACG.
1157             * @par
1158             * All Rights Reserved.
1159             * @par
1160             * See `tidy.h` for the complete license.
1161             *
1162             * @date Additional updates: consult git log
1163             *
1164             ******************************************************************************/
1165              
1166             /* #include "forward.h" */
1167             /* #include "tidy.h" */
1168             /* #include "streamio.h" */
1169              
1170             /** @addtogroup internal_api */
1171             /** @{ */
1172              
1173              
1174             /***************************************************************************//**
1175             ** @defgroup configuration_options Configuration Options
1176             **
1177             ** This module organizes all of Tidy's configuration options, including
1178             ** picklist management, option setting and retrieval, option file utilities,
1179             ** and so on.
1180             **
1181             ** @{
1182             ******************************************************************************/
1183              
1184              
1185             /** Determines the maximum number of items in an option's picklist. PickLists
1186             ** may have up to 16 items. For some reason, this limit has been hard-coded
1187             ** into Tidy for some time. Feel free to increase this as needed.
1188             */
1189             #define TIDY_PL_SIZE 16
1190              
1191              
1192             /** Structs of this type contain information needed in order to present
1193             ** picklists, relate picklist entries to public enum values, and parse
1194             ** strings that are accepted in order to assign the value.
1195             */
1196             typedef struct PickListItem {
1197             ctmbstr label; /**< PickList label for this item. */
1198             const int value; /**< The option value represented by this label. */
1199             ctmbstr inputs[10]; /**< String values that can select this value. */
1200             } PickListItem;
1201              
1202              
1203             /** An array of PickListItems, fixed in size for in-code declarations.
1204             ** Arrays must be populated in 0 to 10 order, as the option value is assigned
1205             ** based on this index and *not* on the structures' value field. It remains
1206             ** a best practice, however, to assign a public enum value with the proper
1207             ** index value.
1208             */
1209             typedef const PickListItem PickListItems[TIDY_PL_SIZE];
1210              
1211              
1212             struct _tidy_option; /* forward */
1213              
1214             /** The TidyOptionImpl type implements the `_tidy_option` structure.
1215             */
1216             typedef struct _tidy_option TidyOptionImpl;
1217              
1218              
1219             /** This typedef describes a function that is used for parsing the input
1220             ** given for a particular Tidy option.
1221             */
1222             typedef Bool (ParseProperty)( TidyDocImpl* doc, const TidyOptionImpl* opt );
1223              
1224              
1225             /** This structure defines the internal representation of a Tidy option.
1226             */
1227             struct _tidy_option
1228             {
1229             TidyOptionId id; /**< The unique identifier for this option. */
1230             TidyConfigCategory category; /**< The category of the option. */
1231             ctmbstr name; /**< The name of the option. */
1232             TidyOptionType type; /**< The date type for the option. */
1233             unsigned int dflt; /**< Default value for TidyInteger and TidyBoolean */
1234             ParseProperty* parser; /**< Function to parse input; read-only if NULL. */
1235             PickListItems* pickList; /**< The picklist of possible values for this option. */
1236             ctmbstr pdflt; /**< Default value for TidyString. */
1237             };
1238              
1239              
1240             /** Stored option values can be one of two internal types.
1241             */
1242             typedef union
1243             {
1244             unsigned int v; /**< Value for TidyInteger and TidyBoolean */
1245             char *p; /**< Value for TidyString */
1246             } TidyOptionValue;
1247              
1248              
1249             /** This type is used to define a structure for keeping track of the values
1250             ** for each option.
1251             */
1252             typedef struct _tidy_config
1253             {
1254             TidyOptionValue value[ N_TIDY_OPTIONS + 1 ]; /**< Current config values. */
1255             TidyOptionValue snapshot[ N_TIDY_OPTIONS + 1 ]; /**< Snapshot of values to be restored later. */
1256             unsigned int defined_tags; /**< Tracks user-defined tags. */
1257             unsigned int c; /**< Current char in input stream for reading options. */
1258             StreamIn* cfgIn; /**< Current input source for reading options.*/
1259             } TidyConfigImpl;
1260              
1261              
1262             /** Used to build a table of documentation cross-references.
1263             */
1264             typedef struct {
1265             TidyOptionId opt; /**< Identifier. */
1266             TidyOptionId const *links; /**< Cross references. Last element must be 'TidyUnknownOption'. */
1267             } TidyOptionDoc;
1268              
1269              
1270             /** Given an option name, return an instance of an option.
1271             ** @param optnam The option name to retrieve.
1272             ** @returns The instance of the requested option.
1273             */
1274             TY_PRIVATE const TidyOptionImpl* TY_(lookupOption)( ctmbstr optnam );
1275              
1276              
1277             /** Given an option ID, return an instance of an option.
1278             ** @param optId The option ID to retrieve.
1279             ** @returns The instance of the requested option.
1280             */
1281             TY_PRIVATE const TidyOptionImpl* TY_(getOption)( TidyOptionId optId );
1282              
1283             /** Given an option ID, indicates whether or not the option is a list.
1284             ** @param optId The option ID to check.
1285             ** @returns Returns yes if the option value is a list.
1286             */
1287             TY_PRIVATE const Bool TY_(getOptionIsList)( TidyOptionId optId );
1288              
1289             /** Initiates an iterator to cycle through all of the available options.
1290             ** @param doc The Tidy document to get options.
1291             ** @returns An iterator token to be used with TY_(getNextOption)().
1292             */
1293             TY_PRIVATE TidyIterator TY_(getOptionList)( TidyDocImpl* doc );
1294              
1295              
1296             /** Gets the next option provided by the iterator.
1297             ** @param doc The Tidy document to get options.
1298             ** @param iter The iterator token initialized by TY_(getOptionList)().
1299             ** @returns The instance of the next option.
1300             */
1301             TY_PRIVATE const TidyOptionImpl* TY_(getNextOption)( TidyDocImpl* doc, TidyIterator* iter );
1302              
1303              
1304             /** Initiates an iterator to cycle through all of the available picklist
1305             ** possibilities.
1306             ** @param option An instance of an option for which to iterate a picklist.
1307             ** @returns An interator token to be used with TY_(getNextOptionPick)().
1308             */
1309             TY_PRIVATE TidyIterator TY_(getOptionPickList)( const TidyOptionImpl* option );
1310              
1311              
1312             /** Gets the next picklist possibility provided by the iterator.
1313             ** @param option The instance of the option for which to iterate a picklist.
1314             ** @param iter The iterator token initialized by TY_(getOptionPickList)().
1315             ** @returns The next picklist entry.
1316             */
1317             TY_PRIVATE ctmbstr TY_(getNextOptionPick)( const TidyOptionImpl* option, TidyIterator* iter );
1318              
1319              
1320             #if SUPPORT_CONSOLE_APP
1321             /** Returns the cross-reference information structure for optID, which is
1322             ** used for generating documentation.
1323             ** @param optId The option ID to get cross-reference information for.
1324             ** @returns Cross reference information.
1325             */
1326             TY_PRIVATE const TidyOptionDoc* TY_(OptGetDocDesc)( TidyOptionId optId );
1327             #endif /* SUPPORT_CONSOLE_APP */
1328              
1329              
1330             /** Initialize the configuration for the given Tidy document.
1331             ** @param doc The Tidy document.
1332             */
1333             TY_PRIVATE void TY_(InitConfig)( TidyDocImpl* doc );
1334              
1335              
1336             /** Frees the configuration memory for the given Tidy document.
1337             ** @param doc The Tidy document.
1338             */
1339             TY_PRIVATE void TY_(FreeConfig)( TidyDocImpl* doc );
1340              
1341              
1342             /** Gets the picklist label for a given value.
1343             ** @param optId the option id having a picklist to check.
1344             ** @param pick the picklist item to retrieve.
1345             ** @returns The label for the pick.
1346             */
1347             TY_PRIVATE ctmbstr TY_(GetPickListLabelForPick)( TidyOptionId optId, unsigned int pick );
1348              
1349              
1350             /** Sets the integer value for the given option Id.
1351             ** @param doc The Tidy document.
1352             ** @param optId The option ID to set.
1353             ** @param val The value to set.
1354             ** @returns Success or failure.
1355             */
1356             TY_PRIVATE Bool TY_(SetOptionInt)( TidyDocImpl* doc, TidyOptionId optId, unsigned int val );
1357              
1358              
1359             /** Sets the bool value for the given option Id.
1360             ** @param doc The Tidy document.
1361             ** @param optId The option ID to set.
1362             ** @param val The value to set.
1363             ** @returns Success or failure.
1364             */
1365             TY_PRIVATE Bool TY_(SetOptionBool)( TidyDocImpl* doc, TidyOptionId optId, Bool val );
1366              
1367              
1368             /** Resets the given option to its default value.
1369             ** @param doc The Tidy document.
1370             ** @param optId The option ID to set.
1371             ** @returns Success or failure.
1372             */
1373             TY_PRIVATE Bool TY_(ResetOptionToDefault)( TidyDocImpl* doc, TidyOptionId optId );
1374              
1375              
1376             /** Resets all options in the document to their default values.
1377             ** @param doc The Tidy document.
1378             */
1379             TY_PRIVATE void TY_(ResetConfigToDefault)( TidyDocImpl* doc );
1380              
1381              
1382             /** Stores a snapshot of all of the configuration values that can be
1383             ** restored later.
1384             ** @param doc The Tidy document.
1385             */
1386             TY_PRIVATE void TY_(TakeConfigSnapshot)( TidyDocImpl* doc );
1387              
1388              
1389             /** Restores all of the configuration values to their snapshotted values.
1390             ** @param doc The Tidy document.
1391             */
1392             TY_PRIVATE void TY_(ResetConfigToSnapshot)( TidyDocImpl* doc );
1393              
1394              
1395             /** Copies the configuration from one document to another.
1396             ** @param docTo The destination Tidy document.
1397             ** @param docFrom The source Tidy document.
1398             */
1399             TY_PRIVATE void TY_(CopyConfig)( TidyDocImpl* docTo, TidyDocImpl* docFrom );
1400              
1401              
1402             /** Attempts to parse the given config file into the document.
1403             ** @param doc The Tidy document.
1404             ** @param cfgfil The file to load.
1405             ** @returns a file system error code.
1406             */
1407             TY_PRIVATE int TY_(ParseConfigFile)( TidyDocImpl* doc, ctmbstr cfgfil );
1408              
1409              
1410             /** Attempts to parse the given config file into the document, using
1411             ** the provided encoding.
1412             ** @param doc The Tidy document.
1413             ** @param cfgfil The file to load.
1414             ** @param charenc The name of the encoding to use for reading the file.
1415             ** @returns a file system error code.
1416             */
1417             TY_PRIVATE int TY_(ParseConfigFileEnc)( TidyDocImpl* doc,
1418             ctmbstr cfgfil, ctmbstr charenc );
1419              
1420              
1421             /** Saves the current configuration for options not having default values
1422             ** into the specified file.
1423             ** @param doc The Tidy document.
1424             ** @param cfgfil The file to save.
1425             ** @returns a file system error code.
1426             */
1427             TY_PRIVATE int TY_(SaveConfigFile)( TidyDocImpl* doc, ctmbstr cfgfil );
1428              
1429              
1430             /** Writes the current configuration for options not having default values
1431             ** into the specified sink.
1432             ** @param doc The Tidy document.
1433             ** @param sink The sink to save into.
1434             ** @returns a file system error code.
1435             */
1436             TY_PRIVATE int TY_(SaveConfigSink)( TidyDocImpl* doc, TidyOutputSink* sink );
1437              
1438              
1439             /** Attempts to parse the provided value for the given option name. Returns
1440             ** false if unknown option, missing parameter, or the option doesn't
1441             ** use the parameter.
1442             ** @param doc The Tidy document.
1443             ** @param optnam The name of the option to be set.
1444             ** @param optVal The string value to attempt to parse.
1445             ** @returns Success or failure.
1446             */
1447             TY_PRIVATE Bool TY_(ParseConfigOption)( TidyDocImpl* doc, ctmbstr optnam, ctmbstr optVal );
1448              
1449              
1450             /** Attempts to parse the provided value for the given option id. Returns
1451             ** false if unknown option, missing parameter, or the option doesn't
1452             ** use the parameter.
1453             ** @param doc The Tidy document.
1454             ** @param optId The ID of the option to be set.
1455             ** @param optVal The string value to attempt to parse.
1456             ** @returns Success or failure.
1457             */
1458             TY_PRIVATE Bool TY_(ParseConfigValue)( TidyDocImpl* doc, TidyOptionId optId, ctmbstr optVal );
1459              
1460              
1461             /** Ensure that char encodings are self consistent.
1462             ** @param doc The Tidy document to adjust.
1463             ** @param encoding The encoding being applied.
1464             ** @returns A bool indicating success or failure.
1465             */
1466             TY_PRIVATE Bool TY_(AdjustCharEncoding)( TidyDocImpl* doc, int encoding );
1467              
1468              
1469             /** Ensure that the configuration options are self consistent.
1470             ** THIS PROCESS IS DESTRUCTIVE TO THE USER STATE. It examines
1471             ** certain user-specified options and changes other options
1472             ** as a result. This means that documented API functions such
1473             ** as tidyOptGetValue() won't return the user-set values after
1474             ** this is used. As a result, *don't* just use this function
1475             ** at every opportunity, but only where needed, which is ONLY
1476             ** prior to parsing a stream, and again prior to saving a
1477             ** stream (because we reset after parsing.)
1478             ** @param doc The Tidy document to adjust.
1479             */
1480             void TY_(AdjustConfig)( TidyDocImpl* doc );
1481              
1482              
1483             /** Indicates whether or not the current configuration is completely default.
1484             ** @param doc The Tidy document.
1485             ** @returns The result.
1486             */
1487             TY_PRIVATE Bool TY_(ConfigDiffThanDefault)( TidyDocImpl* doc );
1488              
1489              
1490             /** Indicates whether or not the current configuration is different from the
1491             ** stored snapshot.
1492             ** @param doc The Tidy document.
1493             ** @returns The result.
1494             */
1495             TY_PRIVATE Bool TY_(ConfigDiffThanSnapshot)( TidyDocImpl* doc );
1496              
1497              
1498             /** Returns the character encoding ID for the given character encoding
1499             ** string.
1500             ** @param doc The Tidy document.
1501             ** @param charenc The name of the character encoding.
1502             ** @returns The Id of the character encoding.
1503             */
1504             TY_PRIVATE int TY_(CharEncodingId)( TidyDocImpl* doc, ctmbstr charenc );
1505              
1506              
1507             /** Returns the full name of the encoding for the given ID.
1508             ** @param encoding The Id of the encoding.
1509             ** @returns The name of the character encoding.
1510             */
1511             TY_PRIVATE ctmbstr TY_(CharEncodingName)( int encoding );
1512              
1513              
1514             /** Returns the Tidy command line option name of the encoding for the given ID.
1515             ** @param encoding The Id of the encoding.
1516             ** @returns The Tidy command line option representing the encoding.
1517             */
1518             TY_PRIVATE ctmbstr TY_(CharEncodingOptName)( int encoding );
1519              
1520              
1521             /** Coordinates Config update and list data.
1522             ** @param doc The Tidy document.
1523             ** @param opt The option the list item is intended for.
1524             ** @param name The name of the new list item.
1525             */
1526             TY_PRIVATE void TY_(DeclareListItem)( TidyDocImpl* doc, const TidyOptionImpl* opt, ctmbstr name );
1527              
1528             #ifdef _DEBUG
1529              
1530             /* Debug lookup functions will be type-safe and assert option type match */
1531             TY_PRIVATE unsigned int TY_(_cfgGet)( TidyDocImpl* doc, TidyOptionId optId );
1532             TY_PRIVATE Bool TY_(_cfgGetBool)( TidyDocImpl* doc, TidyOptionId optId );
1533             TY_PRIVATE TidyTriState TY_(_cfgGetAutoBool)( TidyDocImpl* doc, TidyOptionId optId );
1534             TY_PRIVATE ctmbstr TY_(_cfgGetString)( TidyDocImpl* doc, TidyOptionId optId );
1535              
1536             #define cfg(doc, id) TY_(_cfgGet)( (doc), (id) )
1537             #define cfgBool(doc, id) TY_(_cfgGetBool)( (doc), (id) )
1538             #define cfgAutoBool(doc, id) TY_(_cfgGetAutoBool)( (doc), (id) )
1539             #define cfgStr(doc, id) TY_(_cfgGetString)( (doc), (id) )
1540              
1541             #else
1542              
1543             /* Release build macros for speed */
1544              
1545             /** Access the raw, non-string unsigned int value of the given option ID. */
1546             #define cfg(doc, id) ((doc)->config.value[ (id) ].v)
1547              
1548             /** Access the Bool value of the given option ID. */
1549             #define cfgBool(doc, id) ((Bool) cfg(doc, id))
1550              
1551             /** Access the TidyTriState value of the given option ID. */
1552             #define cfgAutoBool(doc, id) ((TidyTriState) cfg(doc, id))
1553              
1554             /** Access the string value of the given option ID. */
1555             #define cfgStr(doc, id) ((ctmbstr) (doc)->config.value[ (id) ].p)
1556              
1557             #endif /* _DEBUG */
1558              
1559              
1560             /** @} configuration_options group */
1561             /** @} internal_api addtogroup */
1562              
1563              
1564             #endif /* __CONFIG_H__ */
1565             #ifndef __ENTITIES_H__
1566             #define __ENTITIES_H__
1567              
1568             /* entities.h -- recognize character entities
1569              
1570             (c) 1998-2006 (W3C) MIT, ERCIM, Keio University
1571             See tidy.h for the copyright notice.
1572              
1573             */
1574              
1575             /* #include "forward.h" */
1576              
1577             /* entity starting with "&" returns zero on error */
1578             /* unsigned int EntityCode( ctmbstr name, unsigned int versions ); */
1579             TY_PRIVATE ctmbstr TY_(EntityName)( unsigned int charCode, unsigned int versions );
1580             TY_PRIVATE Bool TY_(EntityInfo)( ctmbstr name, Bool isXml, unsigned int* code, unsigned int* versions );
1581              
1582             #endif /* __ENTITIES_H__ */
1583             #ifndef __GDOC_H__
1584             #define __GDOC_H__
1585              
1586             /* gdoc.h -- clean up html exported by Google Docs
1587              
1588             (c) 2012 (W3C) MIT, ERCIM, Keio University
1589             See tidy.h for the copyright notice.
1590              
1591             - strip the script element, as the style sheet is a mess
1592             - strip class attributes
1593             - strip span elements, leaving their content in place
1594             - replace by id on parent element
1595             - strip empty

elements

1596              
1597             */
1598              
1599             TY_PRIVATE void TY_(CleanGoogleDocument)( TidyDocImpl* doc );
1600              
1601             #endif /* __GDOC_H__ */
1602             #ifndef language_h
1603             #define language_h
1604              
1605             /*********************************************************************
1606             * Localization support for HTML Tidy.
1607             *
1608             * This header provides the public (within libtidy) interface to
1609             * basic localization support. To add your own localization, create
1610             * a new `language_xx.h` file and add it to the struct in
1611             * `language.c`.
1612             *
1613             * (c) 2015 HTACG
1614             * See `tidy.h` for the copyright notice.
1615             *********************************************************************/
1616              
1617             /* #include "forward.h" */
1618              
1619              
1620             /** @name Exposed Data Structures */
1621             /** @{ */
1622              
1623              
1624             /**
1625             * These enumerations are used within instances of `languageDefinition`
1626             * structures to provide additional metadata, and are localizable
1627             * therein.
1628             */
1629             typedef enum {
1630            
1631             /* Specifies the language code for a particular language. */
1632             TIDY_LANGUAGE = 400,
1633            
1634             /* Marker for the last key in the structure. */
1635             TIDY_MESSAGE_TYPE_LAST
1636            
1637             } tidyLanguage;
1638              
1639              
1640             /**
1641             * Describes a record for a localization string.
1642             * - key must correspond with one of Tidy's enums (see `tidyMessageTypes`
1643             * below)
1644             * - pluralForm corresponds to gettext plural forms case (not singularity).
1645             * Most entries should be case 0, representing the single case.:
1646             * https://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html
1647             */
1648             typedef struct languageDictionaryEntry {
1649             unsigned int key;
1650             unsigned int pluralForm;
1651             ctmbstr value;
1652             } languageDictionaryEntry;
1653              
1654              
1655             /**
1656             * For now we'll just use an array to hold all of the dictionary
1657             * entries. In the future we can convert this to a hash structure
1658             * which will make looking up strings faster.
1659             */
1660             typedef languageDictionaryEntry const languageDictionary[600];
1661              
1662              
1663             /**
1664             * Finally, a complete language definition. The item `pluralForm`
1665             * is a function pointer that will provide the correct plural
1666             * form given the value `n`. The actual function is present in
1667             * each language header and is language dependent.
1668             */
1669             typedef struct languageDefinition {
1670             unsigned int (*whichPluralForm)(unsigned int n);
1671             languageDictionary messages;
1672             } languageDefinition;
1673              
1674              
1675             /**
1676             * The function getNextWindowsLanguage() returns pointers to this type;
1677             * it gives LibTidy implementors the ability to determine how Windows
1678             * locale names are mapped to POSIX language codes.
1679             */
1680             typedef struct tidyLocaleMapItemImpl {
1681             ctmbstr winName;
1682             ctmbstr POSIXName;
1683             } tidyLocaleMapItemImpl;
1684              
1685              
1686             /** @} */
1687             /** @name Localization Related Functions */
1688             /** @{ */
1689              
1690              
1691             /**
1692             ** Determines the current locale without affecting the C locale.
1693             ** Tidy has always used the default C locale, and at this point
1694             ** in its development we're not going to tamper with that.
1695             ** @param result The buffer to use to return the string.
1696             ** Returns NULL on failure.
1697             ** @return The same buffer for convenience.
1698             */
1699             TY_PRIVATE tmbstr TY_(tidySystemLocale)(tmbstr result);
1700              
1701             /**
1702             * Tells Tidy to use a different language for output.
1703             * @param languageCode A Windows or POSIX language code, and must match
1704             * a TIDY_LANGUAGE for an installed language.
1705             * @result Indicates that a setting was applied, but not necessarily the
1706             * specific request, i.e., true indicates a language and/or region
1707             * was applied. If es_mx is requested but not installed, and es is
1708             * installed, then es will be selected and this function will return
1709             * true. However the opposite is not true; if es is requested but
1710             * not present, Tidy will not try to select from the es_XX variants.
1711             */
1712             TY_PRIVATE Bool TY_(tidySetLanguage)( ctmbstr languageCode );
1713              
1714             /**
1715             * Gets the current language used by Tidy.
1716             */
1717             TY_PRIVATE ctmbstr TY_(tidyGetLanguage)(void);
1718              
1719              
1720             /**
1721             * Indicates whether or not the current language was set by a
1722             * LibTidy user or internally by the library. This flag prevents
1723             * subsequently created instances of TidyDocument from changing the
1724             * user's language.
1725             * @returns Returns yes to indicate that the current language was
1726             * specified by an API user.
1727             */
1728             TY_PRIVATE Bool TY_(tidyGetLanguageSetByUser)(void);
1729              
1730              
1731             /**
1732             * Specifies to LibTidy that the user (rather than the library)
1733             * selected the current language. This flag prevents subsequently
1734             * created instances of TidyDocument from changing the user's language.
1735             */
1736             TY_PRIVATE void TY_(tidySetLanguageSetByUser)( void );
1737              
1738              
1739             /**
1740             * Provides a string given `messageType` in the current
1741             * localization for `quantity`.
1742             */
1743             TY_PRIVATE ctmbstr TY_(tidyLocalizedStringN)( unsigned int messageType, unsigned int quantity );
1744              
1745             /**
1746             * Provides a string given `messageType` in the current
1747             * localization for the single case.
1748             */
1749             TY_PRIVATE ctmbstr TY_(tidyLocalizedString)( unsigned int messageType );
1750              
1751              
1752             /** @} */
1753             /** @name Documentation Generation */
1754             /** @{ */
1755              
1756              
1757             /**
1758             * Provides a string given `messageType` in the default
1759             * localization (which is `en`).
1760             */
1761             TY_PRIVATE ctmbstr TY_(tidyDefaultString)( unsigned int messageType );
1762              
1763             /*
1764             * Initializes the TidyIterator to point to the first item
1765             * in Tidy's list of localization string keys. Note that
1766             * these are provided for documentation generation purposes
1767             * and probably aren't useful for LibTidy implementors.
1768             */
1769             TY_PRIVATE TidyIterator TY_(getStringKeyList)(void);
1770              
1771             /*
1772             * Provides the next key value in Tidy's list of localized
1773             * strings. Note that these are provided for documentation
1774             * generation purposes and probably aren't useful to
1775             * libtidy implementors.
1776             */
1777             TY_PRIVATE unsigned int TY_(getNextStringKey)( TidyIterator* iter );
1778              
1779             /**
1780             * Initializes the TidyIterator to point to the first item
1781             * in Tidy's structure of Windows<->POSIX local mapping.
1782             * Items can be retrieved with getNextWindowsLanguage();
1783             */
1784             TY_PRIVATE TidyIterator TY_(getWindowsLanguageList)(void);
1785              
1786             /**
1787             * Returns the next record of type `localeMapItem` in
1788             * Tidy's structure of Windows<->POSIX local mapping.
1789             */
1790             TY_PRIVATE const tidyLocaleMapItemImpl *TY_(getNextWindowsLanguage)( TidyIterator* iter );
1791              
1792             /**
1793             * Given a `tidyLocaleMapItemImpl, return the Windows name.
1794             */
1795             TY_PRIVATE ctmbstr TY_(TidyLangWindowsName)( const tidyLocaleMapItemImpl *item );
1796              
1797             /**
1798             * Given a `tidyLocaleMapItemImpl, return the POSIX name.
1799             */
1800             TY_PRIVATE ctmbstr TY_(TidyLangPosixName)( const tidyLocaleMapItemImpl *item );
1801              
1802             /**
1803             * Initializes the TidyIterator to point to the first item
1804             * in Tidy's list of installed language codes.
1805             * Items can be retrieved with getNextInstalledLanguage();
1806             */
1807             TY_PRIVATE TidyIterator TY_(getInstalledLanguageList)(void);
1808              
1809             /**
1810             * Returns the next installed language.
1811             */
1812             TY_PRIVATE ctmbstr TY_(getNextInstalledLanguage)( TidyIterator* iter );
1813              
1814              
1815             /** @} */
1816              
1817             #endif /* language_h */
1818             #ifndef language_de_h
1819             #define language_de_h
1820             /*
1821             * language_de.h
1822             * Localization support for HTML Tidy.
1823             *
1824             *
1825             * This file is a localization file for HTML Tidy. It will have been machine
1826             * generated or created and/or edited by hand. Both are valid options, but
1827             * please help keep our localization efforts simple to maintain by maintaining
1828             * the structure of this file, and changing the check box below if you make
1829             * changes (so others know the file origin):
1830             *
1831             * [ ] THIS FILE IS MACHINE GENERATED. It is a localization file for the
1832             * language (and maybe region) "de". The source of
1833             * these strings is a gettext PO file in Tidy's source, probably called
1834             * "language_de.po".
1835             *
1836             * [X] THIS FILE WAS HAND MODIFIED. Translators, please feel to edit this file
1837             * directly (and check this box). If you prefer to edit PO files then use
1838             * `poconvert.rb msgunfmt language_de.h` (our own
1839             * conversion tool) to generate a fresh PO from this file first!
1840             *
1841             * (©) 2020-2020 Michael Uplawski
1842             * See tidy.h and access.h for the copyright notice.
1843             *
1844             * Template Created by Jim Derry on 01/14/2016.
1845             *
1846             */
1847             #ifdef _MSC_VER
1848             #pragma execution_character_set("utf-8")
1849             #endif
1850              
1851              
1852             /**
1853             * This language-specific function returns the correct pluralForm
1854             * to use given n items, and is used as a member of each language
1855             * definition.
1856             */
1857 0           static unsigned int whichPluralForm_de(unsigned int n) {
1858             /* Plural-Forms: nplurals=2; */
1859 0           return (n > 1);
1860             }
1861              
1862              
1863             /**
1864             * This structure specifies all of the strings needed by Tidy for a
1865             * single language. Static definition in a header file makes it
1866             * easy to include and exclude languages without tinkering with
1867             * the build system.
1868             *
1869             * This file serves as the master template for generating `gettext`
1870             * PO and POT files using our `potool.rb` script. Certain comments
1871             * entered below will be included in the PO/POT files as developer
1872             * comments. To enable this, use only standard C-style comments that
1873             * begin immediately after the opening brace without whitespace.
1874             */
1875              
1876             static languageDefinition language_de = { whichPluralForm_de, {
1877             /***************************************
1878             ** This MUST be present and first.
1879             ** Specify the code for this language.
1880             ***************************************/
1881             {/* Specify the ll or ll_cc language code here. */
1882             TIDY_LANGUAGE, 0, "de"
1883             },
1884              
1885             /*********************************************************************
1886             ** Options Documentation
1887             ** As of 2016-January these descriptions are used uniquely by the
1888             ** console application but are made available for LibTidy users as
1889             ** well. Because we generate documentation from these descriptions
1890             ** it's important to use ONLY the following tags:
1891             ** , , ,
,

1892             ** Note that the xslt processor requires
to be self closing!
1893             ** @remark enum source is TidyOptionId
1894             *********************************************************************/
1895             {/* Important notes for translators:
1896             - Use only , , , , and
1897            
.
1898             - Entities, tags, attributes, etc., should be enclosed in .
1899             - Option values should be enclosed in .
1900             - It's very important that
be self-closing!
1901             - The strings "Tidy" and "HTML Tidy" are the program name and must not
1902             be translated. */
1903             TidyAccessibilityCheckLevel, 0,
1904             "Diese Option bestimmt, wenn nötig, das Niveau der Überprüfungen der Barrierefreiheit, "
1905             "die Tidy durchführen soll. "
1906             "
"
1907             "Niveau 0 (Tiidy Classic) entsprichte dem Niveau der Prüfugen von Tidy Classic."
1908             "
"
1909             "Auf dieser Seite finden Sie weitere Informationen zur Prüfung der Barrierefreiheit mit Tidy: "
1910             "Barrierefreiheit mit Tidy. "
1911             },
1912             {/* Important notes for translators:
1913             - Use only , , , , and
1914            
.
1915             - Entities, tags, attributes, etc., should be enclosed in .
1916             - Option values should be enclosed in .
1917             - It's very important that
be self-closing!
1918             - The strings "Tidy" and "HTML Tidy" are the program name and must not
1919             be translated. */
1920             TidyAltText, 0,
1921             "Diese Option bestimmt den Standardwert für das alt= Attribut, "
1922             "das von Tidy eingesetzt wird, wo es in <img> Tags fehlt. "
1923             "
"
1924             "Gehen Sie behutsam damit um; es liegt in Ihrer Verantwortung, Dokumente barrierefrei "
1925             " zu gestalten, für Leute die die Bilder nicht sehen können. "
1926             },
1927             {/* Important notes for translators:
1928             - Use only , , , , and
1929            
.
1930             - Entities, tags, attributes, etc., should be enclosed in .
1931             - Option values should be enclosed in .
1932             - It's very important that
be self-closing!
1933             - The strings "Tidy" and "HTML Tidy" are the program name and must not
1934             be translated. */
1935             TidyAnchorAsName, 0,
1936             "Diese Option steuert das Entfernen oder Hinzufügen des name "
1937             "Attributs in solchen Elementen, die als Verweisanker dienen können. "
1938             "
"
1939             "Wenn hier yes gewählt wird und ein name Attribut "
1940             "bisher nicht vorhanden ist, wird es zusammen mit einem id Attribut "
1941             "ergänzt, soweit die DTD dies erlaubt. "
1942             "
"
1943             "Mit dem Wert no, wird ein vorhandenes name Attribut "
1944             "entfernt, sofern en id existiert oder hinzugefügt wurde."
1945             },
1946             {/* Important notes for translators:
1947             - Use only , , , , and
1948            
.
1949             - Entities, tags, attributes, etc., should be enclosed in .
1950             - Option values should be enclosed in .
1951             - It's very important that
be self-closing!
1952             - The strings "Tidy" and "HTML Tidy" are the program name and must not
1953             be translated. */
1954             TidyAsciiChars, 0,
1955             "Kann verwendet werden, um die Wirkung der Option clean "
1956             "zu modifizieren, wenn der den Wert yes hat."
1957             "
"
1958             "Hier yes zusammen mit clean zu verwenden, "
1959             "hat zur Folge, dass &emdash;, &rdquo; "
1960             "und andere typografische Zeichen in ihre nächstliegenden ASCII-Äquivalente "
1961             "umgewandelt werden. "
1962             },
1963             {/* Important notes for translators:
1964             - Use only , , , , and
1965            
.
1966             - Entities, tags, attributes, etc., should be enclosed in .
1967             - Option values should be enclosed in .
1968             - It's very important that
be self-closing!
1969             - The strings "Tidy" and "HTML Tidy" are the program name and must not
1970             be translated. */
1971             TidyBlockTags, 0,
1972             "Diese Option dient der Einführung neuer Block-Elemente. Der Wert muss "
1973             "eine Liste von leerzeichen- oder komma-separierten Tag-Namen sein."
1974             "
"
1975             "Solange Sie die neuen Tags nicht definieren, wird Tidy keine bereinigte "
1976             "Datei erzeugen, wenn die Eingabe bisher unbekannte Tags enthält. "
1977             "
"
1978             "Beachten Sie, dass Sie das Content Model für Elemente wie "
1979             "<table>, <ul>, "
1980             "<ol> and <dl> nicht ändern können. "
1981             "
"
1982             "Die Option wird im XML Modus ignoriert. "
1983             },
1984             {/* Important notes for translators:
1985             - Use only , , , , and
1986            
.
1987             - Entities, tags, attributes, etc., should be enclosed in .
1988             - Option values should be enclosed in .
1989             - It's very important that
be self-closing!
1990             - The strings "Tidy" and "HTML Tidy" are the program name and must not
1991             be translated. */
1992             TidyBodyOnly, 0,
1993             "Die Option legt fest, ob Tidy nur den Inhalt des body "
1994             "Elements als HTML-Fragment ausgeben soll. "
1995             "
"
1996             "Hier auto einzustellen hat zur Folge, dass die Wirkung nur "
1997             "eintritt, wenn das body Element hergeleitet wurde."
1998             "
"
1999             "Die Methode ist nützlich, um ganze Seiten als Teil einer anderen Seite auszugeben. "
2000             "
"
2001             "Die Option ist wirkungslos, wenn XML Ausgabe gefordert ist. "
2002             },
2003             {/* Important notes for translators:
2004             - Use only , , , , and
2005            
.
2006             - Entities, tags, attributes, etc., should be enclosed in .
2007             - Option values should be enclosed in .
2008             - It's very important that
be self-closing!
2009             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2010             be translated. */
2011             TidyBreakBeforeBR, 0,
2012             "Diese Option legt fest, ob Tidy einen Zeilenumbruch vor jedem "
2013             "<br> Element einfügen soll. "
2014             },
2015             {/* Important notes for translators:
2016             - Use only , , , , and
2017            
.
2018             - Entities, tags, attributes, etc., should be enclosed in .
2019             - Option values should be enclosed in .
2020             - It's very important that
be self-closing!
2021             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2022             be translated. */
2023             TidyCharEncoding, 0,
2024             "Diese Option bestimmt, welche Zeichenkodierung Tidy für Eingaben annehmen soll und, "
2025             "falls zutreffend, dass Tidy für Ausgaben automatisch eine geeignete Zeichenkodierung "
2026             "wählt. Die Kodierungen für Ein- und Ausgaben können sich unterscheiden. "
2027             "
"
2028             "Wird für die Eingabe eine der Kodierungen ascii, latin0, "
2029             "ibm858, mac oder win1252 gefordert, "
2030             "wird die Option output-encoding automatisch auf ascii "
2031             "eingestellt. Sie können dies verhindern, indem Sie den Wert für "
2032             "output-encoding selbst bestimmen. "
2033             "
"
2034             "Bei anders kodierten Eingaben wird die Option output-encoding "
2035             "automatisch auf den identischen Wert eingestellt. "
2036             "
"
2037             "Sie können den voreingestellten Wert für output-encoding "
2038             "überschreiben, indem Sie die Option selbst setzen. "
2039             "
"
2040             "Tidy ist kein Konverter für Zeichenkodierungen. Auch, wenn Latin- und "
2041             "UTF-Kodierungen frei vermischt sein können, ist es mit Tidy nicht möglich, "
2042             "asiatische Kodierungen nach Latin zu konvertieren."
2043             },
2044             {/* Important notes for translators:
2045             - Use only , , , , and
2046            
.
2047             - Entities, tags, attributes, etc., should be enclosed in .
2048             - Option values should be enclosed in .
2049             - It's very important that
be self-closing!
2050             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2051             be translated. */
2052             TidyCoerceEndTags, 0,
2053             "Diese Option bestimmt, ob Tidy ein Start-Tag in ein End-Tag umwandelt, "
2054             "wo es wahrscheinlich erscheint, dass ein solches End-Tag eigentlich "
2055             "gewünscht war; zum Beispiel kann die Eingabe "
2056             "
"
2057             "<span>ein <b>wichtiges<b> Wort</span> "
2058             "
"
2059             "von Tidy umgewandelt werden in "
2060             "
"
2061             "<span>ein <b>wichtiges</b> Wort</span> "
2062             },
2063             {/* Important notes for translators:
2064             - Use only , , , , and
2065            
.
2066             - Entities, tags, attributes, etc., should be enclosed in .
2067             - Option values should be enclosed in .
2068             - It's very important that
be self-closing!
2069             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2070             be translated. */
2071             TidyCSSPrefix, 0,
2072             "Diese Option setzt den Präfix, den Tidy für Style-Regeln verwendet. "
2073             "
"
2074             "Standardmäßig wird c verwendet. "
2075             },
2076             {/* Important notes for translators:
2077             - Use only , , , , and
2078            
.
2079             - Entities, tags, attributes, etc., should be enclosed in .
2080             - Option values should be enclosed in .
2081             - It's very important that
be self-closing!
2082             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2083             be translated. */
2084             TidyDecorateInferredUL, 0,
2085             "Diese Option legt fest, ob Tidy hergeleitete <ul> "
2086             "Elemente mit CSS-Auszeichnungen ausstatten soll, um Einrückungen nach "
2087             "rechts zu verhindern. "
2088             },
2089             {/* Important notes for translators:
2090             - Use only , , , , and
2091            
.
2092             - Entities, tags, attributes, etc., should be enclosed in .
2093             - Option values should be enclosed in .
2094             - It's very important that
be self-closing!
2095             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2096             be translated. */
2097             TidyDoctype, 0,
2098             "Diese Option setzt die DOCTYPE Deklaration, die von Tidy generiert wird. "
2099             "
"
2100             "Wenn hier omit eingestellt ist, enthält die Ausgabe keine "
2101             "DOCTYPE Deklaration. Beachten Sie, dass damit auch numeric-entities "
2102             "auf yes eingestellt wird. "
2103             "
"
2104             "Mit dem Wert html5 wird der DOCTYPE auf "
2105             "<!DOCTYPE html> festgelegt."
2106             "
"
2107             "Wird statt dessen auto (der Standard) verwendet, wird Tidy versuchen, "
2108             "einen aufgrund des Dokumentinhalts vermuteten DOCTYPE zu verwenden. "
2109             "Beachten Sie, dass auf diese Weise der DOCTYPE des aktuellen Dokuments "
2110             "nicht geändert wird. "
2111             "
"
2112             "Der Wert strict veranlasst Tidy, den DOCTYPE auf HTML4 oder "
2113             "XHTML1 strict DTD einzustellen. "
2114             "
"
2115             "Mit dem Wert loose wird der DOCTYPE HTML4 oder "
2116             "XHTML1 loose (transitional) DTD eingestellt. "
2117             "
"
2118             "Alternatif können Sie eine Zeichenkette für den Formal Public Identifier (FPI) "
2119             "angeben."
2120             "
"
2121             "Zum Beispiel: "
2122             "
"
2123             "doctype: \"-//ACME//DTD HTML 3.14159//EN\""
2124             "
"
2125             "Wenn Sie den FPI für ein XHTML Dokument angeben, erzeugt Tidy eine "
2126             "leere Zeichenkette für den System Identifyer. In HTML-Dokumenten "
2127             "fügt Tidy einen System Identifier nur dann ein, wenn er schon vorher "
2128             "vorhanden war, im Hinblick auf die Verarbeitungsmodi einiger Browser. "
2129             "Tidy lässt den DOCTYPE generischer XML-Dokumente unangetastet."
2130             "
"
2131             "Die Option bedingt keinerlei Überprüfung der Dokumentkonformität. "
2132             },
2133             {/* Important notes for translators:
2134             - Use only , , , , and
2135            
.
2136             - Entities, tags, attributes, etc., should be enclosed in .
2137             - Option values should be enclosed in .
2138             - It's very important that
be self-closing!
2139             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2140             be translated. */
2141             TidyDropEmptyElems, 0,
2142             "Diese Option legt fest, ob Tidy leere Elemente verwerfen soll. "
2143             },
2144             {/* Important notes for translators:
2145             - Use only , , , , and
2146            
.
2147             - Entities, tags, attributes, etc., should be enclosed in .
2148             - Option values should be enclosed in .
2149             - It's very important that
be self-closing!
2150             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2151             be translated. */
2152             TidyDropEmptyParas, 0,
2153             "Diese Option legt fest, ob Tidy leere Absätze verwerfen soll. "
2154             },
2155             {/* Important notes for translators:
2156             - Use only , , , , and
2157            
.
2158             - Entities, tags, attributes, etc., should be enclosed in .
2159             - Option values should be enclosed in .
2160             - It's very important that
be self-closing!
2161             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2162             be translated. */
2163             TidyDropPropAttrs, 0,
2164             "Mit dieser Option wird bestimmt, ob Tidy proprietäre Attribute "
2165             "entfernen soll, wie Microsoft data binding Attribute. Außerdem "
2166             "werden solche Attribute, die in der ausgegebenen Version des HTML-"
2167             "Codes nicht erlaubt sind, verworfen, wenn gleichzeitig strict-tags-attributes "
2168             "gesetzt wurde. "
2169             },
2170             {/* Important notes for translators:
2171             - Use only , , , , and
2172            
.
2173             - Entities, tags, attributes, etc., should be enclosed in .
2174             - Option values should be enclosed in .
2175             - It's very important that
be self-closing!
2176             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2177             be translated. */
2178             TidyDuplicateAttrs, 0,
2179             "Mit dieser Option wird festgelegt, ob Tidy das erste oder das letzte "
2180             "Vorkommen eines wiederholten Attributs übernehmen soll, z.B. bei "
2181             "aufeinanderfolgenden align Attributen im selben Tag. "
2182             },
2183             {/* Important notes for translators:
2184             - Use only , , , , and
2185            
.
2186             - Entities, tags, attributes, etc., should be enclosed in .
2187             - Option values should be enclosed in .
2188             - It's very important that
be self-closing!
2189             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2190             be translated. */
2191             TidyEmacs, 0,
2192             "Mit dieser Option ändert Tidy das Format von Fehler- und Warnmeldungen "
2193             "so, dass sie leichter von GNU Emacs und einigen anderen Programmen geparst "
2194             "werden. Aus dem standardmäßigen "
2195             "
"
2196             " Zeile <Zeilennummer> Spalte <Spaltennummer> - (Fehler|Warnung): <Meldung> "
2197             "
"
2198             "wird eine Ausgabe, die den Dateinamen der Eingabe enthält: "
2199             "
"
2200             " <Dateiname>:<Zeilennummer>:<Spaltennummer>: (Fehler|Warnung): <Meldung> "
2201             },
2202             {/* Important notes for translators:
2203             - Use only , , , , and
2204            
.
2205             - Entities, tags, attributes, etc., should be enclosed in .
2206             - Option values should be enclosed in .
2207             - It's very important that
be self-closing!
2208             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2209             be translated. */
2210             TidyEmptyTags, 0,
2211             "Diese Option führt neue, leere Inline-Elemente ein. Der Wert muss eine leerzeichen- "
2212             "oder komma-separierte Lste von Tagnamen sein. "
2213             "
"
2214             "Sollten Sie neue Elemente nicht deklarieren, verweigert Tidy das Generieren einer "
2215             "bereinigten Datei, wenn die Eingabe bisher unbekannte Elemente enthält. "
2216             "
"
2217             "Achten Sie darauf, auch leere Elemente als entweder Inline- oder Blockelemente "
2218             "zu deklarieren. "
2219             "
"
2220             "Diese Option wird im XML-Modus ignoriert. "
2221             },
2222             {/* Important notes for translators:
2223             - Use only , , , , and
2224            
.
2225             - Entities, tags, attributes, etc., should be enclosed in .
2226             - Option values should be enclosed in .
2227             - It's very important that
be self-closing!
2228             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2229             be translated. */
2230             TidyEncloseBlockText, 0,
2231             "Diese Option legt fest, ob Tidy ein <p> Element "
2232             "einfügen soll, um Text zu umschließen, den es in solchen Elementen findet, "
2233             "die gemischten Inhalt für HTML transitional, nicht aber für HTML strict "
2234             "erlauben. "
2235             },
2236             {/* Important notes for translators:
2237             - Use only , , , , and
2238            
.
2239             - Entities, tags, attributes, etc., should be enclosed in .
2240             - Option values should be enclosed in .
2241             - It's very important that
be self-closing!
2242             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2243             be translated. */
2244             TidyEncloseBodyText, 0,
2245             "Diese Option legt fest, ob Text, der im body Element "
2246             "gefunden wird, von einem <p> Element umschlossen "
2247             "werden soll. "
2248             "
"
2249             "Das ist sinnvoll, wenn Sie bereits vorhandenen HTML-Code mit einem "
2250             "Style-Sheet verwenden wollen. "
2251             },
2252             {/* Important notes for translators:
2253             - Use only , , , , and
2254            
.
2255             - Entities, tags, attributes, etc., should be enclosed in .
2256             - Option values should be enclosed in .
2257             - It's very important that
be self-closing!
2258             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2259             be translated. */
2260             TidyErrFile, 0,
2261             "Diese Option nennt die Fehlerdatei, in der Tidy Fehler und Warnungen "
2262             "vermerkt. "
2263             "Normalerweise werden Fehler und Warnungen auf stderr "
2264             "ausgegeben. "
2265             },
2266             {/* Important notes for translators:
2267             - Use only , , , , and
2268            
.
2269             - Entities, tags, attributes, etc., should be enclosed in .
2270             - Option values should be enclosed in .
2271             - It's very important that
be self-closing!
2272             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2273             be translated. */
2274             TidyEscapeCdata, 0,
2275             "Mit dieser Option bestimmen Sie, ob Tidy "
2276             "<![CDATA[]]> Abschnitte in normlen Text umwandeln "
2277             "soll. "
2278             },
2279             {/* Important notes for translators:
2280             - Use only , , , , and
2281            
.
2282             - Entities, tags, attributes, etc., should be enclosed in .
2283             - Option values should be enclosed in .
2284             - It's very important that
be self-closing!
2285             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2286             be translated. */
2287             TidyEscapeScripts, 0,
2288             "Diese Option bewirkt, dass Zeichen oder Zeichenketten, die wie "
2289             "schließende Tags aussehen, wie "
2290             "</g mit backslashes maskiert werden, wie in "
2291             "<\\/g. Setzen Sie en Wert no, um dies zu "
2292             "verhindern. "
2293             },
2294             {/* Important notes for translators:
2295             - Use only , , , , and
2296            
.
2297             - Entities, tags, attributes, etc., should be enclosed in .
2298             - Option values should be enclosed in .
2299             - It's very important that
be self-closing!
2300             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2301             be translated. */
2302             TidyFixBackslash, 0,
2303             "Diese Option bestimmt, ob Tidy Backslashes \\ in URLs "
2304             "durch normale Schrägstriche / ersetzen soll. "
2305             },
2306             {/* Important notes for translators:
2307             - Use only , , , , and
2308            
.
2309             - Entities, tags, attributes, etc., should be enclosed in .
2310             - Option values should be enclosed in .
2311             - It's very important that
be self-closing!
2312             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2313             be translated. */
2314             TidyFixComments, 0,
2315             "Diese Option bestimmt, ob Tidy unerwartete Bindestriche durch "
2316             "= Zeichen ersetzen soll, wenn Bindestriche aufeinanderfolgen. "
2317             "
"
2318             "Der Standard ist auto, was für HTML5 Dokumente das gleiche wie "
2319             "no bedeutet, für alle anderen aber yes. "
2320             "
"
2321             "Die SGML Kommentarsyntax wurde für HTML aufgegeben, alle Versionen von HTML "
2322             "erlauben aufeinanderfolgende Bindestriche, auch wenn das nicht für XML "
2323             "und XHTML gilt. Wenn Sie ältere Browser unterstützen wollen, die SGML "
2324             "Syntax verlangen, sollten Sie hier den Wert yes setzen."
2325             },
2326             {/* Important notes for translators:
2327             - Use only , , , , and
2328            
.
2329             - Entities, tags, attributes, etc., should be enclosed in .
2330             - Option values should be enclosed in .
2331             - It's very important that
be self-closing!
2332             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2333             be translated. */
2334             TidyFixUri, 0,
2335             "Diese Option legt fest, ob Tidy Attributwerte mit URIs auf ungültige "
2336             "Zeichen überprüft und sie, wenn solche gefunden werden, maskiert, wie "
2337             "von HTML4 empfohlen. "
2338             },
2339             {/* Important notes for translators:
2340             - Use only , , , , and
2341            
.
2342             - Entities, tags, attributes, etc., should be enclosed in .
2343             - Option values should be enclosed in .
2344             - It's very important that
be self-closing!
2345             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2346             be translated. */
2347             TidyForceOutput, 0,
2348             "Diese Option legt fest, ob Tidy auch dann eine Ausgabe erzeugt, "
2349             "wenn Fehler auftreten. "
2350             "
"
2351             "Verwenden Sie diese Einstellung mit Vorsicht; wenn Tidy einen Fehler "
2352             "meldet, heißt das, dass Tidy nicht (oder nicht sicher) in der Lage "
2353             "ist, den Fehler zu beheben. Die erzeugte Ausgabe kann darum Ihren "
2354             "Erwartungen widersprechen. "
2355             },
2356             {/* Important notes for translators:
2357             - Use only , , , , and
2358            
.
2359             - Entities, tags, attributes, etc., should be enclosed in .
2360             - Option values should be enclosed in .
2361             - It's very important that
be self-closing!
2362             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2363             be translated. */
2364             TidyGDocClean, 0,
2365             "Diese Option bestimmt, ob sich Tidy beim Bereinigen von HTML-Code, "
2366             "der aus Google Docs exportiert wurde, speziell verhalten soll. "
2367             },
2368             {/* Important notes for translators:
2369             - Use only , , , , and
2370            
.
2371             - Entities, tags, attributes, etc., should be enclosed in .
2372             - Option values should be enclosed in .
2373             - It's very important that
be self-closing!
2374             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2375             be translated. */
2376             TidyHideComments, 0,
2377             "Mit dieser Option bestimmen Sie, ob Tidy Kommentare aus der Ausgabe "
2378             "entfernt. "
2379             },
2380             {/* Important notes for translators:
2381             - Use only , , , , and
2382            
.
2383             - Entities, tags, attributes, etc., should be enclosed in .
2384             - Option values should be enclosed in .
2385             - It's very important that
be self-closing!
2386             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2387             be translated. */
2388             TidyHtmlOut, 0,
2389             "Diese Option bestimmt, ob Tidy eine formatierte Ausgabe als HTML "
2390             "schreiben soll. "
2391             },
2392             {/* Important notes for translators:
2393             - Use only , , , , and
2394            
.
2395             - Entities, tags, attributes, etc., should be enclosed in .
2396             - Option values should be enclosed in .
2397             - It's very important that
be self-closing!
2398             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2399             be translated. */
2400             TidyInCharEncoding, 0,
2401             "Diese Option legt die Zeichenkodierung fest, die Tidy für die Eingabe "
2402             "verwendet. "
2403             "Tidy geht bei manchen Eingabekodierungen von ein paar Annahmen aus. "
2404             "
"
2405             "Für ascii akzeptiert Tidy Latin-1 (ISO-8859-1) Zeichenwerte "
2406             "und konvertiert sie nötigenfalls in Entities. "
2407             "
"
2408             "Für raw stellt Tidy keinerlei Vermutungen über die "
2409             "Zeichenwerte an und reicht sie unverändert an die Ausgabe weiter. "
2410             "
"
2411             "Für mac und win1252 werden händlerspezifische "
2412             "Zeichenwerte akzeptiert und nötigenfalls in Entities umgewandelt. "
2413             "
"
2414             "Asiatische Zeichenkodierungen, wie iso2022, werden in "
2415             "geeigneter Weise behandelt, unter der Annahme, dass auch "
2416             "output-encoding entsprechend angegeben ist. "
2417             "
"
2418             "Tidy ist kein Konverter für Zeichenkodierungen. Auch, wenn Latin- und "
2419             "UTF-Kodierungen frei gemischt werden können, ist es nicht möglich, "
2420             "asiatische Kodierungen mit Tidy in Latin umzuwandeln. "
2421             },
2422             {/* Important notes for translators:
2423             - Use only , , , , and
2424            
.
2425             - Entities, tags, attributes, etc., should be enclosed in .
2426             - Option values should be enclosed in .
2427             - It's very important that
be self-closing!
2428             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2429             be translated. */
2430             TidyIndentAttributes, 0,
2431             "Mit dieser Option wird festgelegt, ob Tidy jedes Attribut auf einer "
2432             "neuen Zeile beginnen soll. "
2433             },
2434             {/* Important notes for translators:
2435             - Use only , , , , and
2436            
.
2437             - Entities, tags, attributes, etc., should be enclosed in .
2438             - Option values should be enclosed in .
2439             - It's very important that
be self-closing!
2440             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2441             be translated. */
2442             TidyIndentCdata, 0,
2443             "Diese Option bestimmt, ob Tidy "
2444             "<![CDATA[]]> Abschnitte einrücken soll. "
2445             },
2446             {/* Important notes for translators:
2447             - Use only , , , , and
2448            
.
2449             - Entities, tags, attributes, etc., should be enclosed in .
2450             - Option values should be enclosed in .
2451             - It's very important that
be self-closing!
2452             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2453             be translated. */
2454             /* option-name is “indent” */
2455             TidyIndentContent, 0,
2456             "Diese Option bestimmt, ob Tidy Blockelemente einrücken soll. "
2457             "
"
2458             "Die Einstellung auto bewirkt, dass Tidy selbst bestimmt, ob "
2459             "der Inhalt von Tags wie <title>, "
2460             "<h1>-<h6>, <li>, "
2461             "<td>, oder <p> eingerückt wird, "
2462             "abhängig vom Abschnitt der Inhaltsdaten, der solch ein Blockelement enthält. "
2463             "
"
2464             "Die Einstellung yes für indent kann Layoutfehler "
2465             "mancher Browser offenlegen. "
2466             "
"
2467             "Verwenden Sie die Option indent-spaces zur Kontrolle der "
2468             "Zahl auszugebender Leerzeichen oder Tabulatoren, je nach Einrückungsebene "
2469             "und indent-with-tabs um festzulegen, ob entweder Tabulatoren "
2470             "oder Leerzeichen verwendet werden."
2471             },
2472             {/* Important notes for translators:
2473             - Use only , , , , and
2474            
.
2475             - Entities, tags, attributes, etc., should be enclosed in .
2476             - Option values should be enclosed in .
2477             - It's very important that
be self-closing!
2478             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2479             be translated. */
2480             TidyIndentSpaces, 0,
2481             "Diese Option bestimmt die Anzahl von Leerzeichen oder Tabulatoren, "
2482             "mit denen Tidy Einrückungen vornimmt, wenn indent "
2483             "aktiviert ist. "
2484             "
"
2485             "Beachten Sie, dass der Standardwert für diese Option vom aktuellen Wert "
2486             "der Option indent-with-tabs abhängt (siehe dort). "
2487             },
2488             {/* Important notes for translators:
2489             - Use only , , , , and
2490            
.
2491             - Entities, tags, attributes, etc., should be enclosed in .
2492             - Option values should be enclosed in .
2493             - It's very important that
be self-closing!
2494             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2495             be translated. */
2496             /* option name is “new-inline-tags” */
2497             TidyInlineTags, 0,
2498             "Diese Option definiert neue nicht-leere Inline Elemente. Der Wert muss "
2499             "eine leerzeichen- oder kommaseparierte Liste von Tagnamen sein."
2500             "
"
2501             "Solange Sie neue Tags nicht deklarieren, verweigert Tidy die Erzeugung "
2502             "bereinigter Dateien, wenn die Eingabe bisher unbekannte Tags enthält. "
2503             "
"
2504             "Diese Option wird im XML-Modus ignoriert. "
2505             },
2506             {/* Important notes for translators:
2507             - Use only , , , , and
2508            
.
2509             - Entities, tags, attributes, etc., should be enclosed in .
2510             - Option values should be enclosed in .
2511             - It's very important that
be self-closing!
2512             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2513             be translated. */
2514             TidyJoinClasses, 0,
2515             "Diese Option bestimmt, ob Tidy mehrere CSS-Klassen zu einer einzigen "
2516             "neuen Klasse kombiniert, wo ein Element mit mehrere Klassennamen "
2517             "versehen wurde. "
2518             },
2519             {/* Important notes for translators:
2520             - Use only , , , , and
2521            
.
2522             - Entities, tags, attributes, etc., should be enclosed in .
2523             - Option values should be enclosed in .
2524             - It's very important that
be self-closing!
2525             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2526             be translated. */
2527             TidyJoinStyles, 0,
2528             "Diese Option bestimmt, ob Tidy mehrere style-Attribute zu einem einzigen "
2529             "kombiniert, wo ein Element mit mehreren style-Attributen versehen wurde. "
2530             },
2531             {/* Important notes for translators:
2532             - Use only , , , , and
2533            
.
2534             - Entities, tags, attributes, etc., should be enclosed in .
2535             - Option values should be enclosed in .
2536             - It's very important that
be self-closing!
2537             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2538             be translated. */
2539             /* option-name: keep-time */
2540             TidyKeepFileTimes, 0,
2541             "Diese option bestimmt, ob Tidy das Änderungsdatum der originalen Eingabedatei "
2542             "erhalten soll, wenn solche Dateien von Tidy mit der bereinigten Fassung "
2543             "überschrieben werden. "
2544             "
"
2545             "Das Setzen dieser Option mit dem Wert yes erlaubt es Ihnen, "
2546             "Dateien mit Tidy zu bereinigen, ohne das Änderungsdatum zu aktualisieren. "
2547             "Das kann nützlich sein, wenn andere Werkzeuge dieses Datum verwenden, zum "
2548             "Beispiel zum automatisierten Hochladen auf den Server. "
2549             "
"
2550             "Beachten Sie, dass diese Funktion nicht auf allen Systemen zur Verfügung steht. "
2551             },
2552             {/* Important notes for translators:
2553             - Use only , , , , and
2554            
.
2555             - Entities, tags, attributes, etc., should be enclosed in .
2556             - Option values should be enclosed in .
2557             - It's very important that
be self-closing!
2558             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2559             be translated. */
2560             TidyKeepTabs, 0,
2561             "Der Standardwert dieser Option ist no. Damit ersetzt Tidy alle "
2562             "Tabulatoren durch Leerzeichen, entsprechend der Option tab-size und "
2563             "dem aktuellen Zeileneinzug. "
2564             "Dieser Zwischenraum wird später natürlich auf nur ein Leerzeichen reduziert, mit "
2565             "Ausnahme der Abstände, die in den nachfolgend gelisteten Blöcken und Elementen auftreten. "
2566             "
"
2567             "Wenn der Wert auf yes eingestellt ist, lässt Tidy einige Tabulatoren "
2568             "unangetastet, aber nur in präformatierten Blöcken, wie "
2569             "<pre> und weiteren CDATA elementen, wie "
2570             "<script>, <style>, sowie Pseudo-Elementen "
2571             "wie <?php ... ?>. "
2572             "Wie immer werden alle anderen Tabulatoren und Tabulatorfolgen im Quelldokument durch "
2573             "Leerzeichen ersetzt."
2574             },
2575             {/* Important notes for translators:
2576             - Use only , , , , and
2577            
.
2578             - Entities, tags, attributes, etc., should be enclosed in .
2579             - Option values should be enclosed in .
2580             - It's very important that
be self-closing!
2581             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2582             be translated. */
2583             /* option-name: literal-attributes*/
2584             TidyLiteralAttribs, 0,
2585             "Diese Option bestimmt, wie Tidy mit Leerzeichen innerhalb von Attributwerten "
2586             "umgeht. "
2587             "
"
2588             "Wenn der Wert no ist, normalisiert Tidy Attributwerte indem es "
2589             "alle Zeilenumbrüche oder Tabulatoren durch ein einziges Leerzeichen ersetzt, "
2590             "und außerdem aufeinanderfolgende Leerzeichen auf ein einziges reduziert. "
2591             "
"
2592             "Um Tidy dazu zu bringen, die ursprünglichen Werte aller Attributwerte buchstabentreu "
2593             "zu erhalten und damit alle Leerzeichen innerhalb der Attributwerte unangetastet "
2594             "bleiben, setzen Sie diese Option auf yes. "
2595             },
2596             {/* Important notes for translators:
2597             - Use only , , , , and
2598            
.
2599             - Entities, tags, attributes, etc., should be enclosed in .
2600             - Option values should be enclosed in .
2601             - It's very important that
be self-closing!
2602             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2603             be translated. */
2604             TidyLogicalEmphasis, 0,
2605             "Diese Option bestimmt, ob Tidy jedes "
2606             "<i> durch <em> und jedes "
2607             "<b> durch <strong> ersetzen soll. "
2608             "Attribute dieser Tags bleiben unverändert erhalten. "
2609             "
"
2610             "Diese Option kann unabhängig von clean aktiviert werden. "
2611             },
2612             {/* Important notes for translators:
2613             - Use only , , , , and
2614            
.
2615             - Entities, tags, attributes, etc., should be enclosed in .
2616             - Option values should be enclosed in .
2617             - It's very important that
be self-closing!
2618             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2619             be translated. */
2620             TidyLowerLiterals, 0,
2621             "Diese Option legt fest, ob Tidy solche Attributwerte, die aus einer Liste "
2622             "vordefinierter Werte bestehen, in Kleinbuchstaben konvertieren soll. "
2623             "
"
2624             "Für XHTML-Dokumente ist das notwendig. "
2625             },
2626             {/* Important notes for translators:
2627             - Use only , , , , and
2628            
.
2629             - Entities, tags, attributes, etc., should be enclosed in .
2630             - Option values should be enclosed in .
2631             - It's very important that
be self-closing!
2632             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2633             be translated. */
2634             /* option-name: bare */
2635             TidyMakeBare, 0,
2636             "Diese Option legt fest, ob Tidy typografische Anführungsstriche und "
2637             "Geviertstriche duch ASCII-Zeichen ersetzen soll und eher normale Leerzeichen anstelle "
2638             "geschützter Leerzeichen ausgeben soll, wenn sie in der Eingabe "
2639             "gefunden werden. "
2640             },
2641             {/* Important notes for translators:
2642             - Use only , , , , and
2643            
.
2644             - Entities, tags, attributes, etc., should be enclosed in .
2645             - Option values should be enclosed in .
2646             - It's very important that
be self-closing!
2647             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2648             be translated. */
2649             /* option-name: clean */
2650             TidyMakeClean, 0,
2651             "Diese Option legt fest, wie Tidy mit einigen veralteten präsentationsbezogenen "
2652             "Tags umgehen soll (zur Zeit betrifft das <i>, "
2653             "<b>, <center> wenn es von "
2654             "geeigneten inline-Tags umschlossen ist und <font>). "
2655             "Wenn hier yes eingestellt ist, werden die betroffenen Tags "
2656             "durch CSS Formatierung und geeignete Textauszeichnung ersetzt. "
2657             },
2658             {/* Important notes for translators:
2659             - Use only , , , , and
2660            
.
2661             - Entities, tags, attributes, etc., should be enclosed in .
2662             - Option values should be enclosed in .
2663             - It's very important that
be self-closing!
2664             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2665             be translated. */
2666             /* option-name (in deed): tidy-mark */
2667             TidyMark, 0,
2668             "Diese Option legt fest, ob Tidy ein meta Element im "
2669             "Dokumentenkopf unterbringen soll, mit dem darauf hingewiesen wird, dass "
2670             "die Datei mit Tidy bereinigt worden ist. "
2671             "
"
2672             "Tidy erzeugt kein neues meta-Element, wenn bereits eines vorhanden ist. "
2673             },
2674             {/* Important notes for translators:
2675             - Use only , , , , and
2676            
.
2677             - Entities, tags, attributes, etc., should be enclosed in .
2678             - Option values should be enclosed in .
2679             - It's very important that
be self-closing!
2680             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2681             be translated. */
2682             TidyMergeDivs, 0,
2683             "Diese Option kann das Verhalten von clean beeinflussen, wenn "
2684             "ihr Wert auf yes gesetzt ist. "
2685             "
"
2686             "Tidy wird dann verschachtelte <div> zu einem einzigen verschmelzen, "
2687             "wie <div><div>...</div></div>. "
2688             "
"
2689             "Wenn der Wert statt dessen auto ist, werden die Attribute des innersten "
2690             "<div> ins äußerste verschoben. Verschachtelte "
2691             "<div> mit id-Attributen werden nicht "
2692             "verschmolzen. "
2693             "
"
2694             "Mit yes werden die Attribute des innersten "
2695             "<div> verworfen, mit Ausnahme von "
2696             "class und style. "
2697             },
2698             {/* Important notes for translators:
2699             - Use only , , , , and
2700            
.
2701             - Entities, tags, attributes, etc., should be enclosed in .
2702             - Option values should be enclosed in .
2703             - It's very important that
be self-closing!
2704             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2705             be translated. */
2706             TidyMergeEmphasis, 0,
2707             "Diese Option legt fest, ob Tidy verschachtelte <b> "
2708             "und <i>-Elemente verschmelzen soll; zum Beispiel würde im Falle von "
2709             "
"
2710             "<b class=\"rtop-2\">foo <b class=\"r2-2\">bar</b> baz</b>, "
2711             "
"
2712             "Tidy diese Ausgabe erzeugen: <b class=\"rtop-2\">foo bar baz</b>. "
2713             },
2714             {/* Important notes for translators:
2715             - Use only , , , , and
2716            
.
2717             - Entities, tags, attributes, etc., should be enclosed in .
2718             - Option values should be enclosed in .
2719             - It's very important that
be self-closing!
2720             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2721             be translated. */
2722             TidyMergeSpans, 0,
2723             "Diese Option kann das Verhalten von clean beeinflussen, wenn "
2724             "ihr Wert yes ist."
2725             "
"
2726             "Dann wird Tidy verschachtelte <span>, "
2727             "wie in <span><span>...</span></span> zu "
2728             "einem einzigen verschmelzen."
2729             "
"
2730             "Der Algorithmus ist identisch mit dem der Option merge-divs (siehe dort). "
2731             },
2732             {/* Important notes for translators:
2733             - Use only , , , , and
2734            
.
2735             - Entities, tags, attributes, etc., should be enclosed in .
2736             - Option values should be enclosed in .
2737             - It's very important that
be self-closing!
2738             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2739             be translated. */
2740             TidyNCR, 0,
2741             "Diese Option bestimmt, ob Tidy numerische Zeichenreferenzen akzeptieren soll. "
2742             },
2743             {/* Important notes for translators:
2744             - Use only , , , , and
2745            
.
2746             - Entities, tags, attributes, etc., should be enclosed in .
2747             - Option values should be enclosed in .
2748             - It's very important that
be self-closing!
2749             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2750             be translated. */
2751             /* option-name: newline */
2752             TidyNewline, 0,
2753             "Die Standardeinstellung ist für das aktuelle System geeignet. "
2754             "
"
2755             "Im Allgemeinen gelten CRLF auf PC-DOS, Windows und OS/2; '\r' "
2756             "auf klassischem Mac OS; und '\n' überall sonst (Linux, macOS, "
2757             "und Unix). "
2758             },
2759             {/* Important notes for translators:
2760             - Use only , , , , and
2761            
.
2762             - Entities, tags, attributes, etc., should be enclosed in .
2763             - Option values should be enclosed in .
2764             - It's very important that
be self-closing!
2765             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2766             be translated. */
2767             /* option-name: numeric-entities */
2768             TidyNumEntities, 0,
2769             "Dies Option bestimmt, ob Tidy andere als die HTML-eigenen Entitäten "
2770             "(&amp;, &lt;, "
2771             "&gt;, and &quot;) in numerischer "
2772             "anstelle der benannten Form ausgeben soll. "
2773             "
"
2774             "Es werden nur solche Entitäten verwendet, die mit der generierten DOCTYPE Deklaration kompatibel sind. "
2775             "
"
2776             "Entitäten, die in der Zeichenkodierung der Ausgabe repräsentiert werden können, "
2777             "werden entsprechend umgewandelt. "
2778             },
2779             {/* Important notes for translators:
2780             - Use only , , , , and
2781            
.
2782             - Entities, tags, attributes, etc., should be enclosed in .
2783             - Option values should be enclosed in .
2784             - It's very important that
be self-closing!
2785             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2786             be translated. */
2787             TidyOmitOptionalTags, 0,
2788             "Mit dieser Option können optionale Start- und End-Tags von der Ausgabe "
2789             "ausgenommen werden. "
2790             "
"
2791             "Ist diese Option aktiviert, werden alle Tags der Elemente <html>, "
2792             "<head>, und <body> für die Ausgabe verworfen, "
2793             "wie auch die End-Tags </p>, "
2794             "</li>, </dt>, "
2795             "</dd>, </option>, "
2796             "</tr>, </td>, und "
2797             "</th>. "
2798             "
"
2799             "Diese Option wird für XML-Ausgaben ignoriert. "
2800             },
2801             {/* Important notes for translators:
2802             - Use only , , , , and
2803            
.
2804             - Entities, tags, attributes, etc., should be enclosed in .
2805             - Option values should be enclosed in .
2806             - It's very important that
be self-closing!
2807             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2808             be translated. */
2809             /* option-name: output-encoding */
2810             TidyOutCharEncoding, 0,
2811             "Diese Option setzt die Zeichenkodierung für die Tidy-Ausgabe. "
2812             "Einige Kodierungen beeinflussen wie manche Symbole in Entities "
2813             "umgewandelt werden, wenn auch die Ausgabe einiger Entities "
2814             "immer von weiteren Konfigurationseinstellungen abhängt. "
2815             "
"
2816             "Mit den Kodierungen ascii, mac, und win1252 "
2817             "werden alle Zeichen mit Werten über 127 als Entities ausgegeben. "
2818             "
"
2819             "Wird raw eingestellt, übernimmt Tidy Werte über 127 ohne sie "
2820             "in Entities umzuwandeln. "
2821             "
"
2822             "latin1 veranlasst Tidy, Zeichen über 255 als Entities zu schreiben. "
2823             "
"
2824             "UTF wie utf8 bedingt die Ausgabe in der entsprechenden "
2825             "UTF-Kodierung"
2826             "
"
2827             "Asiatische Ausgabekodierungen, wie iso2022 erzeugen "
2828             "die adäquate Ausgabe unter der Annahme, dass auch "
2829             "input-encoding entsprechend gesetzt ist. "
2830             "
"
2831             "Tidy ist kein Konverter für Zeichenkodierungen. Wenn Latin und UTF-"
2832             "Kodierungen auch frei gemischt werden können, ist es doch nicht "
2833             "möglich, asiatische Kodierungen mit Tidy in Latin umzuwandeln. "
2834             },
2835             {/* Important notes for translators:
2836             - Use only , , , , and
2837            
.
2838             - Entities, tags, attributes, etc., should be enclosed in .
2839             - Option values should be enclosed in .
2840             - It's very important that
be self-closing!
2841             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2842             be translated. */
2843             /* option-name: output-file */
2844             TidyOutFile, 0,
2845             "Diese Option bestimmt welche Ausgabedatei von Tidy geschrieben wird. "
2846             "Normalerweise schreibt Tidy die Ausgabe auf die Standard-Ausgabe stdout."
2847             },
2848             {/* Important notes for translators:
2849             - Use only , , , , and
2850            
.
2851             - Entities, tags, attributes, etc., should be enclosed in .
2852             - Option values should be enclosed in .
2853             - It's very important that
be self-closing!
2854             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2855             be translated. */
2856             TidyOutputBOM, 0,
2857             "Diese Option bestimmt, ob Tidy eine Byte-Reihenfolge-Markierung (BOM) an den Anfang der Ausgabe schreiben soll. "
2858             "Dies betrifft nur UTF-8 und UTF-16 Ausgabekodierungen, wo das BOM-Zeichen entweder den Wert U+EFBBBF (UTF-8) oder "
2859             "U+FEFF (UTF-16) hat. "
2860             "
"
2861             "Wenn die Option den Wert auto hat, wird Tidy die BOM nur dann in die Ausgabe schreiben, "
2862             "wenn sie bereits zu Beginn der Eingabedaten vorhanden war. "
2863             "
"
2864             "XML/XMLHTML-Ausgaben in UTF-16 Kodierung erhalten immer eine BOM. "
2865             },
2866             {/* Important notes for translators:
2867             - Use only , , , , and
2868            
.
2869             - Entities, tags, attributes, etc., should be enclosed in .
2870             - Option values should be enclosed in .
2871             - It's very important that
be self-closing!
2872             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2873             be translated. */
2874             /* option-name: indent-with-tabs */
2875             TidyPPrintTabs, 0,
2876             "Diese Option bestimmt, ob Tidy Einrückungen mit Tabulatoren anstelle von "
2877             "Leerzeichen vornimmt, unter der Annahme, dass auch indent den "
2878             "Wert yes hat. "
2879             "
"
2880             "Setzen Sie den Wert yes, um mit Tabulatoren einzurücken, "
2881             "anstelle der standardmäßigen Leerzeichen. "
2882             "
"
2883             "Stellen Sie die Anzal der ausgegebenen Tabulatoren nach Einrückungstiefe "
2884             "mit der Option indent-spaces ein. "
2885             "Beachten Sie, dass das Setzen der Option indent-with-tabs "
2886             "zur Folge hat, dass der Standardwert für indent-spaces auf "
2887             "1 zurückgesetzt wird. "
2888             "
"
2889             "Beachten Sie auch, dass die Option tab-size steuert, wie "
2890             "Tabulatoren der Eingabe in Leerzeichen umgewandelt werden. "
2891             "Setzen Sie hier 0 ein, um die Tabulatoren der Eingabe beizubehalten. "
2892             },
2893             {/* Important notes for translators:
2894             - Use only , , , , and
2895            
.
2896             - Entities, tags, attributes, etc., should be enclosed in .
2897             - Option values should be enclosed in .
2898             - It's very important that
be self-closing!
2899             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2900             be translated. */
2901             TidyPreserveEntities, 0,
2902             "Diese Option bestimmt, ob Tidy wohlgeformte Entities, wie in der Eingabe vorgefunden, "
2903             "beibehält. "
2904             },
2905             {/* Important notes for translators:
2906             - Use only , , , , and
2907            
.
2908             - Entities, tags, attributes, etc., should be enclosed in .
2909             - Option values should be enclosed in .
2910             - It's very important that
be self-closing!
2911             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2912             be translated. */
2913             /* option-name: new-pre-tags*/
2914             TidyPreTags, 0,
2915             "Mit dieser Option werden neue Tags eingeführt, die in der exakt gleichen "
2916             "Weise verarbeitet werden, wie das <pre> Element von HTML. "
2917             "Der Wert der Option muss eine leerzeichen- oder kommaseparierte Liste von "
2918             "Tag-Namen sein. "
2919             "
"
2920             "Solange Sie neue Tags nicht deklarieren, verweigert Tidy das Generieren "
2921             "einer bereinigten Datei, wenn die Eingabe bisher unbekannte Tags enthält."
2922             "
"
2923             "Beachten Sie, dass Sie bis auf weiteres noch keine neuen CDATA-Elemente einführen können. "
2924             "
"
2925             "Diese Option wird im XML-Modus ignoriert."
2926             },
2927             {/* Important notes for translators:
2928             - Use only , , , , and
2929            
.
2930             - Entities, tags, attributes, etc., should be enclosed in .
2931             - Option values should be enclosed in .
2932             - It's very important that
be self-closing!
2933             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2934             be translated. */
2935             TidyPriorityAttributes, 0,
2936             "Mit dieser Option können Sie bestimmen, dass Attribute Vorrang vor anderen "
2937             "haben und, im Ausgabedokument, den anderen Attributen eines Elements "
2938             "vorangestellt werden. Zum Beispiel können Sie festlegen, dass id "
2939             "und name vor allen anderen Attributen genannt werden. "
2940             "
"
2941             "Die Option erwartet als Wert eine Liste von leerzeichen- oder kommaseparierten "
2942             "Attributnamen. "
2943             },
2944             {/* Important notes for translators:
2945             - Use only , , , , and
2946            
.
2947             - Entities, tags, attributes, etc., should be enclosed in .
2948             - Option values should be enclosed in .
2949             - It's very important that
be self-closing!
2950             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2951             be translated. */
2952             /* option-name: punctuation-wrap */
2953             TidyPunctWrap, 0,
2954             "Diese Option bestimmt, ob Tidy nach einigen Unicode- oder chinesischen "
2955             "Satzzeichen einen Zeilenumbruch vornimmt. "
2956             },
2957             {/* Important notes for translators:
2958             - Use only , , , , and
2959            
.
2960             - Entities, tags, attributes, etc., should be enclosed in .
2961             - Option values should be enclosed in .
2962             - It's very important that
be self-closing!
2963             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2964             be translated. */
2965             TidyQuiet, 0,
2966             "Wenn diese Option aktiv is, beschränkt Tidy andere Ausgaben als die des bereinigten Dokuments "
2967             "auf Fehler- und Warnmeldungen. "
2968             },
2969             {/* Important notes for translators:
2970             - Use only , , , , and
2971            
.
2972             - Entities, tags, attributes, etc., should be enclosed in .
2973             - Option values should be enclosed in .
2974             - It's very important that
be self-closing!
2975             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2976             be translated. */
2977             TidyQuoteAmpersand, 0,
2978             "Diese Option bestimmt, ob Tidy alleinstehende & "
2979             "als &amp; ausgeben soll. "
2980             },
2981             {/* Important notes for translators:
2982             - Use only , , , , and
2983            
.
2984             - Entities, tags, attributes, etc., should be enclosed in .
2985             - Option values should be enclosed in .
2986             - It's very important that
be self-closing!
2987             - The strings "Tidy" and "HTML Tidy" are the program name and must not
2988             be translated. */
2989             TidyQuoteMarks, 0,
2990             "Diese Option bestimmt, ob Tidy " Zeichen als "
2991             "&quot; ausgeben soll, wie es manche Redaktionssysteme "
2992             "bevorzugen. "
2993             "
"
2994             "Das Auslassungszeichen ' wird als &#39; "
2995             "ausgegeben, weil viele Web-Browser &apo; noch nicht "
2996             "unterstützen. "
2997             },
2998             {/* Important notes for translators:
2999             - Use only , , , , and
3000            
.
3001             - Entities, tags, attributes, etc., should be enclosed in .
3002             - Option values should be enclosed in .
3003             - It's very important that
be self-closing!
3004             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3005             be translated. */
3006             TidyQuoteNbsp, 0,
3007             "Diese Option bestimmt, ob Tidy geschützte Leerzeichen als Entities "
3008             "und nicht als Unicode-Zeichen 160 (dezimal) ausgeben soll. "
3009             },
3010             {/* Important notes for translators:
3011             - Use only , , , , and
3012            
.
3013             - Entities, tags, attributes, etc., should be enclosed in .
3014             - Option values should be enclosed in .
3015             - It's very important that
be self-closing!
3016             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3017             be translated. */
3018             TidyReplaceColor, 0,
3019             "Mit dieser Option können Sie Tidy auffordern, numerische Werte in "
3020             "Farb-Attributen durch HTML/XHTML Farbnamen zu ersetzen, so weit "
3021             "sie definiert sind. Zum Beispiel würde #ffffff zu "
3022             "white. "
3023             },
3024             {/* Important notes for translators:
3025             - Use only , , , , and
3026            
.
3027             - Entities, tags, attributes, etc., should be enclosed in .
3028             - Option values should be enclosed in .
3029             - It's very important that
be self-closing!
3030             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3031             be translated. */
3032             TidyShowErrors, 0,
3033             "Mit dem Wert dieser Option wird gesteuert, ob Tidy weitere Fehler "
3034             "meldet. Wenn der Wert 0 ist, werden gar keine Fehler "
3035             "gemeldet. "
3036             },
3037             {/* Important notes for translators:
3038             - Use only , , , , and
3039            
.
3040             - Entities, tags, attributes, etc., should be enclosed in .
3041             - Option values should be enclosed in .
3042             - It's very important that
be self-closing!
3043             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3044             be translated. */
3045             TidyShowFilename, 0,
3046             "Diese Option legt fest, ob Tidy den Dateinamen in Meldungen anzeigt. z.B.: "
3047             "
"
3048             " tidy -q -e --show-filename yes index.html
"
3049             " index.html: line 43 column 3 - Warning: replacing invalid UTF-8 bytes (char. code U+00A9) "
3050             },
3051              
3052             {/* Important notes for translators:
3053             - Use only , , , , and
3054            
.
3055             - Entities, tags, attributes, etc., should be enclosed in .
3056             - Option values should be enclosed in .
3057             - It's very important that
be self-closing!
3058             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3059             be translated. */
3060             TidyShowInfo, 0,
3061             "Mit dieser Option wird festgelegt, ob Tidy Protokollmeldungen auf dem "
3062             "Niveau INFO anzeigen soll."
3063             },
3064             {/* Important notes for translators:
3065             - Use only , , , , and
3066            
.
3067             - Entities, tags, attributes, etc., should be enclosed in .
3068             - Option values should be enclosed in .
3069             - It's very important that
be self-closing!
3070             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3071             be translated. */
3072             /* option-name: markup*/
3073             TidyShowMarkup, 0,
3074             "Mit dieser Option kann Tidy aufgefordert werden, eine formatierte Version "
3075             "der bereinigten Seite zu generieren. Beachten Sie, dass Tidy keine solche "
3076             "Formatierung vornimmt, wenn schwerwiegende Fehler gefunden werden "
3077             "(siehe auch: force-output). "
3078             },
3079             {/* Important notes for translators:
3080             - Use only , , , , and
3081            
.
3082             - Entities, tags, attributes, etc., should be enclosed in .
3083             - Option values should be enclosed in .
3084             - It's very important that
be self-closing!
3085             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3086             be translated. */
3087             TidyShowWarnings, 0,
3088             "Diese Option legt fest, ob Tidy Warnungen ausgeben soll oder nicht. "
3089             "Es kann nützlich sein, Warnungen zu deaktivieren, wenn wenige Fehler "
3090             "in einer Masse von Warnmeldungen untergehen. "
3091             },
3092             {/* Important notes for translators:
3093             - Use only , , , , and
3094            
.
3095             - Entities, tags, attributes, etc., should be enclosed in .
3096             - Option values should be enclosed in .
3097             - It's very important that
be self-closing!
3098             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3099             be translated. */
3100             TidySkipNested, 0,
3101             "Diese Option bestimmt, ob Tidy verschachtelte Elemente ausnehmen soll, "
3102             "wenn Script- und Style-Daten analysiert werden. "
3103             },
3104             {/* Important notes for translators:
3105             - Use only , , , , and
3106            
.
3107             - Entities, tags, attributes, etc., should be enclosed in .
3108             - Option values should be enclosed in .
3109             - It's very important that
be self-closing!
3110             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3111             be translated. */
3112             TidySortAttributes, 0,
3113             "Diese Option legt fest, dass Tidy Attribute innerhalb eines Elements "
3114             "anhand eines bestimmten Algorithmus sortieren soll. Wenn hier alpha "
3115             "gewählt wird, wird in aufsteigender, alphabetischer Reihenfolge sortiert. "
3116             "
"
3117             "Wenn dagegen gleichzeitig priority-attributes verwendet wird, "
3118             "werden zunächst die priorisierten Attribute ausgegeben, bevor die restlichen sortiert werden. "
3119             },
3120             {/* Important notes for translators:
3121             - Use only , , , , and
3122            
.
3123             - Entities, tags, attributes, etc., should be enclosed in .
3124             - Option values should be enclosed in .
3125             - It's very important that
be self-closing!
3126             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3127             be translated. */
3128             /* option-name: mute */
3129             TidyMuteReports, 0,
3130             "Verwenden Sie diese Option, um zu verhindern, dass Tidy bestimmte "
3131             "Meldungen ausgibt, beispielsweise für Situationen, die sie ignorieren möchten. "
3132             "
"
3133             "Der Wert der Option ist eine Liste von Meldungs-Schlüsseln. Ermitteln Sie "
3134             "die Meldungs-Schlüssel, indem Sie die Programmausgaben beobachten, während die "
3135             "Option mute-id aktiv ist. "
3136             },
3137             {/* Important notes for translators:
3138             - Use only , , , , and
3139            
.
3140             - Entities, tags, attributes, etc., should be enclosed in .
3141             - Option values should be enclosed in .
3142             - It's very important that
be self-closing!
3143             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3144             be translated. */
3145             /* option-name: mute-id */
3146             TidyMuteShow, 0,
3147             "Diese Option bestimmt, ob Tidy mit jedem seiner Fehler-Protokolle Meldungs-Schlüssel "
3148             "ausgeben soll. Das kann nützlich sein, wenn Sie mit Hilfe der Option mute "
3149             "einige Meldungen ausfiltern möchten. "
3150             },
3151             {/* Important notes for translators:
3152             - Use only , , , , and
3153            
.
3154             - Entities, tags, attributes, etc., should be enclosed in .
3155             - Option values should be enclosed in .
3156             - It's very important that
be self-closing!
3157             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3158             be translated. */
3159             /* option-name strict-tags-attributes */
3160             TidyStrictTagsAttr, 0,
3161             "Diese Option stellt sicher, dass Tags und Attribute für die HTML-Version, "
3162             "die Tidy ausgibt, geeignet sind. Wenn hier yes eingestellt ist "
3163             "und für das Ausgabedokument ein Doctype strict gilt, meldet Tidy Fehler. "
3164             "Ist der Dokumenttyp dagegen ein loose- oder transitional Doctype, werden "
3165             "Warnungen ausgegeben. "
3166             "
"
3167             "Wenn zusätzlich noch drop-proprietary-attributes aktiv ist, "
3168             "werden ungeeignete Attribute auch entfernt. "
3169             "
"
3170             "Ist der Wert der Option no, werden diese Prüfungen nicht durchgeführt. "
3171             },
3172             {/* Important notes for translators:
3173             - Use only , , , , and
3174            
.
3175             - Entities, tags, attributes, etc., should be enclosed in .
3176             - Option values should be enclosed in .
3177             - It's very important that
be self-closing!
3178             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3179             be translated. */
3180             TidyTabSize, 0,
3181             "Diese Option legt die Anzahl der Spalten fest, die Tidy zwischen aufeinanderfolgenden "
3182             "Tabulatorzeichen vorsieht. Damit werden beim Lesen der Eingabe Tabulatoren in Leerzeichen umgewandelt. "
3183             },
3184             {/* Important notes for translators:
3185             - Use only , , , , and
3186            
.
3187             - Entities, tags, attributes, etc., should be enclosed in .
3188             - Option values should be enclosed in .
3189             - It's very important that
be self-closing!
3190             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3191             be translated. */
3192             /* option-name: uppercase-attributes */
3193             TidyUpperCaseAttrs, 0,
3194             "Diese Option legt fest, ob Tidy Attributnamen groß oder klein schreiben "
3195             "soll. "
3196             "
"
3197             "Wenn der Wert no ist, werden Attributnamen klein geschrieben, "
3198             "mit ja dagegen groß; der Wert preserve bewirkt, dass "
3199             "an der aktuellen Schreibweise keine Änderung vorgenommen wird. "
3200             "
"
3201             "Bei XML-Ausgabe wird stets die ursprüngliche Schreibung bewahrt. "
3202             },
3203             {/* Important notes for translators:
3204             - Use only , , , , and
3205            
.
3206             - Entities, tags, attributes, etc., should be enclosed in .
3207             - Option values should be enclosed in .
3208             - It's very important that
be self-closing!
3209             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3210             be translated. */
3211             TidyUpperCaseTags, 0,
3212             "Diese Option legt fest, ob Tidy Tagnamen groß oder klein schreibt. "
3213             "
"
3214             "Der Standardwert ist no und setzt kleingeschriebene Tagnamen durch, "
3215             "außer für die XML-Ausgabe, wo die originale Schreibweise beibehalten wird. "
3216             },
3217             {/* Important notes for translators:
3218             - Use only , , , , and
3219            
.
3220             - Entities, tags, attributes, etc., should be enclosed in .
3221             - Option values should be enclosed in .
3222             - It's very important that
be self-closing!
3223             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3224             be translated. */
3225             /* option-name: custom-tags */
3226             TidyUseCustomTags, 0,
3227             "Diese Option aktiviert die Verwendung von Tags für autonome, benutzerdefinierte "
3228             "Elemente, z.B. <flag-icon> mit Tidy. Solche benutzerdefinierten "
3229             "Tags werden eliminiert, wenn der Wert der Option no lautet. "
3230             "Andere Einstellungen - "
3231             "blocklevel, empty, inline, und pre "
3232             "bewirken die entsprechende, einheitliche Behandlung aller benutzerdefinierten "
3233             "Tags. "
3234             "
"
3235             "Die Optionen "
3236             "new-blocklevel-tags, new-empty-tags, new-inline-tags "
3237             "oder new-pre-tags haben Vorrang vor dieser Option. Das kann nützlich sein, "
3238             "wenn Sie verschiedene Arten von benutzerdefinierten Tags einsetzen. "
3239             "
"
3240             "Bei Aktivierung dieser Option werden die betroffenen, öffnenden Tags in Ihrem Dokument "
3241             "während der Vorverarbeitungsphase erkannt, korrespondierende, schließende Tags entsprechend; "
3242             "unbekannte, schließende Tags werden beseitigt. "
3243             },
3244             {/* Important notes for translators:
3245             - Use only , , , , and
3246            
.
3247             - Entities, tags, attributes, etc., should be enclosed in .
3248             - Option values should be enclosed in .
3249             - It's very important that
be self-closing!
3250             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3251             be translated. */
3252             /* option-name: vertical-space */
3253             TidyVertSpace, 0,
3254             "Diese Option legt fest, ob Tidy einige zusätzliche Leerzeilen "
3255             "zur besseren Lesbarkeit einfügen soll. "
3256             "
"
3257             "Der Standardwert ist no. "
3258             "
"
3259             "Bei Verwendung von auto, eliminiert Tidy nahezu alle Zeilenumbrüche. "
3260             },
3261             {/* Important notes for translators:
3262             - Use only , , , , and
3263            
.
3264             - Entities, tags, attributes, etc., should be enclosed in .
3265             - Option values should be enclosed in .
3266             - It's very important that
be self-closing!
3267             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3268             be translated. */
3269             /* option-name: warn-proprietary-attributes */
3270             TidyWarnPropAttrs, 0,
3271             "Diese Option bestimmt, ob Tidy bei benutzerdefinierten Attributen Warnungen ausgibt. "
3272             },
3273             {/* Important notes for translators:
3274             - Use only , , , , and
3275            
.
3276             - Entities, tags, attributes, etc., should be enclosed in .
3277             - Option values should be enclosed in .
3278             - It's very important that
be self-closing!
3279             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3280             be translated. */
3281             TidyWord2000, 0,
3282             "Diese Option bestimmt, ob Tidy große Anstrengungen unternehmen soll, "
3283             "um all den zusätzlichen Code, den Microsoft Word 2000 beim Speichern als \"Web-Seite\" einfügt, "
3284             "wieder zu entfernen. Eingebettete Bilder oder VML werden nicht behandelt. "
3285             "
"
3286             "Sie sollten in Betracht ziehen, beim Auslösen der Funktion Speichern als..., "
3287             "dem Dateityp Web-Seite, gefiltert Vorrang zu geben."
3288             },
3289             {/* Important notes for translators:
3290             - Use only , , , , and
3291            
.
3292             - Entities, tags, attributes, etc., should be enclosed in .
3293             - Option values should be enclosed in .
3294             - It's very important that
be self-closing!
3295             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3296             be translated. */
3297             TidyWrapAsp, 0,
3298             "Mit dieser Option können Sie festlegen, ob Tidy Text innerhalb von "
3299             "ASP Pseudoelementen, wie <% ... %>, umbrechen soll. "
3300             },
3301             {/* Important notes for translators:
3302             - Use only , , , , and
3303            
.
3304             - Entities, tags, attributes, etc., should be enclosed in .
3305             - Option values should be enclosed in .
3306             - It's very important that
be self-closing!
3307             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3308             be translated. */
3309             /* option-name: wrap-attributes */
3310             TidyWrapAttVals, 0,
3311             "Diese Option legt fest, ob Tidy Attributwerte umbrechen soll, was bedeutet, "
3312             "dass Tidy Zeilenumbrüche einfügt, wo der Wert eines Attributs die Zeile so "
3313             "verlängert, dass sie über die Weite hinausragt, die mit wrap "
3314             "eingestellt wurde."
3315             "
"
3316             "Beachten Sie, dass diese Option unabhängig von "
3317             "wrap-script-literals eingesetzt werden kann. "
3318             "Standardmäßig ersetzt Tidy Zeilenumbrüche oder Tabulatoren durch einzelne Leerzeichen "
3319             "und aufeinanderfolgende Leerzeichen durch ein einziges. "
3320             "
"
3321             "Um Tidy dazu zu zwingen, die orginalen Literalwerte aller Attribute zu erhalten "
3322             "und sicherzustellen, dass Leerzeichen in Attributwerten unangetastet bleiben, "
3323             "setzen Sie den Wert von literal-attributes auf yes. "
3324             },
3325             {/* Important notes for translators:
3326             - Use only , , , , and
3327            
.
3328             - Entities, tags, attributes, etc., should be enclosed in .
3329             - Option values should be enclosed in .
3330             - It's very important that
be self-closing!
3331             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3332             be translated. */
3333             TidyWrapJste, 0,
3334             "Mit dieser Option wird bestimmt, ob Tidy den Text innerhalb von "
3335             "JSTE Peseudo-Elementen, wie <# ... #>, umbrechen soll. "
3336             },
3337             {/* Important notes for translators:
3338             - Use only , , , , and
3339            
.
3340             - Entities, tags, attributes, etc., should be enclosed in .
3341             - Option values should be enclosed in .
3342             - It's very important that
be self-closing!
3343             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3344             be translated. */
3345             TidyWrapLen, 0,
3346             /* option-name: wrap */
3347             "Diese Option legt den rechten Rand für Zeilenumbrüche fest. "
3348             "
"
3349             "Tidy wird versuchen, Zeilen so umzubrechen, dass sie diese Länge nicht überschreiten. "
3350             "
"
3351             "Setzen Sie wrap auf 0 (Null), wenn Sie Zeilenumbrüche unterbinden möchten. "
3352             },
3353             {/* Important notes for translators:
3354             - Use only , , , , and
3355            
.
3356             - Entities, tags, attributes, etc., should be enclosed in .
3357             - Option values should be enclosed in .
3358             - It's very important that
be self-closing!
3359             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3360             be translated. */
3361             TidyWrapPhp, 0,
3362             "Diese Option legt fest, ob Tidy nach PHP Pseudoelementen, "
3363             "wie <?php ... ?> einen Zeilenumbruch einfügen soll. "
3364             },
3365             {/* Important notes for translators:
3366             - Use only , , , , and
3367            
.
3368             - Entities, tags, attributes, etc., should be enclosed in .
3369             - Option values should be enclosed in .
3370             - It's very important that
be self-closing!
3371             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3372             be translated. */
3373             TidyWrapScriptlets, 0,
3374             /* option-name: wrap-script-literals */
3375             "Mit dieser Option wird bestimmt, ob Tidy Literale, die in Skript-Attributen "
3376             "auftauchen, umbrechen soll. "
3377             },
3378             {/* Important notes for translators:
3379             - Use only , , , , and
3380            
.
3381             - Entities, tags, attributes, etc., should be enclosed in .
3382             - Option values should be enclosed in .
3383             - It's very important that
be self-closing!
3384             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3385             be translated. */
3386             /* option-name: wrap-sections
3387             *
3388             * ATTN. A section-tag exists in maybe-HTML. (5)
3389             *
3390             */
3391             TidyWrapSection, 0,
3392             "Diese Option legt fest, ob Tidy Text in Datenbereichen wie "
3393             "<![ ... ]> umbrechen soll. "
3394             },
3395             {/* Important notes for translators:
3396             - Use only , , , , and
3397            
.
3398             - Entities, tags, attributes, etc., should be enclosed in .
3399             - Option values should be enclosed in .
3400             - It's very important that
be self-closing!
3401             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3402             be translated. */
3403             TidyWriteBack, 0,
3404             "Mit dieser Option wird bestimmt, ob Tidy den bereinigten Auszeichnungscode "
3405             "in die selbe Datei schreiben soll, aus der er gelesen worden ist. "
3406             "
"
3407             "Sie sollten Kopien wichtiger Dateien anlegen, bevor Sie sie bereinigen, da, "
3408             "in Ausnahmefällen, das Ergebnis nicht Ihren Erwartungen entsprechen kann. "
3409             },
3410             {/* Important notes for translators:
3411             - Use only , , , , and
3412            
.
3413             - Entities, tags, attributes, etc., should be enclosed in .
3414             - Option values should be enclosed in .
3415             - It's very important that
be self-closing!
3416             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3417             be translated. */
3418             /* option-name: output-xhtml */
3419             TidyXhtmlOut, 0,
3420             "Diese Option legt fest, ob Tidy die formatierte Ausgabe als XHTML schreiben "
3421             "soll. "
3422             "
"
3423             "Damit setzt Tidy den zu XHTML passenden DOCTYPE und Namensraum und wird "
3424             "eine korrigierte Ausgabe liefern, unabhängig von anderen Eingaben. "
3425             "
"
3426             "In XHTML können Entities benannt oder nummerisch sein, unabhängig von der "
3427             "Einstellung von numeric-entities. "
3428             "
"
3429             "Die Groß- und Kleinschreibung von Tags und Attributen im Eingangsdokument "
3430             "wird beibehalten, unabhängig von den Werten anderer Optionen. "
3431             },
3432             {/* Important notes for translators:
3433             - Use only , , , , and
3434            
.
3435             - Entities, tags, attributes, etc., should be enclosed in .
3436             - Option values should be enclosed in .
3437             - It's very important that
be self-closing!
3438             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3439             be translated. */
3440             /* option-name: add-xml-decl */
3441             TidyXmlDecl, 0,
3442             "Diese Option bestimmt, ob Tidy eine XML-Deklaration einfügen soll, "
3443             "wenn XML oder XHTML ausgegeben wird. "
3444             "
"
3445             "Beachten Sie, dass die Option ignoriert wird, wenn in der Eingabe bereits eine "
3446             "solche Deklaration <?xml ... ?> enthalten ist. "
3447             "
"
3448             "Sollte die Zeichenkodierung für die Ausgabe eine andere sein als "
3449             "ascii, keine aus der utf* Familie und auch nicht "
3450             "raw, wird die Deklaration ohnehin immer eingefügt, wie vom "
3451             "XML Standard gefordert. "
3452             },
3453             {/* Important notes for translators:
3454             - Use only , , , , and
3455            
.
3456             - Entities, tags, attributes, etc., should be enclosed in .
3457             - Option values should be enclosed in .
3458             - It's very important that
be self-closing!
3459             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3460             be translated. */
3461             /* option-name: output-xml */
3462             TidyXmlOut, 0,
3463             "Diese Option bestimmt, ob Tidy eine formatierte Ausgabe als XML schreiben "
3464             "soll. "
3465             "
"
3466             "Alle Entitäten, die in XML 1.0 nicht definiert sind, werden numerisch geschrieben, "
3467             "damit sie von einem XML Parser interpretiert werden können. "
3468             "
"
3469             "Die Groß- und Kleinschreibung von Tags und Attributen wird aus der Eingabe "
3470             "übernommen, unabhängig von anderen Einstellungen."
3471             },
3472             {/* Important notes for translators:
3473             - Use only , , , , and
3474            
.
3475             - Entities, tags, attributes, etc., should be enclosed in .
3476             - Option values should be enclosed in .
3477             - It's very important that
be self-closing!
3478             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3479             be translated. */
3480             /* option-name: assume-xml-procins */
3481             TidyXmlPIs, 0,
3482             "Diese Option bestimmt, ob Tidy bei der Auswertung von Verarbeitungsanweisungen "
3483             "auf ?> als Endezeichen bestehen soll, anstelle von >. "
3484             "
"
3485             "Diese Option wird automatisch gesetzt, wenn es sich bei der Eingabe um XML handelt. "
3486             },
3487             {/* Important notes for translators:
3488             - Use only , , , , and
3489            
.
3490             - Entities, tags, attributes, etc., should be enclosed in .
3491             - Option values should be enclosed in .
3492             - It's very important that
be self-closing!
3493             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3494             be translated. */
3495             /* option-name: add-xml-space */
3496             TidyXmlSpace, 0,
3497             "Diese Option bestimmt, ob Tidy beim Generieren von XML xml:space=\"preserve\" "
3498             "in Elementen wie <pre>, <style> und "
3499             "<script> einfügen soll. "
3500             "
"
3501             "Dies ist notwendig, wenn ohne Zugriff auf die DTD, Leerzeichen in solchen Elementen richtig interpretiert werden soll. "
3502             },
3503             {/* Important notes for translators:
3504             - Use only , , , , and
3505            
.
3506             - Entities, tags, attributes, etc., should be enclosed in .
3507             - Option values should be enclosed in .
3508             - It's very important that
be self-closing!
3509             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3510             be translated. */
3511             /* option-name: input-xml */
3512             TidyXmlTags, 0,
3513             "Diese Option legt fest, ob Tidy eher den XML-Parser als den fehlerkorrigierenden "
3514             "HTML-Parser einsetzen soll. "
3515             },
3516             {/* Important notes for translators:
3517             - Use only , , , , and
3518            
.
3519             - Entities, tags, attributes, etc., should be enclosed in .
3520             - Option values should be enclosed in .
3521             - It's very important that
be self-closing!
3522             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3523             be translated. */
3524             /* option-name: add-meta-charset */
3525             TidyMetaCharset, 0,
3526             "Mit diser Option werden ein <meta> Element "
3527             "und ein charset Attribut mit der Zeichenkodierung des Dokuments eingefügt. "
3528             "Setzen Sie die Option auf den Wert yes, um die Funktion zu aktivieren. "
3529             },
3530             {/* Important notes for translators:
3531             - Use only , , , , and
3532            
.
3533             - Entities, tags, attributes, etc., should be enclosed in .
3534             - Option values should be enclosed in .
3535             - It's very important that
be self-closing!
3536             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3537             be translated. */
3538             /* option-name: unknown */
3539             TidyShowMetaChange, 0,
3540             "Durch das Setzen dieser Option auf yes setzt Tidy eine Meldung ab, wann immer "
3541             "das content Attribut einer Zeichensatzdeklaration im Meta-Tag "
3542             "geändert wird, um sie der Kodierung des Dokuments anzupassen."
3543             },
3544             {/* Important notes for translators:
3545             - Use only , , , , and
3546            
.
3547             - Entities, tags, attributes, etc., should be enclosed in .
3548             - Option values should be enclosed in .
3549             - It's very important that
be self-closing!
3550             - The strings "Tidy" and "HTML Tidy" are the program name and must not
3551             be translated. */
3552             /* option-name: fix-style-tags */
3553             TidyStyleTags, 0,
3554             "Diese Option bestimmt, ob Tidy alle style-Tags in den Dokumentkopf "
3555             "verschieben soll. "
3556             "This option specifies if Tidy should move all style tags to the "
3557             "head of the document. "
3558             },
3559              
3560              
3561             /********************************************
3562             ** Message Severity Level
3563             ** @remark enum source TidyConfigCategory
3564             ********************************************/
3565             { TidyInfo, 0, "Info: " },
3566             { TidyWarning, 0, "Warnung: " },
3567             { TidyConfig, 0, "Config: " },
3568             { TidyAccess, 0, "Zugriff: " },
3569             { TidyError, 0, "Fehler: " },
3570             { TidyBadDocument, 0, "Dokument: " },
3571             { TidyFatal, 0, "Panik: " },
3572             { TidyDialogueSummary, 0, "Resümee: " },
3573             { TidyDialogueInfo, 0, "Information: " },
3574             { TidyDialogueFootnote, 0, "Fußnote: " },
3575            
3576            
3577             /********************************************
3578             ** Miscellaneous Strings
3579             ** @remark enum source TidyStrings
3580             ** @remark enum generator FOREACH_MSG_MISC
3581             ********************************************/
3582             { LINE_COLUMN_STRING, 0, "Zeile %d Spalte %d - " },
3583             { FN_LINE_COLUMN_STRING, 0, "%s: Zeile %d Spalte %d - " },
3584             {/* For example, "discarding invalid UTF-16 surrogate pair" */
3585             STRING_DISCARDING, 0, "verwerfe"
3586             },
3587             { STRING_ERROR_COUNT_ERROR, 0, "Fehler" },
3588             { STRING_ERROR_COUNT_ERROR, 1, "Fehler" },
3589             { STRING_ERROR_COUNT_WARNING, 0, "Warnung" },
3590             { STRING_ERROR_COUNT_WARNING, 1, "Warnungen" },
3591             { STRING_HELLO_ACCESS, 0, "\nTests der Barrierefreiheit:\n" },
3592             {/* This is not a formal name and can be translated. */
3593             STRING_HTML_PROPRIETARY, 0, "HTML Proprietär"
3594             },
3595             { STRING_XML_DECLARATION, 0, "XML Deklaration" },
3596             { STRING_PLAIN_TEXT, 0, "Klartext" },
3597             {/* For example, "replacing invalid UTF-8 bytes" */
3598             STRING_REPLACING, 0, "ersetze"
3599             },
3600             {/* For example, "you should avoid using the specified encoding." */
3601             STRING_SPECIFIED, 0, "genannte"
3602             },
3603             { TIDYCUSTOMNO_STRING, 0, "nein" },
3604             { TIDYCUSTOMBLOCKLEVEL_STRING, 0, "Blockniveau" },
3605             { TIDYCUSTOMEMPTY_STRING, 0, "leer" },
3606             { TIDYCUSTOMINLINE_STRING, 0, "inline" },
3607             { TIDYCUSTOMPRE_STRING, 0, "pre" },
3608            
3609            
3610             /********************************************
3611             ** Footnote Strings
3612             ** @remark enum source TidyStrings
3613             ** @rename enum generator FOREACH_FOOTNOTE_MSG
3614             ********************************************/
3615             {/* This console output should be limited to 78 characters per line. */
3616             TEXT_HTML_T_ALGORITHM, 0,
3617             "\n"
3618             " - Zunächst suche links von der Zellenposition nach weiteren Zeilenköpfen.\n"
3619             " - Dann suche oberhalb nach Spaltenköpfen.\n"
3620             " - Die Suche in der angegebenen Richtung wird am Tabellenrand beendet\n"
3621             " oder wenn eine Datenzelle hinter einer Kopfzelle gefunden wird\n"
3622             " - Zeilenköpfe werden in die Liste eingefügt in der Reihenfolge Ihres\n"
3623             " Erscheinens in der Tabelle. \n"
3624             " - Bei links-nach-rechts Tabellen werden Kopfzellen von links nach rechts\n"
3625             " eingefügt"
3626             " - Spaltenköpfe werden nach Zeilenköpfenn eingefügt, in der Reihenfolge\n"
3627             " ihres Erscheinens in der Tabelle, von Oben nach Unten. \n"
3628             " - Wenn eine Kopfzelle ein Attribut headers besitzt, dann werden die\n"
3629             " so bezeichneten Zellen in die Liste eingefügt und die Suche in der\n"
3630             " aktuellen Richtung eingestellt.\n"
3631             " TD-Zellen, die das Attribut axis besitzen, werden ebenfalls als\n"
3632             " Kopfzellen behandelt.\n"
3633             },
3634             {/* This console output should be limited to 78 characters per line.
3635             - %s represents a string-encoding name which may be localized in your language. */
3636             TEXT_VENDOR_CHARS, 0,
3637             "Es ist unwahrscheinlich, dass händlerspezifische, systemabhängige\n"
3638             "Zeichenkodierungen im World Wide Web ausreichend zuverlässig\n"
3639             "funktionieren; Sie sollten die Vewendung der Zeichenkodieriung %s\n"
3640             "vermeiden und statt dessen benannte Entitäten, z.B. ™\n"
3641             "verwenden.\n"
3642             },
3643             {/* This console output should be limited to 78 characters per line.
3644             - %s represents a string-encoding name which may be localized in your language.
3645             - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated. */
3646             TEXT_SGML_CHARS, 0,
3647             "Die Zeichencodes zwischen 128 und 159 (U+0080 bis U+009F) sind in HTMl nicht\n"
3648             "erlaubt; selbst wenn sie es wären, wären sie wohl nicht-druckbare\n"
3649             "Steuerzeichen. Tidy vermutete dass Sie ein Zeichen mit dem gleichen Bytewert\n"
3650             "in der Kodierung %s meinten und hat darum die Ersetzung durch das\n"
3651             "Unicode-Äquivalent vorgenommen.\n"
3652             },
3653             {/* This console output should be limited to 78 characters per line. */
3654             TEXT_INVALID_UTF8, 0,
3655             "Zeichencodes für UTF-8 müssen zwischen U+000 und U+10FFFF liegen.\n"
3656             "Die UTF-8 Definition erlaubt im Anhang D zu ISO/IEC 10646-1:2000\n"
3657             "auch die Benutzung von 6-Byte Sequenzen für die Kodierung von\n"
3658             "Buchstaben die außerhalb des Unicode Zeichensatzes liegen;\n"
3659             "Diese fünf- und sechs Byte langen Sequencen sind unerlaubt für\n"
3660             "UTF-8 als Transformation von Unicode Zeichen. ISO/IEC 10646\n"
3661             "erlaubt kein Mapping nicht paarweise zugeordneter Ersatzzeichen,\n"
3662             "auch nicht U+FFFE oder U+FFFF (es erlaubt aber andere\n"
3663             "nichtdruckbare Zeichen). Mehr Informationen, erhalten Sie auf\n"
3664             "http://www.unicode.org/ und http://www.cl.cam.ac.uk/~mgk25/unicode.html\n"
3665             },
3666             {/* This console output should be limited to 78 characters per line. */
3667             TEXT_INVALID_UTF16, 0,
3668             "Zeichencodes für UTF-16 müssen im Breich U+0000 bis U+10FFFF liegen.\n"
3669             "Die UTF-16 Definition im Anhang C zu ISO/IEC 10646-1:2000 erlaubt\n"
3670             "kein Mapping nicht paarweise zugeordneter Ersatzzeichen. Weitere\n"
3671             "Informationen finden Sie auf\n"
3672             "http://www.unicode.org/ und http://www.cl.cam.ac.uk/~mgk25/unicode.html\n"
3673             },
3674             {/* This console output should be limited to 78 characters per line.
3675             - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated. */
3676             TEXT_INVALID_URI, 0,
3677             "URIs müssen richtig mit Escape-Sequenzen ausgestatten werden\n"
3678             "und darf keine unmaskierten Zeichen unter U+0021 einschließlich,\n"
3679             "des Leerzeichens und keine Zeichen über U+007E. Tidy fügt,\n"
3680             "Escape-Sequenzen in URIs ein wie es von HTML 4.01 im Abschnitt\n"
3681             "B.2.1 der Spezifikation und XML 1.0 im Abschnitt 4.2.2 empfohlen\n"
3682             "ist. Einige Endbenutzerprogramme verwenden andere Algorithmen\n"
3683             "für Escape-Sequenzen in solchen URIs und die Funktion manche\n"
3684             "server-seitiger Skripte ist davon abhängig. Wenn Sie damit nicht\n"
3685             "einverstanden sind, müssen Sie die Escape-Sequenzuen selbst\n"
3686             "schreiben. Dazu gibt es mehr Informationen auf\n"
3687             "http://www.w3.org/International/O-URL-and-ident.html\n"
3688             },
3689             {/* This console output should be limited to 78 characters per line. */
3690             TEXT_BAD_FORM, 0,
3691             "Es ist vielleicht nötig eines-, oder beide Tags
und
\n"
3692             "zu verschieben. HTML-Elemente sollten richtig verschachtelt sein und\n"
3693             "form-Elemente sind keine Ausnahme. Zum Beispiel sollten Sie das\n"
3694             "
Tag nicht in eine Tabellenzelle und
in eine andere\n"
3695             "schreiben. Wenn
einer Tabelle vorangeht, kann
nicht\n"
3696             "innerhalb der Tabelle erscheinen! Bachten Sie auch, dass ein\n"
3697             "Formular nicht mit einem anderen verschachtelt werden kann."
3698             },
3699             {/* This console output should be limited to 78 characters per line. */
3700             TEXT_BAD_MAIN, 0,
3701             "Nur ein einziges
Element ist in einem Dokument erlaubt.\n"
3702             "Weitere
Elemente wurden verworfen, was das Dokument\n"
3703             "ungültig machen kann.\n"
3704             },
3705             {/* This console output should be limited to 78 characters per line. */
3706             TEXT_M_SUMMARY, 0,
3707             "Das summary-Attribut sollte in Tabellen verwendet werden, \n"
3708             "um die Tabellenstruktur zu beschreiben. Es ist sehr hilfreich\n"
3709             "für Leute, die nicht-optische Browser verwenden. Die Attribute\n"
3710             "scope und header in Tabellenzellen sind nützlich, um zu\n"
3711             "präzisieren, welcher Tabellenkopf zu welcher Tabellenzelle\n"
3712             "gehört, was nicht-optischen Browsern ermöglicht, sinnvollen\n"
3713             "Kontext zu jeder Zelle zu liefern.\n"
3714             },
3715             {/* This console output should be limited to 78 characters per line. */
3716             TEXT_M_IMAGE_ALT, 0,
3717             "Das alt-Attribut sollte für die Kurzbeschreibung eines Bildes\n"
3718             "verwendet werden; für längere Beschreibungen ist das longdesc-\n"
3719             "Attribut gedacht, das die URL zur Beschreibung enthält.\n"
3720             "Diese Details helfen Menschen, die nicht-grafische Browser verwenden.\n"
3721             },
3722             {/* This console output should be limited to 78 characters per line. */
3723             TEXT_M_IMAGE_MAP, 0,
3724             "Geben Sie client-seitigen Vorrang vor server-seitigen Image maps\n"
3725             "weil letztere für Menschen mit nicht-grafischen Browsern unzugänglich\n"
3726             "sind. Außerdem werden client-seitige maps leichter erzeugt und\n"
3727             "sind reaktiver."
3728             },
3729             {/* This console output should be limited to 78 characters per line. */
3730             TEXT_M_LINK_ALT, 0,
3731             "Im Zusammenhang mit client-seitigen Image Maps müssen Sie das\n"
3732             "alt-Attribut mit einer textuellen Beschreibung des Links\n"
3733             "verwenden, für Leute, die nicht-grafische Browser benutzen.\n"
3734             },
3735             {/* This console output should be limited to 78 characters per line. */
3736             TEXT_USING_FRAMES, 0,
3737             "Seiten, die mit Frames gestaltet werden, stellen ein Problem dar\n"
3738             "für Leute, die entweder blind sind oder Browser verwenden, die\n"
3739             "Frames gar nicht unterstützen. Eine Frame-basierte Seite sollte\n"
3740             "stets über ein alternatives Layout innerhalb des NOFRAMES\n"
3741             "Elements verfügen."
3742             },
3743             {/* This console output should be limited to 78 characters per line. */
3744             FOOTNOTE_TRIM_EMPTY_ELEMENT, 0,
3745             "Eines oder mehrere leere Elemente waren im Quelldokument vorhanden,\n"
3746             "wurden aber bei der Ausgabe verworfen. Sollten diese Element für Sie\n"
3747             "wichtig sein oder wenn Sie ein anderes Vorgehen wünschen,\n"
3748             "ziehen Sie in Betracht, die Option \"drop.empty-elements\" auf\n"
3749             "no zu setzen.\n"
3750             },
3751             {/* This console output should be limited to 78 characters per line.
3752             - The URL should not be translated unless you find a matching URL in your language. */
3753             TEXT_ACCESS_ADVICE1, 0,
3754             "Weitere Ratschläge zur Barrierefreiheit finden Sie auf\n"
3755             "http://www.w3.org/WAI/GL."
3756             },
3757             {/* This console output should be limited to 78 characters per line.
3758             - The URL should not be translated unless you find a matching URL in your language. */
3759             TEXT_ACCESS_ADVICE2, 0,
3760             "Weitere Ratschläge zur Barrierefreiheit finden Sie auf\n"
3761             "http://www.w3.org/WAI/GL und http://www.html-tidy.org/accessibility/."
3762             },
3763             {/* This console output should be limited to 78 characters per line. */
3764             TEXT_USING_LAYER, 0,
3765             "Es wird empfohlen, dem Positionierungsmechanismus von Cascading\n"
3766             "Style Sheets (CSS) Vorrang vor dem proprietären Element \n"
3767             "zu geben, weil LAYER nur beschränkt unterstützt wird."
3768             },
3769             {/* This console output should be limited to 78 characters per line. */
3770             TEXT_USING_SPACER, 0,
3771             "Es wird empfohlen, CSS zur Kontrolle von Leerraum zu verwenden,\n"
3772             "z.B. für Einrückungen, Ränder und Abständen.\n"
3773             "Das proprietäre Element wird nur beschränkt unterstützt.\n"
3774             },
3775             {/* This console output should be limited to 78 characters per line. */
3776             TEXT_USING_FONT, 0,
3777             "Es wird empfohlen, CSS zur Festlegung von Schriften und\n"
3778             "Schrifteigenschaften zu verwenden, sie Schriftgrad und -Farbe.\n"
3779             "Damit wird die Größe der HTML-Datei verringert und sie ist,\n"
3780             "verglichen zum -Element, leichter zu warten.\n"
3781             },
3782             {/* This console output should be limited to 78 characters per line. */
3783             TEXT_USING_NOBR, 0,
3784             "Es wird empfohlen, CSS zur Kontrolle der Zeilenumbrüche zu\n"
3785             "verwenden, insbesondere \"white-space: nowrap\" um Zeilenumbrüche\n"
3786             "in einem Element zu verhindern, anstelle von ....\n"
3787             },
3788             {/* This console output should be limited to 78 characters per line. */
3789             TEXT_USING_BODY, 0,
3790             "Es wird empfohlen, CSS zur Festlegung der Farben von Seiten und\n"
3791             "Links zu verwenden.\n"
3792             },
3793            
3794             /********************************************
3795             ** Miscellaneous Dialogue Strings
3796             ** @remark enum source TidyStrings
3797             ** @rename enum generator FOREACH_DIALOG_MSG
3798             ********************************************/
3799             { STRING_CONTENT_LOOKS, 0, "Dokumentinhalt scheint %s zu sein" },
3800             { STRING_DOCTYPE_GIVEN, 0, "angegebener Doctype ist \"%s\"" },
3801             {/* The strings "Tidy" and "HTML Tidy" are the program name and must not be translated. */
3802             STRING_ERROR_COUNT, 0, "Tidy hat %u %s und %u %s gefunden!\n"
3803             },
3804             {/* This console output should be limited to 78 characters per line.
3805             - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated. */
3806             STRING_NEEDS_INTERVENTION, 0,
3807             "Dieses Dokument hat Fehler, die korrigiert werden müssen,\n"
3808             "bevor HTML Tidy eine bereinigte Version generieren kann.\n"
3809             },
3810             { STRING_NO_ERRORS, 0, "Es wurden keine Warnungen oder Fehler gefunden.\n" },
3811             { STRING_NO_SYSID, 0, "Kein System-Identifikator im übermittelten doctype" },
3812             { STRING_NOT_ALL_SHOWN, 0, "Tidy hat %u %s und %u %s gefunden! \n"
3813             "Nicht alle Warnungen oder Fehler wurden angezeigt.\n" },
3814             {/* This console output should be limited to 78 characters per line.
3815             - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated. */
3816             TEXT_GENERAL_INFO, 0,
3817             "Über HTML Tidy: https://github.com/htacg/tidy-html5\n"
3818             "Fehlerberichte und Kommentare (in English):\n"
3819             "\thttps://github.com/htacg/tidy-html5/issues\n"
3820             "Offizielle Mailing-Liste:\n"
3821             "\thttps://lists.w3.org/Archives/Public/public-htacg/\n"
3822             "Neueste HTML Spezifikation:\n"
3823             "\thttp://dev.w3.org/html5/spec-author-view/\n"
3824             "Validieren Sie Ihre HTML-Dokumente:\n"
3825             "\tttp://validator.w3.org/nu/\n"
3826             "Setzen Sie sich für den Eintritt Ihrer Firma ins W3C ein:\n"
3827             "\thttp://www.w3.org/Consortium\n"
3828             },
3829             {/* This console output should be limited to 78 characters per line.
3830             - The strings "Tidy" and "HTML Tidy" are the program name and must not be translated.
3831             - Don't terminate the last line with a newline. */
3832             TEXT_GENERAL_INFO_PLEA, 0,
3833             "Sprechen Sie eine andere Sprache als Englisch oder eine andere Variante\n"
3834             "von Englisch? Überlegen Sie, ob Sie uns helfen möchten, HTML Tidy zu\n"
3835             "übersetzen. Details finden Sie auf\n"
3836             "https://github.com/htacg/tidy-html5/blob/master/README/LOCALIZE.md"
3837             },
3838            
3839              
3840             /********************************************
3841             ** Report Output
3842             ** @remark enum source TidyStrings
3843             ** @rename enum generator FOREACH_REPORT_MSG
3844             ********************************************/
3845             { ADDED_MISSING_CHARSET, 0, "Fehlendes wurde in %s hinzugefügt" },
3846             { ANCHOR_NOT_UNIQUE, 0, "%s Verweisanker \"%s\" ist bereits definiert" },
3847             { ANCHOR_DUPLICATED, 0, "impliziter %s Anker \"%s\" von Tidy dupliziert." },
3848             { APOS_UNDEFINED, 0, "benannte Entität ' nur in XML/XHTML definiert" },
3849             { ATTR_VALUE_NOT_LCASE, 0, "%s Attributwert \"%s\" muss für XHTML klein geschrieben sein" },
3850             { ATTRIBUTE_IS_NOT_ALLOWED, 0, "%s Attribut \"is\" nicht in autonomen, benutzerdefnierten Tags erlaubt." },
3851             { ATTRIBUTE_VALUE_REPLACED, 0, "%s Attribut \"%s\", falscher Wert \"%s\" ersetzt" },
3852             { BACKSLASH_IN_URI, 0, "%s URI Referenz enthält Backslash. Eingabefehler?" },
3853             { BAD_ATTRIBUTE_VALUE_REPLACED, 0, "%s Attribut \"%s\" hatte den ungültigen Wert \"%s\" und wurde ersetzt" },
3854             { BAD_ATTRIBUTE_VALUE, 0, "%s Attribut \"%s\" hat den ungültigen Wert \"%s\"" },
3855             { BAD_CDATA_CONTENT, 0, "'<' + '/' + Zeichen hier nicht erlaubt" },
3856             { BAD_SUMMARY_HTML5, 0, "Das summary Attribute im Element %s ist in HTML5 obsolet" },
3857             { BAD_SURROGATE_LEAD, 0, "Vorderes (niederes) Surrogat-Paar U+%04X, ohne vordere (obere) Entität, durch U+FFFD ersetzt." },
3858             { BAD_SURROGATE_PAIR, 0, "Unzulässiges Surrogat-Paar U+%04X:U+%04X wurde durch U+FFFD ersetzt." },
3859             { BAD_SURROGATE_TAIL, 0, "Vorangestelltes (oberes) Surrogat-Paar U+%04X, ohne anschließennde (niedere) Entität, durch U+FFFD ersetzt." },
3860             { CANT_BE_NESTED, 0, "%s kann nicht verschachtelt sein" },
3861             { COERCE_TO_ENDTAG, 0, "<%s> ist wahrscheinlich als gedacht" },
3862             { CONTENT_AFTER_BODY, 0, "Inhalt nach dem Ende von body" },
3863             { CUSTOM_TAG_DETECTED, 0, "Habe autonomes, benutzerdefiniertes Tag %s gefunden; Behandele als %s" },
3864             { DISCARDING_UNEXPECTED, 0, "Unerwartetes %s verworfen" },
3865             { DOCTYPE_AFTER_TAGS, 0, " ist nach Elementen nicht erlaubt" },
3866             { DUPLICATE_FRAMESET, 0, "Wiederholung des FRAMESET Elements" },
3867             { ELEMENT_NOT_EMPTY, 0, "%s Element nicht leer oder nicht geschlossen" },
3868             { ELEMENT_VERS_MISMATCH_ERROR, 0, "%s Element steht in %s nicht zur Verfügung" },
3869             { ELEMENT_VERS_MISMATCH_WARN, 0, "%s Element steht in %s nicht zur Verfügung" },
3870             { ENCODING_MISMATCH, 0, "genannte Eingabe-Kodierung (%s) stimmt nicht mit der vorgefundenen Kodierung überein (%s)" },
3871             { ESCAPED_ILLEGAL_URI, 0, "%s maskiere falsch formatierten URI Verweis" },
3872             { FILE_CANT_OPEN, 0, "Kann \"%s\" nicht öffnen\n" },
3873             { FILE_CANT_OPEN_CFG, 0, "Kann die Konfigurationsdatei \"%s\" nicht öffnen\n" },
3874             { FILE_NOT_FILE, 0, "\"%s\" ist keine Datei!\n" },
3875             { FIXED_BACKSLASH, 0, "%s Konvertiere einen Backslash im URI in Schrägstrich" },
3876             { FOUND_STYLE_IN_BODY, 0, "