teal-src/util/datamapper.tl
changeset 11441 87a684df4b65
parent 11440 5df9ffc25bb4
child 11442 b7807583de34
--- a/teal-src/util/datamapper.tl	Sun Mar 07 00:57:36 2021 +0100
+++ b/teal-src/util/datamapper.tl	Sat Mar 06 23:14:23 2021 +0100
@@ -19,6 +19,7 @@
 			local prefix : string = nil
 			local is_attribute = false
 			local is_text = false
+			local name_is_value = false;
 
 			local proptype : js.schema_t.type_e
 			if propschema is js.schema_t then
@@ -41,10 +42,17 @@
 					is_attribute = true
 				elseif propschema.xml.text then
 					is_text = true
+				elseif propschema.xml.x_name_is_value then
+					name_is_value = true
 				end
 			end
 
-			if is_attribute then
+			if name_is_value then
+				local c = s:get_child(nil, namespace);
+				if c then
+					out[prop] = c.name;
+				end
+			elseif is_attribute then
 				local attr = name
 				if prefix then
 					attr = prefix .. ':' .. name
@@ -125,6 +133,7 @@
 				local prefix : string = nil
 				local is_attribute = false
 				local is_text = false
+				local name_is_value = false;
 
 				if propschema is js.schema_t and propschema.xml then
 
@@ -143,6 +152,8 @@
 						is_attribute = true
 					elseif propschema.xml.text then
 						is_text = true
+					elseif propschema.xml.x_name_is_value then
+						name_is_value = true
 					end
 				end
 
@@ -172,7 +183,9 @@
 					if namespace ~= current_ns then
 						propattr = { xmlns = namespace }
 					end
-					if proptype == "string" and v is string then
+					if name_is_value and v is string then
+						out:tag(v, propattr):up();
+					elseif proptype == "string" and v is string then
 						out:text_tag(name, v, propattr)
 					elseif proptype == "number" and v is number then
 						out:text_tag(name, string.format("%g", v), propattr)