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_XHtml_Mobile_1_0,
46 .handler = xhtml_handler,
49 .type = CHXJ_SPEC_Hdml,
50 .handler = hdml_handler,
53 .type = CHXJ_SPEC_Jhtml,
54 .handler = jhtml_handler,
57 .type = CHXJ_SPEC_HTML,
64 * It is main processing of conversion from CHTML to XXML.
68 * @param pdoc [i/o] The pointer to the XXML structure is specified.
69 * @param doc [i/o] The pointer to the XXML structure is specified.
70 * @param node [i] The pointer to a current node is specified.
71 * @param indent [i] The depth of the node processing it now is specified.
73 * @return The character string after it converts it is returned.
86 tag_handler* handlers;
89 handlers = chxj_tag_handlers[spec->html_spec_type].handler;
91 /*--------------------------------------------------------------------------*/
92 /* It is the main loop of the conversion processing. */
93 /*--------------------------------------------------------------------------*/
94 for (child = qs_get_child_node(doc,node);
96 child = qs_get_next_node(doc,child)) {
100 name = qs_get_node_name(doc,child);
105 /*----------------------------------------------------------------------*/
107 /*----------------------------------------------------------------------*/
108 if (strcasecmp(name, "html") == 0) {
109 if (handlers[tagHTML].start_tag_handler)
110 handlers[tagHTML].start_tag_handler(pdoc, child);
112 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
114 if (handlers[tagHTML].end_tag_handler)
115 handlers[tagHTML].end_tag_handler(pdoc, child);
117 /*----------------------------------------------------------------------*/
119 /*----------------------------------------------------------------------*/
121 if (strcasecmp(name, "head") == 0) {
122 if (handlers[tagHEAD].start_tag_handler)
123 handlers[tagHEAD].start_tag_handler(pdoc, child);
125 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
127 if (handlers[tagHEAD].end_tag_handler)
128 handlers[tagHEAD].end_tag_handler(pdoc, child);
130 /*----------------------------------------------------------------------*/
132 /*----------------------------------------------------------------------*/
134 if (strcasecmp(name, "hr") == 0) {
135 if (handlers[tagHR].start_tag_handler)
136 handlers[tagHR].start_tag_handler(pdoc, child);
138 if (handlers[tagHR].end_tag_handler)
139 handlers[tagHR].end_tag_handler(pdoc, child);
141 /*----------------------------------------------------------------------*/
143 /*----------------------------------------------------------------------*/
145 if (strcasecmp(name, "h1") == 0) {
146 if (handlers[tagH1].start_tag_handler)
147 handlers[tagH1].start_tag_handler(pdoc, child);
149 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
151 if (handlers[tagH1].end_tag_handler)
152 handlers[tagH1].end_tag_handler(pdoc, child);
154 /*----------------------------------------------------------------------*/
156 /*----------------------------------------------------------------------*/
158 if (strcasecmp(name, "h2") == 0) {
159 if (handlers[tagH2].start_tag_handler)
160 handlers[tagH2].start_tag_handler(pdoc, child);
162 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
164 if (handlers[tagH2].end_tag_handler)
165 handlers[tagH2].end_tag_handler(pdoc, child);
167 /*----------------------------------------------------------------------*/
169 /*----------------------------------------------------------------------*/
171 if (strcasecmp(name, "h3") == 0) {
172 if (handlers[tagH3].start_tag_handler)
173 handlers[tagH3].start_tag_handler(pdoc, child);
175 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
177 if (handlers[tagH3].end_tag_handler)
178 handlers[tagH3].end_tag_handler(pdoc, child);
180 /*----------------------------------------------------------------------*/
182 /*----------------------------------------------------------------------*/
184 if (strcasecmp(name, "h4") == 0) {
185 if (handlers[tagH4].start_tag_handler)
186 handlers[tagH4].start_tag_handler(pdoc, child);
188 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
190 if (handlers[tagH4].end_tag_handler)
191 handlers[tagH4].end_tag_handler(pdoc, child);
193 /*----------------------------------------------------------------------*/
195 /*----------------------------------------------------------------------*/
197 if (strcasecmp(name, "h5") == 0) {
198 if (handlers[tagH5].start_tag_handler)
199 handlers[tagH5].start_tag_handler(pdoc, child);
201 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
203 if (handlers[tagH5].end_tag_handler)
204 handlers[tagH5].end_tag_handler(pdoc, child);
206 /*----------------------------------------------------------------------*/
208 /*----------------------------------------------------------------------*/
210 if (strcasecmp(name, "h6") == 0) {
211 if (handlers[tagH6].start_tag_handler)
212 handlers[tagH6].start_tag_handler(pdoc, child);
214 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
216 if (handlers[tagH6].end_tag_handler)
217 handlers[tagH6].end_tag_handler(pdoc, child);
220 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
227 /*----------------------------------------------------------------------*/
229 /*----------------------------------------------------------------------*/
230 if (strcasecmp(name, "p") == 0) {
231 if (handlers[tagP].start_tag_handler)
232 handlers[tagP].start_tag_handler(pdoc, child);
234 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
236 if (handlers[tagP].end_tag_handler)
237 handlers[tagP].end_tag_handler(pdoc, child);
239 /*----------------------------------------------------------------------*/
241 /*----------------------------------------------------------------------*/
242 else if (strcasecmp(name, "pre") == 0) {
243 if (handlers[tagPRE].start_tag_handler)
244 handlers[tagPRE].start_tag_handler(pdoc, child);
246 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
248 if (handlers[tagPRE].end_tag_handler)
249 handlers[tagPRE].end_tag_handler(pdoc, child);
251 /*----------------------------------------------------------------------*/
253 /*----------------------------------------------------------------------*/
254 else if (strcasecmp(name, "plaintext") == 0) {
255 if (handlers[tagPLAINTEXT].start_tag_handler)
256 handlers[tagPLAINTEXT].start_tag_handler(pdoc, child);
258 if (handlers[tagPLAINTEXT].end_tag_handler)
259 handlers[tagPLAINTEXT].end_tag_handler(pdoc, child);
262 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
268 /*----------------------------------------------------------------------*/
270 /*----------------------------------------------------------------------*/
271 if (strcasecmp(name, "nobr") == 0) {
272 if (handlers[tagNOBR].start_tag_handler)
273 handlers[tagNOBR].start_tag_handler(pdoc, child);
275 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
277 if (handlers[tagNOBR].end_tag_handler)
278 handlers[tagNOBR].end_tag_handler(pdoc, child);
281 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
287 /*----------------------------------------------------------------------*/
289 /*----------------------------------------------------------------------*/
290 if (strcasecmp(name, "ul") == 0) {
291 if (handlers[tagUL].start_tag_handler)
292 handlers[tagUL].start_tag_handler(pdoc, child);
294 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
296 if (handlers[tagUL].end_tag_handler)
297 handlers[tagUL].end_tag_handler(pdoc, child);
300 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
306 /*----------------------------------------------------------------------*/
308 /*----------------------------------------------------------------------*/
309 if (strcasecmp(name, "li") == 0) {
310 if (handlers[tagLI].start_tag_handler)
311 handlers[tagLI].start_tag_handler(pdoc, child);
313 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
315 if (handlers[tagLI].end_tag_handler)
316 handlers[tagLI].end_tag_handler(pdoc, child);
319 /*----------------------------------------------------------------------*/
321 /*----------------------------------------------------------------------*/
322 if (strcasecmp(name, "legend") == 0) {
323 if (handlers[tagLEGEND].start_tag_handler)
324 handlers[tagLEGEND].start_tag_handler(pdoc, child);
326 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
328 if (handlers[tagLEGEND].end_tag_handler)
329 handlers[tagLEGEND].end_tag_handler(pdoc, child);
332 /*----------------------------------------------------------------------*/
334 /*----------------------------------------------------------------------*/
335 if (strcasecmp(name, "label") == 0) {
336 if (handlers[tagLABEL].start_tag_handler)
337 handlers[tagLABEL].start_tag_handler(pdoc, child);
339 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
341 if (handlers[tagLABEL].end_tag_handler)
342 handlers[tagLABEL].end_tag_handler(pdoc, child);
345 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
352 /*----------------------------------------------------------------------*/
354 /*----------------------------------------------------------------------*/
355 if (strcasecmp(name, "ol") == 0) {
356 if (handlers[tagOL].start_tag_handler)
357 handlers[tagOL].start_tag_handler(pdoc, child);
359 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
361 if (handlers[tagOL].end_tag_handler)
362 handlers[tagOL].end_tag_handler(pdoc, child);
365 /*----------------------------------------------------------------------*/
367 /*----------------------------------------------------------------------*/
368 if (strcasecmp(name, "option") == 0) {
369 if (handlers[tagOPTION].start_tag_handler)
370 handlers[tagOPTION].start_tag_handler(pdoc, child);
372 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
374 if (handlers[tagOPTION].end_tag_handler)
375 handlers[tagOPTION].end_tag_handler(pdoc, child);
378 /*----------------------------------------------------------------------*/
380 /*----------------------------------------------------------------------*/
381 if (strcasecmp(name, "object") == 0) {
382 /* ignore object block */
385 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
392 /*----------------------------------------------------------------------*/
394 /*----------------------------------------------------------------------*/
395 if (strcasecmp(name, "meta") == 0) {
396 if (handlers[tagMETA].start_tag_handler)
397 handlers[tagMETA].start_tag_handler(pdoc, child);
399 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
401 if (handlers[tagMETA].end_tag_handler)
402 handlers[tagMETA].end_tag_handler(pdoc, child);
404 /*----------------------------------------------------------------------*/
406 /*----------------------------------------------------------------------*/
407 else if (strcasecmp(name, "menu") == 0) {
408 if (handlers[tagMENU].start_tag_handler)
409 handlers[tagMENU].start_tag_handler(pdoc, child);
411 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
413 if (handlers[tagMENU].end_tag_handler)
414 handlers[tagMENU].end_tag_handler(pdoc, child);
416 /*----------------------------------------------------------------------*/
418 /*----------------------------------------------------------------------*/
419 else if (strcasecmp(name, "marquee") == 0) {
420 if (handlers[tagMARQUEE].start_tag_handler)
421 handlers[tagMARQUEE].start_tag_handler(pdoc, child);
423 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
425 if (handlers[tagMARQUEE].end_tag_handler)
426 handlers[tagMARQUEE].end_tag_handler(pdoc, child);
429 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
435 /*----------------------------------------------------------------------*/
437 /*----------------------------------------------------------------------*/
438 if (strlen(name) == 1) {
439 if (handlers[tagB].start_tag_handler)
440 handlers[tagB].start_tag_handler(pdoc, child);
442 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
444 if (handlers[tagB].end_tag_handler)
445 handlers[tagB].end_tag_handler(pdoc, child);
448 /*----------------------------------------------------------------------*/
450 /*----------------------------------------------------------------------*/
451 if (strcasecmp(name, "base") == 0) {
452 if (handlers[tagBASE].start_tag_handler)
453 handlers[tagBASE].start_tag_handler(pdoc, child);
455 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
457 if (handlers[tagBASE].end_tag_handler)
458 handlers[tagBASE].end_tag_handler(pdoc, child);
460 /*----------------------------------------------------------------------*/
462 /*----------------------------------------------------------------------*/
464 if (strcasecmp(name, "body") == 0) {
465 if (handlers[tagBODY].start_tag_handler)
466 handlers[tagBODY].start_tag_handler(pdoc, child);
468 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
470 if (handlers[tagBODY].end_tag_handler)
471 handlers[tagBODY].end_tag_handler(pdoc, child);
473 /*----------------------------------------------------------------------*/
475 /*----------------------------------------------------------------------*/
476 else if (strcasecmp(name, "br") == 0) {
477 if (handlers[tagBR].start_tag_handler)
478 handlers[tagBR].start_tag_handler(pdoc, child);
480 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
482 if (handlers[tagBR].end_tag_handler)
483 handlers[tagBR].end_tag_handler(pdoc, child);
485 /*----------------------------------------------------------------------*/
487 /*----------------------------------------------------------------------*/
488 else if (strcasecmp(name, "blockquote") == 0) {
489 if (handlers[tagBLOCKQUOTE].start_tag_handler)
490 handlers[tagBLOCKQUOTE].start_tag_handler(pdoc, child);
492 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
494 if (handlers[tagBLOCKQUOTE].end_tag_handler)
495 handlers[tagBLOCKQUOTE].end_tag_handler(pdoc, child);
497 /*----------------------------------------------------------------------*/
499 /*----------------------------------------------------------------------*/
500 else if (strcasecmp(name, "blink") == 0) {
501 if (handlers[tagBLINK].start_tag_handler)
502 handlers[tagBLINK].start_tag_handler(pdoc, child);
504 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
506 if (handlers[tagBLINK].end_tag_handler)
507 handlers[tagBLINK].end_tag_handler(pdoc, child);
510 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
516 /*----------------------------------------------------------------------*/
518 /*----------------------------------------------------------------------*/
519 if (strcasecmp(name, "a") == 0) {
520 if (handlers[tagA].start_tag_handler)
521 handlers[tagA].start_tag_handler(pdoc, child);
523 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
525 if (handlers[tagA].end_tag_handler)
526 handlers[tagA].end_tag_handler(pdoc, child);
529 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
535 /*----------------------------------------------------------------------*/
537 /*----------------------------------------------------------------------*/
538 if (strcasecmp(name, "font") == 0) {
539 if (handlers[tagFONT].start_tag_handler)
540 handlers[tagFONT].start_tag_handler(pdoc, child);
542 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
544 if (handlers[tagFONT].end_tag_handler)
545 handlers[tagFONT].end_tag_handler(pdoc, child);
547 /*----------------------------------------------------------------------*/
549 /*----------------------------------------------------------------------*/
551 if (strcasecmp(name, "form") == 0) {
552 if (handlers[tagFORM].start_tag_handler)
553 handlers[tagFORM].start_tag_handler(pdoc, child);
555 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
557 if (handlers[tagFORM].end_tag_handler)
558 handlers[tagFORM].end_tag_handler(pdoc, child);
560 /*----------------------------------------------------------------------*/
562 /*----------------------------------------------------------------------*/
564 if (strcasecmp(name, "fieldset") == 0) {
565 if (handlers[tagFIELDSET].start_tag_handler)
566 handlers[tagFIELDSET].start_tag_handler(pdoc, child);
568 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
570 if (handlers[tagFIELDSET].end_tag_handler)
571 handlers[tagFIELDSET].end_tag_handler(pdoc, child);
574 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
580 /*----------------------------------------------------------------------*/
582 /*----------------------------------------------------------------------*/
583 if (strcasecmp(name, "input") == 0) {
584 if (handlers[tagINPUT].start_tag_handler)
585 handlers[tagINPUT].start_tag_handler(pdoc, child);
587 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
589 if (handlers[tagINPUT].end_tag_handler)
590 handlers[tagINPUT].end_tag_handler(pdoc, child);
592 /*----------------------------------------------------------------------*/
594 /*----------------------------------------------------------------------*/
596 if (strcasecmp(name, "img") == 0) {
597 if (handlers[tagIMG].start_tag_handler)
598 handlers[tagIMG].start_tag_handler(pdoc, child);
600 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
602 if (handlers[tagIMG].end_tag_handler)
603 handlers[tagIMG].end_tag_handler(pdoc, child);
606 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
612 /*----------------------------------------------------------------------*/
614 /*----------------------------------------------------------------------*/
615 if (strcasecmp(name, "select") == 0) {
616 if (handlers[tagSELECT].start_tag_handler)
617 handlers[tagSELECT].start_tag_handler(pdoc, child);
619 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
621 if (handlers[tagSELECT].end_tag_handler)
622 handlers[tagSELECT].end_tag_handler(pdoc, child);
624 /*----------------------------------------------------------------------*/
626 /*----------------------------------------------------------------------*/
628 if (strcasecmp(name, "style") == 0) {
629 if (handlers[tagSTYLE].start_tag_handler)
630 handlers[tagSTYLE].start_tag_handler(pdoc, child);
632 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
635 if (handlers[tagSTYLE].end_tag_handler)
636 handlers[tagSTYLE].end_tag_handler(pdoc, child);
638 /*----------------------------------------------------------------------*/
640 /*----------------------------------------------------------------------*/
642 if (strcasecmp(name, "span") == 0) {
643 if (handlers[tagSPAN].start_tag_handler)
644 handlers[tagSPAN].start_tag_handler(pdoc, child);
646 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
648 if (handlers[tagSPAN].end_tag_handler)
649 handlers[tagSPAN].end_tag_handler(pdoc, child);
651 /*----------------------------------------------------------------------*/
653 /*----------------------------------------------------------------------*/
655 if (strcasecmp(name, "small") == 0) {
656 if (handlers[tagSMALL].start_tag_handler)
657 handlers[tagSMALL].start_tag_handler(pdoc, child);
659 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
661 if (handlers[tagSMALL].end_tag_handler)
662 handlers[tagSMALL].end_tag_handler(pdoc, child);
664 /*----------------------------------------------------------------------*/
666 /*----------------------------------------------------------------------*/
668 if (strcasecmp(name, "script") == 0) {
669 /* ignore script block */
672 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
678 /*----------------------------------------------------------------------*/
680 /*----------------------------------------------------------------------*/
681 if (strcasecmp(name, "div") == 0) {
682 if (handlers[tagDIV].start_tag_handler)
683 handlers[tagDIV].start_tag_handler(pdoc, child);
685 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
687 if (handlers[tagDIV].end_tag_handler)
688 handlers[tagDIV].end_tag_handler(pdoc, child);
690 /*----------------------------------------------------------------------*/
692 /*----------------------------------------------------------------------*/
693 else if (strcasecmp(name, "dir") == 0) {
694 if (handlers[tagDIR].start_tag_handler)
695 handlers[tagDIR].start_tag_handler(pdoc, child);
697 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
699 if (handlers[tagDIR].end_tag_handler)
700 handlers[tagDIR].end_tag_handler(pdoc, child);
702 /*----------------------------------------------------------------------*/
704 /*----------------------------------------------------------------------*/
705 else if (strcasecmp(name, "dl") == 0) {
706 if (handlers[tagDL].start_tag_handler)
707 handlers[tagDL].start_tag_handler(pdoc, child);
709 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
711 if (handlers[tagDL].end_tag_handler)
712 handlers[tagDL].end_tag_handler(pdoc, child);
714 /*----------------------------------------------------------------------*/
716 /*----------------------------------------------------------------------*/
717 else if (strcasecmp(name, "dt") == 0) {
718 if (handlers[tagDT].start_tag_handler)
719 handlers[tagDT].start_tag_handler(pdoc, child);
721 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
723 if (handlers[tagDT].end_tag_handler)
724 handlers[tagDT].end_tag_handler(pdoc, child);
726 /*----------------------------------------------------------------------*/
728 /*----------------------------------------------------------------------*/
729 else if (strcasecmp(name, "dd") == 0) {
730 if (handlers[tagDD].start_tag_handler)
731 handlers[tagDD].start_tag_handler(pdoc, child);
733 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
735 if (handlers[tagDD].end_tag_handler)
736 handlers[tagDD].end_tag_handler(pdoc, child);
739 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
745 /*----------------------------------------------------------------------*/
747 /*----------------------------------------------------------------------*/
748 if (strcasecmp(name, "center") == 0) {
749 if (handlers[tagCENTER].start_tag_handler)
750 handlers[tagCENTER].start_tag_handler(pdoc, child);
752 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
754 if (handlers[tagCENTER].end_tag_handler)
755 handlers[tagCENTER].end_tag_handler(pdoc, child);
757 /*----------------------------------------------------------------------*/
759 /*----------------------------------------------------------------------*/
761 if (strcasecmp(name, "chxj:if") == 0) {
762 if (chxj_chxjif_is_mine(spec, doc, child)) {
765 parse_attr = qs_get_parse_attr(doc, child, r);
767 if (parse_attr && strcasecmp(parse_attr, "true") == 0) {
768 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
771 if (handlers[tagCHXJIF].start_tag_handler)
772 handlers[tagCHXJIF].start_tag_handler(pdoc, child);
777 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
783 /*----------------------------------------------------------------------*/
785 /*----------------------------------------------------------------------*/
786 if (strcasecmp(name, "textarea") == 0) {
787 if (handlers[tagTEXTAREA].start_tag_handler)
788 handlers[tagTEXTAREA].start_tag_handler(pdoc, child);
790 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
792 if (handlers[tagTEXTAREA].end_tag_handler)
793 handlers[tagTEXTAREA].end_tag_handler(pdoc, child);
796 /*----------------------------------------------------------------------*/
798 /*----------------------------------------------------------------------*/
799 if (strcasecmp(name, "title") == 0) {
800 if (handlers[tagTITLE].start_tag_handler)
801 handlers[tagTITLE].start_tag_handler(pdoc, child);
803 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
805 if (handlers[tagTITLE].end_tag_handler)
806 handlers[tagTITLE].end_tag_handler(pdoc, child);
808 /*----------------------------------------------------------------------*/
810 /*----------------------------------------------------------------------*/
812 if (strcasecmp(name, "table") == 0) {
813 if (handlers[tagTABLE].start_tag_handler)
814 handlers[tagTABLE].start_tag_handler(pdoc, child);
816 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
818 if (handlers[tagTABLE].end_tag_handler)
819 handlers[tagTABLE].end_tag_handler(pdoc, child);
821 /*----------------------------------------------------------------------*/
823 /*----------------------------------------------------------------------*/
825 if (strcasecmp(name, "tbody") == 0) {
826 if (handlers[tagTBODY].start_tag_handler)
827 handlers[tagTBODY].start_tag_handler(pdoc, child);
829 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
831 if (handlers[tagTBODY].end_tag_handler)
832 handlers[tagTBODY].end_tag_handler(pdoc, child);
834 /*----------------------------------------------------------------------*/
836 /*----------------------------------------------------------------------*/
838 if (strcasecmp(name, "th") == 0) {
839 if (handlers[tagTH].start_tag_handler)
840 handlers[tagTH].start_tag_handler(pdoc, child);
842 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
844 if (handlers[tagTH].end_tag_handler)
845 handlers[tagTH].end_tag_handler(pdoc, child);
847 /*----------------------------------------------------------------------*/
849 /*----------------------------------------------------------------------*/
851 if (strcasecmp(name, "tr") == 0) {
852 if (handlers[tagTR].start_tag_handler)
853 handlers[tagTR].start_tag_handler(pdoc, child);
855 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
857 if (handlers[tagTR].end_tag_handler)
858 handlers[tagTR].end_tag_handler(pdoc, child);
860 /*----------------------------------------------------------------------*/
862 /*----------------------------------------------------------------------*/
864 if (strcasecmp(name, "td") == 0) {
865 if (handlers[tagTD].start_tag_handler)
866 handlers[tagTD].start_tag_handler(pdoc, child);
868 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
870 if (handlers[tagTD].end_tag_handler)
871 handlers[tagTD].end_tag_handler(pdoc, child);
873 /*----------------------------------------------------------------------*/
875 /*----------------------------------------------------------------------*/
877 if (strcasecmp(name, "text") == 0) {
878 if (handlers[tagTEXT].start_tag_handler)
879 handlers[tagTEXT].start_tag_handler(pdoc, child);
882 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);
887 chxj_node_exchange(spec, r, pdoc, doc, child, indent+1);