new_connection_finish.xts 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. Licensed Materials - Property of IBM
  4. IBM Cognos Products: ps
  5. (C) Copyright IBM Corp. 2005, 2013
  6. US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp.
  7. -->
  8. <!--
  9. Copyright (C) 2008 Cognos ULC, an IBM Company. All rights reserved.
  10. Cognos (R) is a trademark of Cognos ULC, (formerly Cognos Incorporated).
  11. -->
  12. <xts:morphlet xmlns:xts="http://developer.cognos.com/schemas/xts/" xmlns:cml="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/cml/1/" xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/" messageBase="messages/portal.xml, messages/portalRL.xml" includeConfig="true" requiredCapability="canUseDataSourcesTool">
  13. <!--
  14. ===============================================================================================
  15. formlogic_init - standard form logic initialization
  16. ===============================================================================================
  17. -->
  18. <xts:block id="formlogic_init" type="exec" mode="interpret" processor="XSLT" path="/logicsheets/formlogic_init.xslt" nodelist="env,credential,system,http"/>
  19. <!--
  20. ===============================================================================================
  21. Send a request to FM.
  22. ===============================================================================================
  23. -->
  24. <xts:block id="checkDataSource" processor="XSLT" type="exec" dependency="formlogic_init" condition=".[/root/env/param[@name='frmcmd']='' or /root/env/param[@name='frmcmd']!='failure']" mandatory="false">
  25. <xts:logicsheet path="logicsheets/cm-logic.xsl"/>
  26. <xts:logicsheet path="logicsheets/buslogic.xslt"/>
  27. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:send="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/brl/1/" xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/" xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt">
  28. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  29. <xsl:variable name="datasourceName" select="/root/env/param[@name = 'm_p_defaultName']"/>
  30. <xsl:variable name="newDataSourceID" select="/root/env/param[@name='newDataSourceID']"/>
  31. <xsl:variable name="newDataSourcePath" select="/root/env/param[@name='newDataSourcePath']"/>
  32. <xsl:variable name="class-filter">
  33. <xsl:text>[@objectClass='dataSourceConnection']</xsl:text>
  34. </xsl:variable>
  35. <xsl:template match="/">
  36. <!-- Check if the datasource can be used to create a package for CMM. -->
  37. <xsl:if test="$datasourceName != ''">
  38. <xts:sequence>
  39. <!-- FM: get the datasource -->
  40. <xts:append>
  41. <xts:transform src="transforms/fm/fm-params.xslt" processor="XSLT">
  42. <send:request provider="metadataService" faultBlock="handleMetadataLWMRequestError">
  43. <md1:updateMetadata xmlns:md1="http://developer.cognos.com/schemas/metadataService/1">
  44. <request>
  45. <xts:transform name="XMLEncode">
  46. <mdprovider type="transientAction" action="execute" seq="1">
  47. <transaction saved="false" seq="1">
  48. <action seq="1" type="IsLWM">
  49. <inputparams>
  50. <param seq="1" type="i18nstring">
  51. <value><xsl:value-of select="$datasourceName"/></value>
  52. </param>
  53. </inputparams>
  54. <domchanges/>
  55. <result success="t">
  56. <outputparams/>
  57. </result>
  58. </action>
  59. </transaction>
  60. </mdprovider>
  61. </xts:transform>
  62. </request>
  63. </md1:updateMetadata>
  64. </send:request>
  65. </xts:transform>
  66. </xts:append>
  67. <!-- CMM: get the DataSourceConnection -->
  68. <xts:append>
  69. <theDataSourceConnection>
  70. <xts:transform src="transforms/CM/post-process.xslt" processor="XSLT">
  71. <send:request provider="cm">
  72. <xts:transform src="transforms/CM/pre-process.xslt" processor="XSLT">
  73. <cm:query>
  74. <cm:requests>
  75. <cm:query>
  76. <cm:search>
  77. <xsl:value-of select="$newDataSourcePath"/>/*<xsl:value-of select="concat($class-filter, /root/system/param[@name='visible'])"/>
  78. </cm:search>
  79. <cm:properties>
  80. <cml:prop-base/>
  81. <cm:property name="connectionString"/>
  82. </cm:properties>
  83. </cm:query>
  84. </cm:requests>
  85. </cm:query>
  86. </xts:transform>
  87. </send:request>
  88. </xts:transform>
  89. </theDataSourceConnection>
  90. </xts:append>
  91. </xts:sequence>
  92. </xsl:if>
  93. </xsl:template>
  94. </xsl:stylesheet>
  95. </xts:block>
  96. <!--
  97. ===============================================================================================
  98. handleMetadataLWMRequestError - handle the error occurring when requesting LWM to metadata service
  99. Do nothing for now
  100. ===============================================================================================
  101. -->
  102. <xts:block id="handleMetadataLWMRequestError" type="fault">
  103. <ignoreError/>
  104. </xts:block>
  105. <!--
  106. ===============================================================================================
  107. renderPackage - render the confirmation dialog or redirect the browser to the directory tool.
  108. ===============================================================================================
  109. -->
  110. <xts:block id="renderPackage" mode="output" processor="XSLT" type="exec" mimeType="text/html" mandatory="false" dependency="checkDataSource">
  111. <!-- get the presentation theme -->
  112. <xts:logicsheet path="logicsheets/portal.xsl"/>
  113. <xts:logicsheet path="logicsheets/presentation/dialog/connections.xslt"/>
  114. <xts:logicsheet path="logicsheets/presentation/dialog/templates.xsl"/>
  115. <xts:logicsheet path="logicsheets/presentation/dialog/framework.xsl"/>
  116. <xts:logicsheet path="logicsheets/presentation/layout.xsl"/>
  117. <xts:logicsheet path="logicsheets/presentation/dialog/presentation.xsl"/>
  118. <xts:logicsheet path="logicsheets/presentation/controls/framework.xsl"/>
  119. <xts:logicsheet path="logicsheets/presentation/controls/presentation.xsl"/>
  120. <!-- apply the form logic -->
  121. <xts:logicsheet path="logicsheets/formlogic.xslt"/>
  122. <xts:logicsheet path="logicsheets/validation.xslt"/>
  123. <xts:logicsheet path="logicsheets/presentation/touch_up.xslt"/>
  124. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  125. xmlns:dcx="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/connections/1/"
  126. xmlns:dt="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/templates/"
  127. xmlns:lyt="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/layout/"
  128. xmlns:pf="http://developer.cognos.com/schemas/xts/pf"
  129. xmlns:dp="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/presentation/"
  130. xmlns:df="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/framework/"
  131. xmlns:cf="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/controls/framework/"
  132. xmlns:cp="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/controls/presentation/"
  133. xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
  134. xmlns:utml="http://developer.cognos.com/schemas/xts/logicsheet/xslt/formlogic/"
  135. xmlns:out="dummy-uri"
  136. exclude-result-prefixes="xsl dcx cf cp pf df dp dt lyt utml">
  137. <xsl:output method="html" version="1.0" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>
  138. <!-- current file name -->
  139. <xsl:variable name="mname" select="'new_connection_finish.xts'"/>
  140. <!-- add any theme variables -->
  141. <pf:variables/>
  142. <xsl:variable name="datasourceName" select="/root/env/param[@name = 'm_p_defaultName']"/>
  143. <xsl:variable name="fromCMM" select="key('env-param', 'fromCMM')"/>
  144. <xsl:variable name="fromBMT" select="key('env-param', 'from_bmt')"/>
  145. <xsl:variable name="fromTransformer" select="key('env-param', 'from_transf')"/>
  146. <xsl:variable name="notFrmCmdFailure" select="key('env-param', 'frmcmd')!='failure'"/>
  147. <xsl:variable name="backURL" select="key('env-param', 'backURL')"/>
  148. <xsl:variable name="storeId"><xsl:value-of select="/root/env/param[@name='newDataSourceID']"/></xsl:variable>
  149. <xsl:variable name="searchPath"><xsl:value-of select="/root/env/param[@name='newDataSourcePath']"/></xsl:variable>
  150. <xsl:variable name="dataConnectionString">
  151. <xsl:value-of select="/root/*[local-name()='theDataSourceConnection']/*[local-name()='queryResponse']/*[local-name()='queryReply']/*[local-name()='dataSourceConnection']/*[local-name()='connectionString']"/>
  152. </xsl:variable>
  153. <xsl:variable name="connectionString" select="contains($dataConnectionString, ';LOCAL;OL;DBInfo_Type=MS;') or contains($dataConnectionString, ';LOCAL;D2;') or contains($dataConnectionString, ';LOCAL;OR;')"/>
  154. <xsl:variable name="isLWM" select="/root/theFMDataSource/*[local-name()='response']/*[local-name() = 'outputparams']/*[local-name() = 'param']/."/>
  155. <xsl:variable name="canCreateMetricPackage" select="not($fromCMM) and not($fromBMT) and not($fromTransformer) and $userCanUseMetricsManagerAdministration and $connectionString"/>
  156. <xsl:variable name="canCreateLWMPackage" select="((not($fromCMM) and not($fromBMT)) or $fromTransformer) and ($isLWM and $isLWM='1') and $datasourceName != '' and $userCanUseSelfServicePackageWizard"/>
  157. <xsl:template match="/root">
  158. <xsl:choose>
  159. <xsl:when test="$notFrmCmdFailure and ($canCreateMetricPackage or $canCreateLWMPackage)">
  160. <xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html></xsl:text><dp:page longTitle="$product_name">
  161. <dp:meta>
  162. <pf:meta/> <!-- Standard meta tags -->
  163. </dp:meta>
  164. <dp:script>
  165. <!-- Help system -->
  166. <pf:help context="HID_DATA_SOURCES"/>
  167. </dp:script>
  168. </dp:page>
  169. <utml:form name="pform" method="post" action="{$gateway}">
  170. <dp:header>
  171. <dp:title><xts:string id="IDS_NEW_DATASOURCE_WIZARD_FINAL_TITLE"/></dp:title>
  172. <dp:close>
  173. <a href="javascript:doCancel();">
  174. <dp:closeMarker/>
  175. </a>
  176. </dp:close>
  177. </dp:header>
  178. <xsl:variable name="back-url" select="string(key('env-param', 'backURL'))"/>
  179. <xsl:variable name="encoded-back-url">
  180. <xsl:value-of select="xtsext:javascriptencode(xtsext:protect(xtsext:urlencode(string($back-url)),'url','url','getdata'))"/>
  181. </xsl:variable>
  182. <xsl:variable name="spacer">
  183. <img height="10" width="10">
  184. <xsl:attribute name="src"><xsl:value-of select="$webcontent"/>/images/space.gif</xsl:attribute>
  185. </img>
  186. </xsl:variable>
  187. <utml:input name="m_dataSourceName" type="hidden" value="(key('env-param', 'm_p_defaultName'))"/>
  188. <xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html></xsl:text><dp:page longTitle="title">
  189. <lyt:layout title="" style="1" border="no">
  190. <lyt:section>
  191. <dp:box valign="top">
  192. <dp:boxSection valign="bottom">
  193. <img width="32" height="32" align="top" hspace="10" id="maincontent">
  194. <xsl:attribute name="src">
  195. <xsl:value-of select="concat($webcontent, '/', $app, '/images/msg_information.gif')"/>
  196. </xsl:attribute>
  197. <xsl:attribute name="alt"><xts:string id="IDS_ICON_INFORMATION"/></xsl:attribute>
  198. </img>
  199. </dp:boxSection>
  200. <dp:boxSection valign="bottom">
  201. <dp:section1>
  202. <dp:text wrap="true" nospace="true">
  203. <xts:string id="IDS_FINISH_DATASOURCE_PARA1"><xts:param name="prodName"><xsl:value-of select="$product_name"/></xts:param></xts:string>
  204. </dp:text>
  205. </dp:section1>
  206. </dp:boxSection>
  207. </dp:box>
  208. <dp:box valign="bottom">
  209. <dp:boxSection valign="bottom">
  210. <img width="32" height="32" align="top" hspace="10">
  211. <xsl:attribute name="src"><xsl:value-of select="$webcontent"/>/images/space.gif</xsl:attribute>
  212. </img>
  213. </dp:boxSection>
  214. <dp:boxSection hgap="30">
  215. <dp:choice>
  216. <dp:section1>
  217. <utml:input type="checkbox" name="createNewPackage" value="n" utml:track="true" id="ctrl_createNewPackage">
  218. <xsl:if test="$fromTransformer!=''">
  219. <xsl:attribute name="disabled">true</xsl:attribute>
  220. <xsl:attribute name="checked">true</xsl:attribute>
  221. </xsl:if>
  222. </utml:input>
  223. </dp:section1>
  224. <dp:section2 for="ctrl_createNewPackage">
  225. <dp:text wrap="true">
  226. <xsl:choose>
  227. <xsl:when test="$canCreateLWMPackage">
  228. <xts:string id="IDS_NEW_DATASOURCE_WIZARD_CREATE_PACKAGE"/>
  229. </xsl:when>
  230. <xsl:when test="$canCreateMetricPackage">
  231. <xts:string id="IDS_NEW_DATASOURCE_WIZARD_CREATE_METRICPACKAGE"/>
  232. </xsl:when>
  233. </xsl:choose>
  234. </dp:text>
  235. </dp:section2>
  236. </dp:choice>
  237. </dp:boxSection>
  238. </dp:box>
  239. </lyt:section>
  240. </lyt:layout>
  241. </dp:page>
  242. <dp:footer>
  243. <df:button df:id="IDS_OK" df:style="href">
  244. <df:href>
  245. <xsl:text>javascript:createPackage();</xsl:text>
  246. </df:href>
  247. </df:button>
  248. <!-- Finish button -->
  249. <script language="javascript">
  250. function createPackage() {
  251. var fromTransformer = '<xsl:value-of select="$fromTransformer"/>';
  252. if (document.pform.createNewPackage.checked == true) {
  253. var canCreateLWMPackage = '<xsl:value-of select="$canCreateLWMPackage"/>';
  254. var canCreateMetricPackage = '<xsl:value-of select="$canCreateMetricPackage"/>';
  255. if (canCreateLWMPackage == 'true') {
  256. document.pform.m.value = "<xsl:value-of select="$app"/>/new_package.xts";
  257. document.pform.m_dataSourceName.value = '<xsl:value-of select="xtsext:javascriptencode($datasourceName)"/>';
  258. if (fromTransformer != '')
  259. {
  260. //Set back the datasource id before to call the new package
  261. var storeid = '<xsl:value-of select="$storeId"/>';
  262. if(window.external &amp;&amp; window.external.HasSetDataSourceStoreID )
  263. window.external.SetDataSourceStoreID( storeid );
  264. var searchPath = '<xsl:value-of select="xtsext:javascriptencode($searchPath)"/>';
  265. if(window.external &amp;&amp; window.external.HasSetDataSourceSearchPath )
  266. window.external.SetDataSourceSearchPath( searchPath );
  267. }
  268. document.pform.submit();
  269. } else if ( canCreateMetricPackage == 'true')
  270. {
  271. var store = '<xsl:value-of select="$storeId"/>';
  272. location.href= "<xsl:value-of select="$gateway"/>?b_action=mms.run&amp;pid=new_mpwizard_start&amp;datasourceId="+store+"&amp;ui.backURL=<xsl:value-of select="$encoded-back-url"/>";
  273. } else {
  274. if (fromTransformer != '')
  275. {
  276. //Return the datasource id if the user cannot create the package
  277. var storeid = '<xsl:value-of select="$storeId"/>';
  278. if(window.external &amp;&amp; window.external.HasSetDataSourceStoreID )
  279. window.external.SetDataSourceStoreID( storeid );
  280. var searchPath = '<xsl:value-of select="xtsext:javascriptencode($searchPath)"/>';
  281. if(window.external &amp;&amp; window.external.HasSetDataSourceSearchPath )
  282. window.external.SetDataSourceSearchPath( searchPath );
  283. window.external.OnClose(1);
  284. }
  285. else
  286. {
  287. location.href = "<xsl:value-of select="xtsext:javascriptencode($backURL)"/>";
  288. }
  289. }
  290. } else {
  291. // createNewPackage not checked
  292. if (fromTransformer != '')
  293. {
  294. //Return the datasource id if the user did not choose to create a package
  295. var storeid = '<xsl:value-of select="$storeId"/>';
  296. if (window.external &amp;&amp; window.external.HasSetDataSourceStoreID )
  297. window.external.SetDataSourceStoreID( storeid );
  298. var searchPath = '<xsl:value-of select="xtsext:javascriptencode($searchPath)"/>';
  299. if(window.external &amp;&amp; window.external.HasSetDataSourceSearchPath )
  300. window.external.SetDataSourceSearchPath( searchPath );
  301. window.external.OnClose(1);
  302. }
  303. else {
  304. location.href = "<xsl:value-of select="xtsext:javascriptencode($backURL)"/>";
  305. }
  306. }
  307. }
  308. function doCancel()
  309. {
  310. var fromTransformer = '<xsl:value-of select="$fromTransformer"/>';
  311. //new_connection_finish.xts is called only when we're not in CMM abd BMT.
  312. // Only in the case of Transformer and the portal.
  313. if (fromTransformer != '')
  314. {
  315. //Close the window when we're in Transformer.
  316. window.external.OnClose(1);
  317. } else
  318. {
  319. location.href = "<xsl:value-of select="xtsext:javascriptencode($backURL)"/>";
  320. }
  321. }
  322. </script>
  323. </dp:footer>
  324. </utml:form>
  325. </xsl:when>
  326. <xsl:when test="$fromTransformer!=''">
  327. <xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html></xsl:text><dp:page longTitle="$product_name">
  328. <dp:meta>
  329. <pf:meta/> <!-- Standard meta tags -->
  330. </dp:meta>
  331. <dp:script>
  332. <script language="javascript">
  333. function doCancel()
  334. {
  335. window.external.OnClose(1);
  336. }
  337. function doOK()
  338. {
  339. if(window.external &amp;&amp; window.external.HasSetPassport )
  340. window.external.SetPassport('<xsl:value-of select="xtsext:javascriptencode(string(/root/cookies/cookie[@name='cam_passport']))"/>');
  341. //Set back the datasource id
  342. var storeid = '<xsl:value-of select="$storeId"/>';
  343. if( window.external &amp;&amp; window.external.HasSetDataSourceStoreID )
  344. window.external.SetDataSourceStoreID( storeid );
  345. var searchPath = '<xsl:value-of select="xtsext:javascriptencode($searchPath)"/>';
  346. if(window.external &amp;&amp; window.external.HasSetDataSourceSearchPath )
  347. window.external.SetDataSourceSearchPath( searchPath );
  348. window.external.OnClose(0);
  349. }
  350. </script>
  351. <!-- Help system -->
  352. <pf:help context="HID_DATA_SOURCES"/>
  353. </dp:script>
  354. <utml:form name="pform" method="post" action="{$gateway}">
  355. <!-- this is the handler of the form command, which happens to be this morphlet... -->
  356. <dp:header>
  357. <!-- header titles-->
  358. <dp:title><xts:string id="IDS_WELCOME_DATASOURCE_TITLE_SUCCESS"/></dp:title>
  359. <dp:close><a href="javascript:doCancel()"><dp:closeMarker/></a></dp:close>
  360. </dp:header>
  361. <!-- display success message -->
  362. <lyt:layout style="1">
  363. <lyt:section>
  364. <dp:list>
  365. <dp:section>
  366. <dp:text wrap="true">
  367. <xsl:choose>
  368. <xsl:when test="key('env-param','frmcmd') = 'failure'">
  369. <xts:string id="IDS_CANCEL_DATASOURCE_PARA"/>
  370. </xsl:when>
  371. <xsl:otherwise>
  372. <xts:string id="IDS_FINISH_DATASOURCE_PARA1"><xts:param name="prodName"><xsl:value-of select="$product_name"/></xts:param></xts:string>
  373. </xsl:otherwise>
  374. </xsl:choose>
  375. </dp:text>
  376. </dp:section>
  377. </dp:list>
  378. <br/>
  379. </lyt:section>
  380. </lyt:layout>
  381. <dp:footer>
  382. <xsl:choose>
  383. <xsl:when test="key('env-param','frmcmd') = 'failure'">
  384. <df:button df:id="IDS_CLOSE" df:style="href" df:href="javascript:doCancel();"/>
  385. </xsl:when>
  386. <xsl:otherwise>
  387. <df:button df:id="IDS_CLOSE" df:style="href" df:href="javascript:doOK();"/>
  388. </xsl:otherwise>
  389. </xsl:choose>
  390. </dp:footer>
  391. </utml:form>
  392. </dp:page>
  393. </xsl:when>
  394. <xsl:otherwise>
  395. <xsl:call-template name="redirect">
  396. <xsl:with-param name="url" select="$backURL"/>
  397. </xsl:call-template>
  398. </xsl:otherwise>
  399. </xsl:choose>
  400. </xsl:template>
  401. <xsl:template name="redirect">
  402. <xsl:param name="url"/>
  403. <html>
  404. <head>
  405. <meta http-equiv="refresh">
  406. <xsl:attribute name="content">0; URL=<xsl:value-of select="$url"/></xsl:attribute>
  407. </meta>
  408. <title>
  409. <xts:string id="IDS_COGNOS_REPORTS"/>
  410. </title>
  411. </head>
  412. </html>
  413. </xsl:template>
  414. </xsl:stylesheet>
  415. </xts:block>
  416. <!--
  417. ===============================================================================================
  418. debug - display debug information
  419. ===============================================================================================
  420. -->
  421. <xts:block id="debug" dependency="renderPackage" condition=".[/root/session/param[@name='debug']='1']" type="exec" mode="output" processor="XSLT" mandatory="false" mimeType="text/html">
  422. <!-- get the debug logic sheet -->
  423. <xts:logicsheet path="logicsheets/debuglogic.xslt"/>
  424. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:dbg="http://developer.cognos.com/schemas/xts/logicsheets/xslt/debug/" exclude-result-prefixes="dbg">
  425. <xsl:output method="html" version="1.0" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>
  426. <xsl:template match="/">
  427. <dbg:dumpxml select="/root"/>
  428. </xsl:template>
  429. </xsl:stylesheet>
  430. </xts:block>
  431. </xts:morphlet>