spec2wsdl.xsl 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. Licensed Materials - Property of IBM
  4. IBM Cognos Products: CCS
  5. (c) Copyright IBM Corp. 2005, 2010
  6. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  7. -->
  8. <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:cog8="http://developer.cognos.com/schemas/report/5.0/" xmlns:raas="http://developer.cognos.com/schemas/raas/1" xmlns:plnk="http://schemas.xmlsoap.org/ws/2003/05/partner-link/">
  9. <xsl:template match="/">
  10. <wsdl:definitions xmlns:y="http://developer.cognos.com/schemas/raas/1" xmlns:bibus="http://developer.cognos.com/schemas/bibus/3/" targetNamespace="http://developer.cognos.com/schemas/raas/1">
  11. <wsdl:types>
  12. <xs:schema elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="http://developer.cognos.com/schemas/bibus/3/">
  13. <xs:import namespace="http://schemas.xmlsoap.org/soap/encoding/" schemaLocation="http://schemas.xmlsoap.org/soap/encoding/"/>
  14. <xs:element name="biBusHeader" type="bibus:biBusHeader"/>
  15. <xs:complexType name="biBusHeader">
  16. <xs:sequence>
  17. <xs:any maxOccurs="unbounded"/>
  18. </xs:sequence>
  19. </xs:complexType>
  20. </xs:schema>
  21. <xs:schema elementFormDefault="qualified" attributeFormDefault="unqualified" xmlns="http://developer.cognos.com/schemas/raas/1" targetNamespace="http://developer.cognos.com/schemas/raas/1">
  22. <xs:complexType name="ReportType">
  23. <xs:sequence>
  24. <xsl:if test="cog8:report/cog8:layouts/cog8:layout/cog8:reportPages/cog8:page">
  25. <xsl:for-each select="cog8:report/cog8:layouts/cog8:layout/cog8:reportPages/cog8:page">
  26. <xsl:call-template name="GeneratePageElements">
  27. <xsl:with-param name="isArray">false</xsl:with-param>
  28. <xsl:with-param name="pageId">
  29. <xsl:value-of select="./@name"/>
  30. </xsl:with-param>
  31. </xsl:call-template>
  32. </xsl:for-each>
  33. </xsl:if>
  34. <xsl:if test="cog8:report/cog8:layouts/cog8:layout/cog8:reportPages/cog8:pageSet">
  35. <xsl:for-each select="cog8:report/cog8:layouts/cog8:layout/cog8:reportPages/cog8:pageSet/cog8:pageOverallGroup/cog8:headerPages/cog8:page">
  36. <xsl:call-template name="GeneratePageElements">
  37. <xsl:with-param name="isArray">true</xsl:with-param>
  38. <xsl:with-param name="pageId">
  39. <xsl:value-of select="./@name"/>
  40. </xsl:with-param>
  41. </xsl:call-template>
  42. </xsl:for-each>
  43. <xsl:for-each select="cog8:report/cog8:layouts/cog8:layout/cog8:reportPages/cog8:pageSet/cog8:detailPages/cog8:page">
  44. <xsl:call-template name="GeneratePageElements">
  45. <xsl:with-param name="isArray">true</xsl:with-param>
  46. <xsl:with-param name="pageId">
  47. <xsl:value-of select="./@name"/>
  48. </xsl:with-param>
  49. </xsl:call-template>
  50. </xsl:for-each>
  51. <xsl:for-each select="cog8:report/cog8:layouts/cog8:layout/cog8:reportPages/cog8:pageSet/cog8:pageOverallGroup/cog8:footerPages/cog8:page">
  52. <xsl:call-template name="GeneratePageElements">
  53. <xsl:with-param name="pageId">
  54. <xsl:value-of select="./@name"/>
  55. </xsl:with-param>
  56. <xsl:with-param name="isArray">true</xsl:with-param>
  57. </xsl:call-template>
  58. </xsl:for-each>
  59. </xsl:if>
  60. <xs:element name="styleGroup" minOccurs="0" maxOccurs="unbounded" type="raas:StyleGroup"/>
  61. <xs:element name="resultStatus" type="raas:ResultStatusType"/>
  62. </xs:sequence>
  63. </xs:complexType>
  64. <xsl:apply-templates select="cog8:report/cog8:layouts/cog8:layout/cog8:reportPages/*"/>
  65. <xsl:apply-templates select="cog8:report/cog8:layouts/cog8:layout/cog8:reportPages/cog8:page/*"/>
  66. <xsl:apply-templates select="cog8:report/cog8:layouts/cog8:layout/cog8:reportPages/cog8:pageSet/cog8:pageOverallGroup/cog8:headerPages/cog8:page/*"/>
  67. <xsl:apply-templates select="cog8:report/cog8:layouts/cog8:layout/cog8:reportPages/cog8:pageSet/cog8:detailPages/cog8:page/*"/>
  68. <xsl:apply-templates select="cog8:report/cog8:layouts/cog8:layout/cog8:reportPages/cog8:pageSet/cog8:pageOverallGroup/cog8:footerPages/cog8:page/*"/>
  69. <xs:element name="getReportRequest" type="raas:GetReportRequestType"/>
  70. <xs:element name="getReportResponse" type="raas:GetReportResponseType"/>
  71. <xs:complexType name="ResultStatusType">
  72. <xs:sequence>
  73. <xs:element name="responseCode" type="raas:ResponseCodeEnum"/>
  74. <xs:element name="message" type="xs:string" minOccurs="0"/>
  75. <xs:element name="url" type="xs:string" minOccurs="0"/>
  76. </xs:sequence>
  77. </xs:complexType>
  78. <xs:simpleType name="VersionEnum">
  79. <xs:restriction base="xs:string">
  80. <xs:enumeration value="NEW"/>
  81. <xs:enumeration value="LATEST"/>
  82. </xs:restriction>
  83. </xs:simpleType>
  84. <xs:complexType name="GetReportRequestType">
  85. <xs:sequence>
  86. <xs:element name="versionType" type="raas:VersionEnum"/>
  87. <xs:element name="promptID" type="xs:string" minOccurs="0"/>
  88. <xs:element name="promptValues" type="raas:PromptValue" minOccurs="0" maxOccurs="unbounded"/>
  89. </xs:sequence>
  90. </xs:complexType>
  91. <xs:complexType name="GetReportResponseType">
  92. <xs:sequence>
  93. <xs:element name="report" type="raas:ReportType" minOccurs="0"/>
  94. <xs:element name="status" type="raas:ResultStatusType"/>
  95. <xs:element name="extension" type="xs:anyType" minOccurs="0"/>
  96. </xs:sequence>
  97. </xs:complexType>
  98. </xs:schema>
  99. </wsdl:types>
  100. <wsdl:message name="BiBusHeader">
  101. <wsdl:part name="bibus" element="bibus:biBusHeader"/>
  102. </wsdl:message>
  103. <wsdl:message name="GetReportIn">
  104. <wsdl:part name="request" element="raas:getReportRequest"/>
  105. </wsdl:message>
  106. <wsdl:message name="GetReportOut">
  107. <wsdl:part name="response" element="raas:getReportResponse"/>
  108. </wsdl:message>
  109. <wsdl:portType name="CognosReportServicePort">
  110. <wsdl:operation name="getReport">
  111. <wsdl:input message="y:GetReportIn"/>
  112. <wsdl:output message="y:GetReportOut"/>
  113. </wsdl:operation>
  114. </wsdl:portType>
  115. <wsdl:binding name="CognosReportServiceBinding" type="y:CognosReportServicePort">
  116. <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
  117. <wsdl:operation name="getReport">
  118. <soap:operation soapAction="http://developer.cognos.com/schemas/rds/2"/>
  119. <wsdl:input>
  120. <soap:header required="false" message="y:BiBusHeader" part="bibus" use="literal" namespace="http://developer.cognos.com/schemas/bibus/3/"/>
  121. <soap:body use="literal" namespace="http://developer.cognos.com/schemas/raas/1"/>
  122. </wsdl:input>
  123. <wsdl:output>
  124. <soap:header required="false" message="y:BiBusHeader" part="bibus" use="literal" namespace="http://developer.cognos.com/schemas/bibus/3/"/>
  125. <soap:body use="literal" namespace="http://developer.cognos.com/schemas/raas/1"/>
  126. </wsdl:output>
  127. </wsdl:operation>
  128. </wsdl:binding>
  129. <wsdl:service name="CognosReportService">
  130. <wsdl:port binding="y:CognosReportServiceBinding" name="CognosReportService">
  131. <soap:address location="@ENDPOINT@"/>
  132. </wsdl:port>
  133. </wsdl:service>
  134. <plnk:partnerLinkType name="CognosReportServicePort_PL">
  135. <plnk:role name="CognosReportServicePort_Role">
  136. <plnk:portType name="y:CognosReportServicePort"/>
  137. </plnk:role>
  138. </plnk:partnerLinkType>
  139. </wsdl:definitions>
  140. </xsl:template>
  141. <xsl:template name="GeneratePageElements">
  142. <xsl:param name="pageId"/>
  143. <xsl:param name="isArray"/>
  144. <xs:element>
  145. <xsl:attribute name="name"><xsl:value-of select="$pageId"/></xsl:attribute>
  146. <xsl:attribute name="type"><xsl:value-of select="concat('raas:', $pageId, '_PageType')"/></xsl:attribute>
  147. <xsl:if test="$isArray = 'true'">
  148. <xsl:attribute name="maxOccurs">unbounded</xsl:attribute>
  149. </xsl:if>
  150. </xs:element>
  151. </xsl:template>
  152. <xsl:template match="cog8:pageSet">
  153. <xsl:apply-templates select="cog8:pageOverallGroup/cog8:headerPages/cog8:page"/>
  154. <xsl:apply-templates select="cog8:detailPages/cog8:page"/>
  155. <xsl:apply-templates select="cog8:pageOverallGroup/cog8:footerPages/cog8:page"/>
  156. </xsl:template>
  157. <xsl:template match="cog8:page">
  158. <xs:complexType>
  159. <xsl:attribute name="name"><xsl:value-of select="concat(@name,'_PageType')"/></xsl:attribute>
  160. <xs:sequence>
  161. <xsl:if test="cog8:pageHeader">
  162. <xs:element name="header">
  163. <xsl:attribute name="type"><xsl:value-of select="concat('raas:',@name,'_HeaderType')"/></xsl:attribute>
  164. </xs:element>
  165. </xsl:if>
  166. <xsl:if test="cog8:pageBody">
  167. <xs:element name="body">
  168. <xsl:attribute name="type"><xsl:value-of select="concat('raas:',@name,'_BodyType')"/></xsl:attribute>
  169. </xs:element>
  170. </xsl:if>
  171. <xsl:if test="cog8:pageFooter">
  172. <xs:element name="footer">
  173. <xsl:attribute name="type"><xsl:value-of select="concat('raas:',@name,'_FooterType')"/></xsl:attribute>
  174. </xs:element>
  175. </xsl:if>
  176. </xs:sequence>
  177. </xs:complexType>
  178. </xsl:template>
  179. <xsl:template match="cog8:pageHeader">
  180. <xsl:variable name="pageId">
  181. <xsl:value-of select="../@name"/>
  182. </xsl:variable>
  183. <xs:complexType>
  184. <xsl:attribute name="name"><xsl:value-of select="concat($pageId,'_HeaderType')"/></xsl:attribute>
  185. <xs:sequence>
  186. <xsl:apply-templates select="cog8:contents/*"/>
  187. </xs:sequence>
  188. </xs:complexType>
  189. </xsl:template>
  190. <xsl:template match="cog8:pageBody">
  191. <xsl:variable name="pageId">
  192. <xsl:value-of select="../@name"/>
  193. </xsl:variable>
  194. <xs:complexType>
  195. <xsl:attribute name="name"><xsl:value-of select="concat($pageId,'_BodyType')"/></xsl:attribute>
  196. <xs:sequence>
  197. <xsl:apply-templates select="cog8:contents/*"/>
  198. </xs:sequence>
  199. </xs:complexType>
  200. </xsl:template>
  201. <xsl:template match="cog8:pageFooter">
  202. <xsl:variable name="pageId">
  203. <xsl:value-of select="../@name"/>
  204. </xsl:variable>
  205. <xs:complexType>
  206. <xsl:attribute name="name"><xsl:value-of select="concat($pageId,'_FooterType')"/></xsl:attribute>
  207. <xs:sequence>
  208. <xsl:apply-templates select="cog8:contents/*"/>
  209. </xs:sequence>
  210. </xs:complexType>
  211. </xsl:template>
  212. <xsl:template match="cog8:block">
  213. <xsl:apply-templates select="cog8:contents/*"/>
  214. </xsl:template>
  215. <xsl:template match="cog8:list">
  216. <xsl:if test="@name">
  217. <xs:element >
  218. <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
  219. <xsl:attribute name="type"><xsl:value-of select="concat('raas:', @name, '_top_ListGroup')"/></xsl:attribute>
  220. </xs:element>
  221. </xsl:if>
  222. </xsl:template>
  223. <xsl:template match="cog8:crosstab">
  224. <xsl:if test="@name">
  225. <xs:element type="raas:CrossTab">
  226. <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
  227. </xs:element>
  228. </xsl:if>
  229. </xsl:template>
  230. <xsl:template match="cog8:textItem">
  231. <xsl:if test="@name">
  232. <xs:element type="raas:TextFrame">
  233. <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
  234. </xs:element>
  235. </xsl:if>
  236. </xsl:template>
  237. <xsl:template match="cog8:image">
  238. <xsl:if test="@name">
  239. <xs:element type="raas:Image">
  240. <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
  241. </xs:element>
  242. </xsl:if>
  243. </xsl:template>
  244. <xsl:template match="cog8:TOCEntry">
  245. <xsl:if test="@name">
  246. <xs:element type="raas:bmrk">
  247. <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
  248. </xs:element>
  249. </xsl:if>
  250. </xsl:template>
  251. <xsl:template match="cog8:bookmark">
  252. <xsl:if test="@name">
  253. <xs:element type="raas:bmrk">
  254. <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
  255. </xs:element>
  256. </xsl:if>
  257. </xsl:template>
  258. <xsl:template match="cog8:button">
  259. <!--Not yet handled-->
  260. </xsl:template>
  261. <xsl:template match="cog8:promptButton">
  262. <!--Not yet handled-->
  263. </xsl:template>
  264. <xsl:template match="cog8:richTextItem">
  265. <xsl:if test="@name">
  266. <xs:element type="raas:RichText">
  267. <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
  268. </xs:element>
  269. </xsl:if>
  270. </xsl:template>
  271. <xsl:template match="cog8:hyperlink">
  272. <xsl:if test="@name">
  273. <xs:element type="raas:hlink">
  274. <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
  275. </xs:element>
  276. </xsl:if>
  277. </xsl:template>
  278. <xsl:template match="cog8:HTMLItem">
  279. <xsl:if test="@name">
  280. <xs:element type="raas:HTML">
  281. <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
  282. </xs:element>
  283. </xsl:if>
  284. </xsl:template>
  285. <xsl:template match="cog8:repeater">
  286. <xsl:if test="@name">
  287. <xs:element type="raas:rept">
  288. <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
  289. </xs:element>
  290. </xsl:if>
  291. </xsl:template>
  292. <xsl:template match="cog8:repeaterTable">
  293. <xsl:if test="@name">
  294. <xs:element type="raas:reptbl">
  295. <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
  296. </xs:element>
  297. </xsl:if>
  298. </xsl:template>
  299. <xsl:template match="cog8:TOC">
  300. <xsl:if test="@name">
  301. <xs:element type="raas:toc">
  302. <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
  303. </xs:element>
  304. </xsl:if>
  305. </xsl:template>
  306. <xsl:template match="cog8:fieldSet">
  307. <xsl:apply-templates select="cog8:contents/*"/>
  308. </xsl:template>
  309. <xsl:template match="cog8:table">
  310. <xsl:apply-templates select="cog8:tableRows/cog8:tableRow/cog8:tableCells/cog8:tableCell/cog8:contents/*"/>
  311. </xsl:template>
  312. <xsl:template match="cog8:pieChart | cog8:paretoChart | cog8:scatterChart | cog8:polarChart | cog8:radarChart | cog8:progressiveChart | cog8:combinationChart | cog8:bubbleChart | cog8:threeDCombinationChart | cog8:threeDScatterChart | cog8:gaugeChart | cog8:mapChart | cog8:metricsChart ">
  313. <xsl:if test="@name">
  314. <xs:element type="raas:Chart">
  315. <xsl:attribute name="name"><xsl:value-of select="@name"/></xsl:attribute>
  316. </xs:element>
  317. </xsl:if>
  318. </xsl:template>
  319. </xsl:stylesheet>