2 * Copyright (C) 2005-2008 QSDN,Inc. All rights reserved.
3 * Copyright (C) 2005 Atsushi Konno All rights reserved.
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
19 tag_handlers chxj_tag_handlers[] = {
21 .type = CHXJ_SPEC_UNKNOWN,
25 .type = CHXJ_SPEC_Chtml_1_0,
26 .handler = chtml10_handler,
29 .type = CHXJ_SPEC_Chtml_2_0,
30 .handler = chtml20_handler,
33 .type = CHXJ_SPEC_Chtml_3_0,
34 .handler = chtml30_handler,
37 .type = CHXJ_SPEC_Chtml_4_0,
38 .handler = chtml30_handler,
41 .type = CHXJ_SPEC_Chtml_5_0,
42 .handler = chtml30_handler,
45 .type = CHXJ_SPEC_Chtml_6_0,
46 .handler = chtml30_handler,
49 .type = CHXJ_SPEC_Chtml_7_0,
50 .handler = chtml30_handler,
53 .type = CHXJ_SPEC_XHtml_Mobile_1_0,
54 .handler = xhtml_handler,
57 .type = CHXJ_SPEC_Hdml,
58 .handler = hdml_handler,
61 .type = CHXJ_SPEC_Jhtml,
62 .handler = jhtml_handler,
65 .type = CHXJ_SPEC_Jxhtml,
66 .handler = jhtml_handler,
69 .type = CHXJ_SPEC_HTML,
76 * It is main processing of conversion from CHTML to XXML.
80 * @param pdoc [i/o] The pointer to the XXML structure is specified.
81 * @param doc [i/o] The pointer to the XXML structure is specified.
82 * @param node [i] The pointer to a current node is specified.
83 * @param indent [i] The depth of the node processing it now is specified.
85 * @return The character string after it converts it is returned.
98 tag_handler *handlers;
101 handlers = chxj_tag_handlers[spec->html_spec_type].handler;
103 /*--------------------------------------------------------------------------*/
104 /* It is the main loop of the conversion processing. */
105 /*--------------------------------------------------------------------------*/
106 for (child = qs_get_child_node(doc,node);
108 child = qs_get_next_node(doc,child)) {
109 char *name = qs_get_node_name(doc,child);
113 /*----------------------------------------------------------------------*/
115 /*----------------------------------------------------------------------*/
116 if (strcasecmp(name, "html") == 0) {
117 if (handlers[tagHTML].start_tag_handler)
118 handlers[tagHTML].start_tag_handler(pdoc, child);
120 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
122 if (handlers[tagHTML].end_tag_handler)
123 handlers[tagHTML].end_tag_handler(pdoc, child);
125 /*----------------------------------------------------------------------*/
127 /*----------------------------------------------------------------------*/
129 if (strcasecmp(name, "head") == 0) {
130 if (handlers[tagHEAD].start_tag_handler)
131 handlers[tagHEAD].start_tag_handler(pdoc, child);
133 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
135 if (handlers[tagHEAD].end_tag_handler)
136 handlers[tagHEAD].end_tag_handler(pdoc, child);
138 /*----------------------------------------------------------------------*/
140 /*----------------------------------------------------------------------*/
142 if (strcasecmp(name, "hr") == 0) {
143 if (handlers[tagHR].start_tag_handler)
144 handlers[tagHR].start_tag_handler(pdoc, child);
146 if (handlers[tagHR].end_tag_handler)
147 handlers[tagHR].end_tag_handler(pdoc, child);
149 /*----------------------------------------------------------------------*/
151 /*----------------------------------------------------------------------*/
153 if (strcasecmp(name, "h1") == 0) {
154 if (handlers[tagH1].start_tag_handler)
155 handlers[tagH1].start_tag_handler(pdoc, child);
157 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
159 if (handlers[tagH1].end_tag_handler)
160 handlers[tagH1].end_tag_handler(pdoc, child);
162 /*----------------------------------------------------------------------*/
164 /*----------------------------------------------------------------------*/
166 if (strcasecmp(name, "h2") == 0) {
167 if (handlers[tagH2].start_tag_handler)
168 handlers[tagH2].start_tag_handler(pdoc, child);
170 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
172 if (handlers[tagH2].end_tag_handler)
173 handlers[tagH2].end_tag_handler(pdoc, child);
175 /*----------------------------------------------------------------------*/
177 /*----------------------------------------------------------------------*/
179 if (strcasecmp(name, "h3") == 0) {
180 if (handlers[tagH3].start_tag_handler)
181 handlers[tagH3].start_tag_handler(pdoc, child);
183 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
185 if (handlers[tagH3].end_tag_handler)
186 handlers[tagH3].end_tag_handler(pdoc, child);
188 /*----------------------------------------------------------------------*/
190 /*----------------------------------------------------------------------*/
192 if (strcasecmp(name, "h4") == 0) {
193 if (handlers[tagH4].start_tag_handler)
194 handlers[tagH4].start_tag_handler(pdoc, child);
196 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
198 if (handlers[tagH4].end_tag_handler)
199 handlers[tagH4].end_tag_handler(pdoc, child);
201 /*----------------------------------------------------------------------*/
203 /*----------------------------------------------------------------------*/
205 if (strcasecmp(name, "h5") == 0) {
206 if (handlers[tagH5].start_tag_handler)
207 handlers[tagH5].start_tag_handler(pdoc, child);
209 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
211 if (handlers[tagH5].end_tag_handler)
212 handlers[tagH5].end_tag_handler(pdoc, child);
214 /*----------------------------------------------------------------------*/
216 /*----------------------------------------------------------------------*/
218 if (strcasecmp(name, "h6") == 0) {
219 if (handlers[tagH6].start_tag_handler)
220 handlers[tagH6].start_tag_handler(pdoc, child);
222 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
224 if (handlers[tagH6].end_tag_handler)
225 handlers[tagH6].end_tag_handler(pdoc, child);
228 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
235 /*----------------------------------------------------------------------*/
237 /*----------------------------------------------------------------------*/
238 if (strcasecmp(name, "p") == 0) {
239 if (handlers[tagP].start_tag_handler)
240 handlers[tagP].start_tag_handler(pdoc, child);
242 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
244 if (handlers[tagP].end_tag_handler)
245 handlers[tagP].end_tag_handler(pdoc, child);
247 /*----------------------------------------------------------------------*/
249 /*----------------------------------------------------------------------*/
250 else if (strcasecmp(name, "pre") == 0) {
251 if (handlers[tagPRE].start_tag_handler)
252 handlers[tagPRE].start_tag_handler(pdoc, child);
254 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
256 if (handlers[tagPRE].end_tag_handler)
257 handlers[tagPRE].end_tag_handler(pdoc, child);
259 /*----------------------------------------------------------------------*/
261 /*----------------------------------------------------------------------*/
262 else if (strcasecmp(name, "plaintext") == 0) {
263 if (handlers[tagPLAINTEXT].start_tag_handler)
264 handlers[tagPLAINTEXT].start_tag_handler(pdoc, child);
266 if (handlers[tagPLAINTEXT].end_tag_handler)
267 handlers[tagPLAINTEXT].end_tag_handler(pdoc, child);
270 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
276 /*----------------------------------------------------------------------*/
278 /*----------------------------------------------------------------------*/
279 if (strcasecmp(name, "nobr") == 0) {
280 if (handlers[tagNOBR].start_tag_handler)
281 handlers[tagNOBR].start_tag_handler(pdoc, child);
283 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
285 if (handlers[tagNOBR].end_tag_handler)
286 handlers[tagNOBR].end_tag_handler(pdoc, child);
289 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
295 /*----------------------------------------------------------------------*/
297 /*----------------------------------------------------------------------*/
298 if (strcasecmp(name, "ul") == 0) {
299 if (handlers[tagUL].start_tag_handler)
300 handlers[tagUL].start_tag_handler(pdoc, child);
302 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
304 if (handlers[tagUL].end_tag_handler)
305 handlers[tagUL].end_tag_handler(pdoc, child);
308 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
314 /*----------------------------------------------------------------------*/
316 /*----------------------------------------------------------------------*/
317 if (strcasecmp(name, "li") == 0) {
318 if (handlers[tagLI].start_tag_handler)
319 handlers[tagLI].start_tag_handler(pdoc, child);
321 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
323 if (handlers[tagLI].end_tag_handler)
324 handlers[tagLI].end_tag_handler(pdoc, child);
327 /*----------------------------------------------------------------------*/
329 /*----------------------------------------------------------------------*/
330 if (strcasecmp(name, "legend") == 0) {
331 if (handlers[tagLEGEND].start_tag_handler)
332 handlers[tagLEGEND].start_tag_handler(pdoc, child);
334 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
336 if (handlers[tagLEGEND].end_tag_handler)
337 handlers[tagLEGEND].end_tag_handler(pdoc, child);
340 /*----------------------------------------------------------------------*/
342 /*----------------------------------------------------------------------*/
343 if (strcasecmp(name, "label") == 0) {
344 if (handlers[tagLABEL].start_tag_handler)
345 handlers[tagLABEL].start_tag_handler(pdoc, child);
347 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
349 if (handlers[tagLABEL].end_tag_handler)
350 handlers[tagLABEL].end_tag_handler(pdoc, child);
353 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
360 /*----------------------------------------------------------------------*/
362 /*----------------------------------------------------------------------*/
363 if (strcasecmp(name, "ol") == 0) {
364 if (handlers[tagOL].start_tag_handler)
365 handlers[tagOL].start_tag_handler(pdoc, child);
367 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
369 if (handlers[tagOL].end_tag_handler)
370 handlers[tagOL].end_tag_handler(pdoc, child);
373 /*----------------------------------------------------------------------*/
375 /*----------------------------------------------------------------------*/
376 if (strcasecmp(name, "option") == 0) {
377 if (handlers[tagOPTION].start_tag_handler)
378 handlers[tagOPTION].start_tag_handler(pdoc, child);
380 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
382 if (handlers[tagOPTION].end_tag_handler)
383 handlers[tagOPTION].end_tag_handler(pdoc, child);
386 /*----------------------------------------------------------------------*/
388 /*----------------------------------------------------------------------*/
389 if (strcasecmp(name, "object") == 0) {
390 /* ignore object block */
393 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
400 /*----------------------------------------------------------------------*/
402 /*----------------------------------------------------------------------*/
403 if (strcasecmp(name, "meta") == 0) {
404 if (handlers[tagMETA].start_tag_handler)
405 handlers[tagMETA].start_tag_handler(pdoc, child);
407 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
409 if (handlers[tagMETA].end_tag_handler)
410 handlers[tagMETA].end_tag_handler(pdoc, child);
412 /*----------------------------------------------------------------------*/
414 /*----------------------------------------------------------------------*/
415 else if (strcasecmp(name, "menu") == 0) {
416 if (handlers[tagMENU].start_tag_handler)
417 handlers[tagMENU].start_tag_handler(pdoc, child);
419 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
421 if (handlers[tagMENU].end_tag_handler)
422 handlers[tagMENU].end_tag_handler(pdoc, child);
424 /*----------------------------------------------------------------------*/
426 /*----------------------------------------------------------------------*/
427 else if (strcasecmp(name, "marquee") == 0) {
428 if (handlers[tagMARQUEE].start_tag_handler)
429 handlers[tagMARQUEE].start_tag_handler(pdoc, child);
431 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
433 if (handlers[tagMARQUEE].end_tag_handler)
434 handlers[tagMARQUEE].end_tag_handler(pdoc, child);
437 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
443 /*----------------------------------------------------------------------*/
445 /*----------------------------------------------------------------------*/
446 if (strlen(name) == 1) {
447 if (handlers[tagB].start_tag_handler)
448 handlers[tagB].start_tag_handler(pdoc, child);
450 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
452 if (handlers[tagB].end_tag_handler)
453 handlers[tagB].end_tag_handler(pdoc, child);
456 /*----------------------------------------------------------------------*/
458 /*----------------------------------------------------------------------*/
459 if (strcasecmp(name, "base") == 0) {
460 if (handlers[tagBASE].start_tag_handler)
461 handlers[tagBASE].start_tag_handler(pdoc, child);
463 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
465 if (handlers[tagBASE].end_tag_handler)
466 handlers[tagBASE].end_tag_handler(pdoc, child);
468 /*----------------------------------------------------------------------*/
470 /*----------------------------------------------------------------------*/
472 if (strcasecmp(name, "body") == 0) {
473 if (handlers[tagBODY].start_tag_handler)
474 handlers[tagBODY].start_tag_handler(pdoc, child);
476 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
478 if (handlers[tagBODY].end_tag_handler)
479 handlers[tagBODY].end_tag_handler(pdoc, child);
481 /*----------------------------------------------------------------------*/
483 /*----------------------------------------------------------------------*/
484 else if (strcasecmp(name, "br") == 0) {
485 if (handlers[tagBR].start_tag_handler)
486 handlers[tagBR].start_tag_handler(pdoc, child);
488 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
490 if (handlers[tagBR].end_tag_handler)
491 handlers[tagBR].end_tag_handler(pdoc, child);
493 /*----------------------------------------------------------------------*/
495 /*----------------------------------------------------------------------*/
496 else if (strcasecmp(name, "blockquote") == 0) {
497 if (handlers[tagBLOCKQUOTE].start_tag_handler)
498 handlers[tagBLOCKQUOTE].start_tag_handler(pdoc, child);
500 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
502 if (handlers[tagBLOCKQUOTE].end_tag_handler)
503 handlers[tagBLOCKQUOTE].end_tag_handler(pdoc, child);
505 /*----------------------------------------------------------------------*/
507 /*----------------------------------------------------------------------*/
508 else if (strcasecmp(name, "blink") == 0) {
509 if (handlers[tagBLINK].start_tag_handler)
510 handlers[tagBLINK].start_tag_handler(pdoc, child);
512 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
514 if (handlers[tagBLINK].end_tag_handler)
515 handlers[tagBLINK].end_tag_handler(pdoc, child);
518 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
524 /*----------------------------------------------------------------------*/
526 /*----------------------------------------------------------------------*/
527 if (strcasecmp(name, "a") == 0) {
528 if (handlers[tagA].start_tag_handler)
529 handlers[tagA].start_tag_handler(pdoc, child);
531 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
533 if (handlers[tagA].end_tag_handler)
534 handlers[tagA].end_tag_handler(pdoc, child);
537 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
543 /*----------------------------------------------------------------------*/
545 /*----------------------------------------------------------------------*/
546 if (strcasecmp(name, "font") == 0) {
547 if (handlers[tagFONT].start_tag_handler)
548 handlers[tagFONT].start_tag_handler(pdoc, child);
550 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
552 if (handlers[tagFONT].end_tag_handler)
553 handlers[tagFONT].end_tag_handler(pdoc, child);
555 /*----------------------------------------------------------------------*/
557 /*----------------------------------------------------------------------*/
559 if (strcasecmp(name, "form") == 0) {
560 if (handlers[tagFORM].start_tag_handler)
561 handlers[tagFORM].start_tag_handler(pdoc, child);
563 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
565 if (handlers[tagFORM].end_tag_handler)
566 handlers[tagFORM].end_tag_handler(pdoc, child);
568 /*----------------------------------------------------------------------*/
570 /*----------------------------------------------------------------------*/
572 if (strcasecmp(name, "fieldset") == 0) {
573 if (handlers[tagFIELDSET].start_tag_handler)
574 handlers[tagFIELDSET].start_tag_handler(pdoc, child);
576 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
578 if (handlers[tagFIELDSET].end_tag_handler)
579 handlers[tagFIELDSET].end_tag_handler(pdoc, child);
582 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
588 /*----------------------------------------------------------------------*/
590 /*----------------------------------------------------------------------*/
591 if (strcasecmp(name, "input") == 0) {
592 if (handlers[tagINPUT].start_tag_handler)
593 handlers[tagINPUT].start_tag_handler(pdoc, child);
595 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
597 if (handlers[tagINPUT].end_tag_handler)
598 handlers[tagINPUT].end_tag_handler(pdoc, child);
600 /*----------------------------------------------------------------------*/
602 /*----------------------------------------------------------------------*/
604 if (strcasecmp(name, "img") == 0) {
605 if (handlers[tagIMG].start_tag_handler)
606 handlers[tagIMG].start_tag_handler(pdoc, child);
608 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
610 if (handlers[tagIMG].end_tag_handler)
611 handlers[tagIMG].end_tag_handler(pdoc, child);
614 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
620 /*----------------------------------------------------------------------*/
622 /*----------------------------------------------------------------------*/
623 if (strcasecmp(name, "select") == 0) {
624 if (handlers[tagSELECT].start_tag_handler)
625 handlers[tagSELECT].start_tag_handler(pdoc, child);
627 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
629 if (handlers[tagSELECT].end_tag_handler)
630 handlers[tagSELECT].end_tag_handler(pdoc, child);
632 /*----------------------------------------------------------------------*/
634 /*----------------------------------------------------------------------*/
636 if (strcasecmp(name, "style") == 0) {
637 if (handlers[tagSTYLE].start_tag_handler)
638 handlers[tagSTYLE].start_tag_handler(pdoc, child);
640 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
643 if (handlers[tagSTYLE].end_tag_handler)
644 handlers[tagSTYLE].end_tag_handler(pdoc, child);
646 /*----------------------------------------------------------------------*/
648 /*----------------------------------------------------------------------*/
650 if (strcasecmp(name, "span") == 0) {
651 if (handlers[tagSPAN].start_tag_handler)
652 handlers[tagSPAN].start_tag_handler(pdoc, child);
654 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
656 if (handlers[tagSPAN].end_tag_handler)
657 handlers[tagSPAN].end_tag_handler(pdoc, child);
659 /*----------------------------------------------------------------------*/
661 /*----------------------------------------------------------------------*/
663 if (strcasecmp(name, "small") == 0) {
664 if (handlers[tagSMALL].start_tag_handler)
665 handlers[tagSMALL].start_tag_handler(pdoc, child);
667 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
669 if (handlers[tagSMALL].end_tag_handler)
670 handlers[tagSMALL].end_tag_handler(pdoc, child);
672 /*----------------------------------------------------------------------*/
674 /*----------------------------------------------------------------------*/
676 if (strcasecmp(name, "script") == 0) {
677 /* ignore script block */
680 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
686 /*----------------------------------------------------------------------*/
688 /*----------------------------------------------------------------------*/
689 if (strcasecmp(name, "div") == 0) {
690 if (handlers[tagDIV].start_tag_handler)
691 handlers[tagDIV].start_tag_handler(pdoc, child);
693 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
695 if (handlers[tagDIV].end_tag_handler)
696 handlers[tagDIV].end_tag_handler(pdoc, child);
698 /*----------------------------------------------------------------------*/
700 /*----------------------------------------------------------------------*/
701 else if (strcasecmp(name, "dir") == 0) {
702 if (handlers[tagDIR].start_tag_handler)
703 handlers[tagDIR].start_tag_handler(pdoc, child);
705 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
707 if (handlers[tagDIR].end_tag_handler)
708 handlers[tagDIR].end_tag_handler(pdoc, child);
710 /*----------------------------------------------------------------------*/
712 /*----------------------------------------------------------------------*/
713 else if (strcasecmp(name, "dl") == 0) {
714 if (handlers[tagDL].start_tag_handler)
715 handlers[tagDL].start_tag_handler(pdoc, child);
717 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
719 if (handlers[tagDL].end_tag_handler)
720 handlers[tagDL].end_tag_handler(pdoc, child);
722 /*----------------------------------------------------------------------*/
724 /*----------------------------------------------------------------------*/
725 else if (strcasecmp(name, "dt") == 0) {
726 if (handlers[tagDT].start_tag_handler)
727 handlers[tagDT].start_tag_handler(pdoc, child);
729 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
731 if (handlers[tagDT].end_tag_handler)
732 handlers[tagDT].end_tag_handler(pdoc, child);
734 /*----------------------------------------------------------------------*/
736 /*----------------------------------------------------------------------*/
737 else if (strcasecmp(name, "dd") == 0) {
738 if (handlers[tagDD].start_tag_handler)
739 handlers[tagDD].start_tag_handler(pdoc, child);
741 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
743 if (handlers[tagDD].end_tag_handler)
744 handlers[tagDD].end_tag_handler(pdoc, child);
747 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
753 /*----------------------------------------------------------------------*/
755 /*----------------------------------------------------------------------*/
756 if (strcasecmp(name, "center") == 0) {
757 if (handlers[tagCENTER].start_tag_handler)
758 handlers[tagCENTER].start_tag_handler(pdoc, child);
760 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
762 if (handlers[tagCENTER].end_tag_handler)
763 handlers[tagCENTER].end_tag_handler(pdoc, child);
765 /*----------------------------------------------------------------------*/
767 /*----------------------------------------------------------------------*/
769 if (strcasecmp(name, "chxj:if") == 0) {
770 if (chxj_chxjif_is_mine(spec, doc, child)) {
773 parse_attr = qs_get_parse_attr(doc, child, r);
775 if (parse_attr && strcasecmp(parse_attr, "true") == 0) {
776 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
779 if (handlers[tagCHXJIF].start_tag_handler)
780 handlers[tagCHXJIF].start_tag_handler(pdoc, child);
785 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
791 /*----------------------------------------------------------------------*/
793 /*----------------------------------------------------------------------*/
794 if (strcasecmp(name, "textarea") == 0) {
795 if (handlers[tagTEXTAREA].start_tag_handler)
796 handlers[tagTEXTAREA].start_tag_handler(pdoc, child);
798 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
800 if (handlers[tagTEXTAREA].end_tag_handler)
801 handlers[tagTEXTAREA].end_tag_handler(pdoc, child);
804 /*----------------------------------------------------------------------*/
806 /*----------------------------------------------------------------------*/
807 if (strcasecmp(name, "title") == 0) {
808 if (handlers[tagTITLE].start_tag_handler)
809 handlers[tagTITLE].start_tag_handler(pdoc, child);
811 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
813 if (handlers[tagTITLE].end_tag_handler)
814 handlers[tagTITLE].end_tag_handler(pdoc, child);
816 /*----------------------------------------------------------------------*/
818 /*----------------------------------------------------------------------*/
820 if (strcasecmp(name, "table") == 0) {
821 if (handlers[tagTABLE].start_tag_handler)
822 handlers[tagTABLE].start_tag_handler(pdoc, child);
824 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
826 if (handlers[tagTABLE].end_tag_handler)
827 handlers[tagTABLE].end_tag_handler(pdoc, child);
829 /*----------------------------------------------------------------------*/
831 /*----------------------------------------------------------------------*/
833 if (strcasecmp(name, "tbody") == 0) {
834 if (handlers[tagTBODY].start_tag_handler)
835 handlers[tagTBODY].start_tag_handler(pdoc, child);
837 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
839 if (handlers[tagTBODY].end_tag_handler)
840 handlers[tagTBODY].end_tag_handler(pdoc, child);
842 /*----------------------------------------------------------------------*/
844 /*----------------------------------------------------------------------*/
846 if (strcasecmp(name, "th") == 0) {
847 if (handlers[tagTH].start_tag_handler)
848 handlers[tagTH].start_tag_handler(pdoc, child);
850 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
852 if (handlers[tagTH].end_tag_handler)
853 handlers[tagTH].end_tag_handler(pdoc, child);
855 /*----------------------------------------------------------------------*/
857 /*----------------------------------------------------------------------*/
859 if (strcasecmp(name, "tr") == 0) {
860 if (handlers[tagTR].start_tag_handler)
861 handlers[tagTR].start_tag_handler(pdoc, child);
863 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
865 if (handlers[tagTR].end_tag_handler)
866 handlers[tagTR].end_tag_handler(pdoc, child);
868 /*----------------------------------------------------------------------*/
870 /*----------------------------------------------------------------------*/
872 if (strcasecmp(name, "td") == 0) {
873 if (handlers[tagTD].start_tag_handler)
874 handlers[tagTD].start_tag_handler(pdoc, child);
876 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
878 if (handlers[tagTD].end_tag_handler)
879 handlers[tagTD].end_tag_handler(pdoc, child);
881 /*----------------------------------------------------------------------*/
883 /*----------------------------------------------------------------------*/
885 if (strcasecmp(name, "text") == 0) {
886 if (handlers[tagTEXT].start_tag_handler)
887 handlers[tagTEXT].start_tag_handler(pdoc, child);
890 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);
895 chxj_node_convert(spec, r, pdoc, doc, child, indent+1);