106#define FOREACH_CHILD(node, child) \
107 for (child = node->children; child != NULL; child = child->next) \
108 if (child->type == XML_ELEMENT_NODE)
110#define FOREACH_ATTR(node, attr) \
111 for (attr = node->properties; attr != NULL; attr = attr->next)
113#define FOREACH_NS(node, ns) \
114 for (ns = node->nsDef; ns != NULL; ns = ns->next)
118 return xmlDocGetRootElement(
node->doc);
147 str = (attr_ns !=
NULL)? xmlGetNsProp(
node, attr_name, attr_ns) :
148 xmlGetProp(
node, attr_name);
195 return xmlNodeGetContent((xmlNodePtr)
attr);
220 xmlAttrPtr
attr = xmlSetProp(
node, xdr_attr->name,
str);
313 xmlCopyProp(xsd_node, xdr_attr);
321 xmlNodePtr xsd_node, xsd_child, xdr_child;
337 while (tokBegin && *tokBegin)
339 while (*tokBegin &&
isspace(*tokBegin))
342 while (*tokEnd && !
isspace(*tokEnd))
344 if (tokEnd == tokBegin)
348 xmlSetProp(xsd_enum,
xs_value, tmp);
378 xmlCopyProp(xsd_node, xdr_attr);
388 FIXME(
"unexpected child <%s>\n", xdr_child->name);
397 xmlNodePtr xsd_node, xdr_child, xdr_attrType;
419 xmlCopyProp(xsd_node, xdr_attr);
424 FIXME(
"unexpected child <%s>\n", xdr_child->name);
444 xmlCopyProp(xsd_node, xdr_attr);
449 FIXME(
"unexpected child <%s>\n", xdr_child->name);
457 xmlNodePtr xdr_child, xsd_node;
482 xmlCopyProp(xsd_node, xdr_attr);
500 int n_attributes = 0, n_elements = 0, n_groups = 0;
503 xmlNodePtr xsd_node, xsd_type, xsd_child, xdr_child;
576 if (is_open && n_elements < 2 && !n_groups)
651 xsd_child = xsd_type;
663 else if (!n_attributes)
733 xmlCopyProp(xsd_node, xdr_attr);
752 FIXME(
"unexpected child <%s>\n", xdr_child->name);
760 xmlNodePtr xsd_node, xdr_child;
767 xmlDocSetRootElement((xmlDocPtr)
parent, xsd_node);
770 if (nsURI && *nsURI) xmlNewNs(xsd_node, nsURI,
NULL);
774 xmlSetNs(xsd_node,
ns);
784 else if (xdr_ns->prefix !=
NULL)
785 xmlNewNs(xsd_node, xdr_ns->href, xdr_ns->prefix);
787 FIXME(
"unexpected default xmlns: %s\n", xdr_ns->href);
792 xmlCopyProp(xsd_node, xdr_attr);
804 FIXME(
"unexpected child <%s>\n", xdr_child->name);
812 xmlDocPtr xsd_doc = xmlNewDoc(
NULL);
814 TRACE(
"(%p)\n", xdr_doc);
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
GLuint GLuint GLsizei GLenum type
GLuint GLdouble GLdouble GLint GLint order
static xmlNodePtr get_schema(xmlNodePtr node)
static const xmlChar xs_open[]
static const xmlChar xs_base[]
static const xmlChar xs_true[]
static xmlAttrPtr XDR_A_required(xmlAttrPtr xdr_attr, xmlNodePtr node)
static xmlNodePtr get_child_with_attr(xmlNodePtr node, xmlChar const *name, xmlChar const *attr_ns, xmlChar const *attr_name, xmlChar const *attr_val)
static const xmlChar xs_annotation[]
static const xmlChar xs_optional[]
static xmlNodePtr add_anyAttribute_child(xmlNodePtr parent)
enum _CONTENT_TYPE CONTENT_TYPE
static const xmlChar xs_enumeration[]
static const xmlChar xs_processContents[]
static xmlNsPtr get_dt_ns(xmlNodePtr node)
static const xmlChar XSD_href[]
static const xmlChar xs_values[]
static const xmlChar xs_extension[]
static const xmlChar DT_prefix[]
static const xmlChar xs_xsd_string[]
#define FOREACH_ATTR(node, attr)
static const xmlChar xs_complexType[]
static xmlAttrPtr XDR_A_dt_type(xmlAttrPtr xdr_attr, xmlNodePtr node)
static const xmlChar xs_choice[]
static xmlNodePtr XDR_E_group(xmlNodePtr xdr, xmlNodePtr parent)
static const xmlChar xs_strict[]
static const xmlChar XSD_prefix[]
static const xmlChar xs_seq[]
static const xmlChar xs_schema[]
static const xmlChar xs_name[]
static const xmlChar xs_maxOccurs[]
static xmlAttrPtr XDR_A_type(xmlAttrPtr xdr_attr, xmlNodePtr node)
static xmlChar * get_attr_val(xmlAttrPtr attr)
static const xmlChar xs_description[]
static const xmlChar xs_restriction[]
static xmlAttrPtr XDR_A_name(xmlAttrPtr xdr_attr, xmlNodePtr node)
static const xmlChar xs_type[]
static const xmlChar xs_simpleContent[]
static const xmlChar xs_mixed[]
static const xmlChar xs_no[]
static xmlAttrPtr XDR_A_minOccurs(xmlAttrPtr xdr_attr, xmlNodePtr node)
static const xmlChar xs_documentation[]
static xmlNodePtr XDR_E_AttributeType(xmlNodePtr xdr, xmlNodePtr parent)
static const xmlChar xs_order[]
static xmlNodePtr add_any_child(xmlNodePtr parent, BOOL set_occurs)
static const xmlChar xs_many[]
static const xmlChar xs_namespace[]
static const xmlChar xs_all[]
static const xmlChar xs_ElementType[]
static const xmlChar xs_simpleType[]
static const xmlChar xs_minOccurs[]
static const xmlChar xs_length[]
static const xmlChar xs_attribute[]
static const xmlChar xs_model[]
xmlDocPtr XDR_to_XSD_doc(xmlDocPtr xdr_doc, xmlChar const *nsURI)
static const xmlChar xs_any[]
static xmlNodePtr XDR_E_Schema(xmlNodePtr xdr, xmlNodePtr parent, xmlChar const *nsURI)
static xmlNodePtr XDR_E_element(xmlNodePtr xdr, xmlNodePtr parent)
static const xmlChar xs_content[]
static const xmlChar xs_default[]
static const xmlChar xs_group[]
static const xmlChar xs_textOnly[]
static xmlNodePtr XDR_E_ElementType(xmlNodePtr xdr, xmlNodePtr parent)
static const xmlChar xs_use[]
static const xmlChar xs_ref[]
static const xmlChar xs_value[]
static xmlChar * get_dt_type(xmlNodePtr xdr)
static xmlAttrPtr XDR_A_default(xmlAttrPtr xdr_attr, xmlNodePtr node)
static const xmlChar xs_unbounded[]
#define FOREACH_NS(node, ns)
static xmlNodePtr get_child(xmlNodePtr node, xmlChar const *name)
static const xmlChar xs_AttributeType[]
static const xmlChar xs_sequence[]
enum _ORDER_TYPE ORDER_TYPE
static const xmlChar xs_required[]
static const xmlChar xs_lax[]
static xmlAttrPtr XDR_A_maxOccurs(xmlAttrPtr xdr_attr, xmlNodePtr node)
static const xmlChar xs_datatype[]
static xmlNodePtr XDR_E_description(xmlNodePtr xdr, xmlNodePtr parent)
static const xmlChar xs_targetNamespace[]
static const xmlChar XDR_href[]
static const xmlChar xs_anyAttribute[]
#define FOREACH_CHILD(node, child)
static xmlAttrPtr copy_prop_ignore_ns(xmlAttrPtr xdr_attr, xmlNodePtr node)
static const xmlChar xs_eltOnly[]
static const xmlChar DT_href[]
static xmlNodePtr XDR_E_attribute(xmlNodePtr xdr, xmlNodePtr parent)
static const xmlChar xs_element[]
XMLPUBFUN xmlChar * xmlStrndup(const xmlChar *cur, int len)
XMLPUBFUN xmlChar * xmlStrcat(xmlChar *cur, const xmlChar *add)
XMLPUBFUN int xmlStrEqual(const xmlChar *str1, const xmlChar *str2)
XMLPUBFUN xmlChar * xmlStrdup(const xmlChar *cur)