equal
deleted
inserted
replaced
534 return values |
534 return values |
535 return GetModelNameList |
535 return GetModelNameList |
536 |
536 |
537 def GenerateAnyInfos(infos): |
537 def GenerateAnyInfos(infos): |
538 |
538 |
|
539 def GetTextElement(tree): |
|
540 if infos["namespace"][0] == "##any": |
|
541 return tree.xpath("p")[0] |
|
542 return tree.xpath("ns:p", namespaces={"ns": infos["namespace"][0]})[0] |
|
543 |
539 def ExtractAny(tree): |
544 def ExtractAny(tree): |
540 if infos["namespace"][0] == "##any": |
545 return GetTextElement(tree).text |
541 return tree.xpath("p/text()")[0] |
|
542 return tree.xpath("ns:p/text()", namespaces={"ns": infos["namespace"][0]})[0] |
|
543 |
546 |
544 def GenerateAny(tree, value): |
547 def GenerateAny(tree, value): |
545 if infos["namespace"][0] == "##any": |
548 GetTextElement(tree).text = etree.CDATA(value) |
546 p = tree.xpath("p")[0] |
|
547 else: |
|
548 p = tree.xpath("ns:p", namespaces={"ns": infos["namespace"][0]})[0] |
|
549 p.text = etree.CDATA(value) |
|
550 |
549 |
551 def InitialAny(): |
550 def InitialAny(): |
552 if infos["namespace"][0] == "##any": |
551 if infos["namespace"][0] == "##any": |
553 element_name = "p" |
552 element_name = "p" |
554 else: |
553 else: |
1393 value = self.get(name) |
1392 value = self.get(name) |
1394 if value is not None: |
1393 if value is not None: |
1395 return attribute_infos["attr_type"]["extract"](value, extract=False) |
1394 return attribute_infos["attr_type"]["extract"](value, extract=False) |
1396 elif attribute_infos.has_key("fixed"): |
1395 elif attribute_infos.has_key("fixed"): |
1397 return attribute_infos["attr_type"]["extract"](attribute_infos["fixed"], extract=False) |
1396 return attribute_infos["attr_type"]["extract"](attribute_infos["fixed"], extract=False) |
1398 return attribute_infos["attr_type"]["initial"]() |
1397 elif attribute_infos.has_key("default"): |
|
1398 return attribute_infos["attr_type"]["extract"](attribute_infos["default"], extract=False) |
|
1399 return None |
1399 |
1400 |
1400 elif elements.has_key(name): |
1401 elif elements.has_key(name): |
1401 element_infos = elements[name] |
1402 element_infos = elements[name] |
1402 element_infos["elmt_type"] = FindTypeInfos(factory, element_infos["elmt_type"]) |
1403 element_infos["elmt_type"] = FindTypeInfos(factory, element_infos["elmt_type"]) |
1403 if element_infos["type"] == CHOICE: |
1404 if element_infos["type"] == CHOICE: |
1458 |
1459 |
1459 for element in self.xpath(element_xpath, namespaces=factory.NSMAP): |
1460 for element in self.xpath(element_xpath, namespaces=factory.NSMAP): |
1460 self.remove(element) |
1461 self.remove(element) |
1461 |
1462 |
1462 if value is not None: |
1463 if value is not None: |
1463 previous_elements_xpath = "|".join(map( |
1464 element_idx = elements.keys().index(name) |
1464 lambda x: "%s:%s" % (factory.TargetNamespace, x) |
1465 if element_idx > 0: |
1465 if x != "content" |
1466 previous_elements_xpath = "|".join(map( |
1466 else elements["content"]["elmt_type"]["choices_xpath"](), |
1467 lambda x: "%s:%s" % (factory.TargetNamespace, x) |
1467 elements.keys()[elements.keys().index(name)])) |
1468 if x != "content" |
1468 |
1469 else elements["content"]["elmt_type"]["choices_xpath"](), |
1469 insertion_point = len(self.xpath(previous_elements_xpath, namespaces=factory.NSMAP)) |
1470 elements.keys()[:element_idx])) |
|
1471 |
|
1472 insertion_point = len(self.xpath(previous_elements_xpath, namespaces=factory.NSMAP)) |
|
1473 else: |
|
1474 insertion_point = 0 |
1470 |
1475 |
1471 if not isinstance(value, ListType): |
1476 if not isinstance(value, ListType): |
1472 value = [value] |
1477 value = [value] |
1473 |
1478 |
1474 for element in reversed(value): |
1479 for element in reversed(value): |