From: Thierry Parmentelat Date: Tue, 29 Mar 2011 13:37:26 +0000 (+0200) Subject: transform wsdl into html using xslt to obtain readable API signatures X-Git-Tag: sfa-1.0-21-ckp1~74^2~39 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=8ada5e3725db6539fcab2f36bf98811312b9b479;p=sfa.git transform wsdl into html using xslt to obtain readable API signatures --- diff --git a/wsdl/Makefile b/wsdl/Makefile index 1abba026..7f6bd2cf 100644 --- a/wsdl/Makefile +++ b/wsdl/Makefile @@ -1,8 +1,11 @@ # attempt to update at build-time -WSDLS = sfa.wsdl registry.wsdl slice-manager.wsdl aggregate.wsdl +INTERFACES=sfa registry slice-manager aggregate -all: $(WSDLS) +WSDLS = $(foreach interface,$(INTERFACES),$(interface).wsdl) +HTMLS = $(foreach interface,$(INTERFACES),$(interface).html) + +all: $(WSDLS) $(HTMLS) # temporary: turn off wsdl generation as it is failing #TEMPORARY_OFF = yes @@ -39,7 +42,7 @@ $(DESTDIR)$(INSTALL_PATH)/%: $(DESTDIR)$(INSTALL_PATH) % install -c -m 0755 $(wsdl) $@ #################### clean -clean: +clean:: rm -f *wsdl install-clean: @@ -47,3 +50,10 @@ install-clean: .PHONY: all clean install install-clean +#################### generate html document +%.html: %.wsdl wsdl2html.xsl + xsltproc $(XSLTFLAGS) wsdl2html.xsl $*.wsdl > $@ || rm $@ + +clean:: + rm -f *.html + diff --git a/wsdl/sfa2wsdl.py b/wsdl/sfa2wsdl.py index f3a6b934..ddcb85d2 100755 --- a/wsdl/sfa2wsdl.py +++ b/wsdl/sfa2wsdl.py @@ -41,6 +41,13 @@ class WSDLGen: def __init__(self, interface_options): self.interface_options = interface_options + def interface_name (self): + if self.interface_options.aggregate: return "aggregate" + elif self.interface_options.slicemgr: return "slicemgr" + elif self.interface_options.registry: return "registry" + elif self.interface_options.component: return "component" + else: return "unknown" + def filter_argname(self,argname): if (not self.interface_options.lite or (argname!="cred")): if (argname.find('(') != -1): @@ -172,7 +179,7 @@ class WSDLGen: #print - in_el = self.wsdl.firstChild.appendChild(self.wsdl.createElement("message")) + in_el = self.wsdl.lastChild.appendChild(self.wsdl.createElement("message")) in_el.setAttribute("name", method + "_in") for service_name in function.interfaces: @@ -194,7 +201,7 @@ class WSDLGen: # Return type return_type = function.returns - out_el = self.wsdl.firstChild.appendChild(self.wsdl.createElement("message")) + out_el = self.wsdl.lastChild.appendChild(self.wsdl.createElement("message")) out_el.setAttribute("name", method + "_out") ret_part = out_el.appendChild(self.wsdl.createElement("part")) ret_part.setAttribute("name", "Result") @@ -202,7 +209,7 @@ class WSDLGen: # Port connecting arguments with return type - port_el = self.wsdl.firstChild.appendChild(self.wsdl.createElement("portType")) + port_el = self.wsdl.lastChild.appendChild(self.wsdl.createElement("portType")) port_el.setAttribute("name", method + "_port") op_el = port_el.appendChild(self.wsdl.createElement("operation")) @@ -218,7 +225,7 @@ class WSDLGen: # Bindings - bind_el = self.wsdl.firstChild.appendChild(self.wsdl.createElement("binding")) + bind_el = self.wsdl.lastChild.appendChild(self.wsdl.createElement("binding")) bind_el.setAttribute("name", method + "_binding") bind_el.setAttribute("type", "tns:" + method + "_port") @@ -250,7 +257,7 @@ class WSDLGen: def add_wsdl_services(self): for service in self.services.keys(): if (getattr(self.interface_options,service)): - service_el = self.wsdl.firstChild.appendChild(self.wsdl.createElement("service")) + service_el = self.wsdl.lastChild.appendChild(self.wsdl.createElement("service")) service_el.setAttribute("name", service) for method in self.services[service]: @@ -265,43 +272,45 @@ class WSDLGen: def compute_wsdl_definitions(self): wsdl_text_header = """ + - """ % (globals.plc_ns,globals.plc_ns,globals.plc_ns) + """ % (self.interface_name(),globals.plc_ns,globals.plc_ns,globals.plc_ns) self.wsdl = xml.dom.minidom.parseString(wsdl_text_header) def compute_wsdl_definitions_and_types(self): wsdl_text_header = """ + - + - """ % (globals.plc_ns, globals.plc_ns, globals.plc_ns, globals.plc_ns) + """ % (self.interface_name(),globals.plc_ns, globals.plc_ns, globals.plc_ns, globals.plc_ns) self.types = xml.dom.minidom.parseString(wsdl_text_header) def add_wsdl_types(self): wsdl_types = self.wsdl.importNode(self.types.getElementsByTagName("types")[0], True) - self.wsdl.firstChild.appendChild(wsdl_types) + self.wsdl.lastChild.appendChild(wsdl_types) def generate_wsdl(self): self.compute_wsdl_definitions_and_types() diff --git a/wsdl/wsdl2html.xsl b/wsdl/wsdl2html.xsl new file mode 100644 index 00000000..3ad341a8 --- /dev/null +++ b/wsdl/wsdl2html.xsl @@ -0,0 +1,48 @@ + + + + + + + + + + <xsl:value-of select="./@name" /> + + + +
methodinout
+ + +
+ + + + + + + + + + + + +() + + + + + + + + + + + +
+