Lines Matching refs:elem

82     apr_xml_elem *elem = parser->cur_elem;
88 for (; elem; elem = elem->parent) {
91 for (ns_scope = elem->ns_scope; ns_scope; ns_scope = ns_scope->next) {
124 static const char * find_prefix_name(const apr_xml_elem *elem, int ns, int parent)
130 for (; elem; elem = parent ? elem->parent : NULL) {
131 apr_xml_ns_scope *ns_scope = elem->ns_scope;
146 apr_xml_elem *elem;
157 elem = apr_pcalloc(parser->p, sizeof(*elem));
160 elem->name = elem_name = apr_pstrdup(parser->p, name);
167 attr->next = elem->attr;
168 elem->attr = attr;
174 parser->cur_elem = parser->doc->root = elem;
177 /* this element appeared within the current elem */
178 elem->parent = parser->cur_elem;
181 if (elem->parent->last_child == NULL) {
183 elem->parent->first_child = elem->parent->last_child = elem;
187 elem->parent->last_child->next = elem;
188 elem->parent->last_child = elem;
192 parser->cur_elem = elem;
196 for (prev = NULL, attr = elem->attr;
227 ns_scope->next = elem->ns_scope;
228 elem->ns_scope = ns_scope;
232 elem->attr = attr->next;
240 elem->lang = apr_xml_quote_string(parser->p, attr->value, 1);
244 elem->attr = attr->next;
262 if (elem->lang == NULL && elem->parent != NULL)
263 elem->lang = elem->parent->lang;
273 elem->ns = find_prefix(parser, "");
275 else if (APR_XML_NS_IS_RESERVED(elem->name)) {
276 elem->ns = APR_XML_NS_NONE;
280 elem->ns = find_prefix(parser, elem->name);
281 elem->name = colon + 1;
283 if (APR_XML_NS_IS_ERROR(elem->ns)) {
284 parser->error = elem->ns;
290 for (attr = elem->attr; attr; attr = attr->next) {
337 apr_xml_elem *elem;
345 elem = parser->cur_elem;
348 if (elem->last_child == NULL) {
350 hdr = &elem->first_cdata;
354 hdr = &elem->last_child->following_cdata;
664 static apr_size_t elem_size(const apr_xml_elem *elem, int style,
689 if (elem->lang != NULL) {
691 size += 11 + strlen(elem->lang) + 1;
695 apr_xml_ns_scope *ns_scope = elem->ns_scope;
699 size += 10 + strlen(find_prefix_name(elem, ns_scope->ns, 0)) +
703 if (elem->lang != NULL) {
705 size += 11 + strlen(elem->lang) + 1;
709 if (elem->ns == APR_XML_NS_NONE) {
711 size += 1 + strlen(elem->name) + 1;
715 size += 3 + strlen(find_prefix_name(elem, elem->ns, 1)) + strlen(elem->name);
718 int ns = ns_map ? ns_map[elem->ns] : elem->ns;
721 size += 3 + APR_XML_NS_LEN(ns) + 1 + strlen(elem->name) + 1;
724 if (APR_XML_ELEM_IS_EMPTY(elem)) {
737 for (attr = elem->attr; attr; attr = attr->next) {
744 size += 5 + strlen(find_prefix_name(elem, attr->ns, 1)) + strlen(attr->name) + strlen(attr->value);
760 if (elem->lang != NULL &&
761 (elem->parent == NULL || elem->lang != elem->parent->lang)) {
762 size += 11 + strlen(elem->lang) + 1;
770 size = elem->lang ? strlen(elem->lang) + 1 : 1;
775 size += text_size(elem->first_cdata.first);
777 for (elem = elem->first_child; elem; elem = elem->next) {
779 size += (elem_size(elem, style == APR_XML_X2T_PARSED ? APR_XML_X2T_PARSED : APR_XML_X2T_FULL, NULL, ns_map) +
780 text_size(elem->following_cdata.first));
796 static char *write_elem(char *s, const apr_xml_elem *elem, int style,
805 int empty = APR_XML_ELEM_IS_EMPTY(elem);
808 if (elem->ns == APR_XML_NS_NONE)
809 len = sprintf(s, "<%s", elem->name);
811 len = sprintf(s, "<%s:%s", find_prefix_name(elem, elem->ns, 1), elem->name);
813 ns = ns_map ? ns_map[elem->ns] : elem->ns;
814 len = sprintf(s, "<ns%d:%s", ns, elem->name);
818 for (attr = elem->attr; attr; attr = attr->next) {
823 find_prefix_name(elem, attr->ns, 1), attr->name, attr->value);
832 if (elem->lang != NULL &&
834 elem->parent == NULL ||
835 elem->lang != elem->parent->lang)) {
836 len = sprintf(s, " xml:lang=\"%s\"", elem->lang);
851 apr_xml_ns_scope *ns_scope = elem->ns_scope;
854 const char *prefix = find_prefix_name(elem, ns_scope->ns, 0);
875 if (elem->lang != NULL) {
876 len = strlen(elem->lang);
877 memcpy(s, elem->lang, len);
883 s = write_text(s, elem->first_cdata.first);
885 for (child = elem->first_child; child; child = child->next) {
893 if (elem->ns == APR_XML_NS_NONE)
894 len = sprintf(s, "</%s>", elem->name);
896 len = sprintf(s, "</%s:%s>", find_prefix_name(elem, elem->ns, 1), elem->name);
898 ns = ns_map ? ns_map[elem->ns] : elem->ns;
899 len = sprintf(s, "</ns%d:%s>", ns, elem->name);
907 APU_DECLARE(void) apr_xml_quote_elem(apr_pool_t *p, apr_xml_elem *elem)
914 for (scan_txt = elem->first_cdata.first;
919 for (scan_txt = elem->following_cdata.first;
926 for (scan_attr = elem->attr;
933 for (scan_elem = elem->first_child;
941 APU_DECLARE(void) apr_xml_to_text(apr_pool_t * p, const apr_xml_elem *elem,
947 apr_size_t size = elem_size(elem, style, namespaces, ns_map) + 1;
950 (void) write_elem(s, elem, style, namespaces, ns_map);
959 const apr_xml_elem *elem)
961 if (elem->ns == APR_XML_NS_NONE) {
966 return apr_psprintf(p, "<%s/>" DEBUG_CR, elem->name);
969 return apr_psprintf(p, "<ns%d:%s/>" DEBUG_CR, elem->ns, elem->name);