properties_basic.xts 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437
  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/" messageBase="messages/portal.xml, messages/portalRL.xml" includeConfig="true">
  13. <!--
  14. This morphlet (properties_basic.xts) is to show objects that don't quite fit the general properties mode.
  15. For example: output and documentContent. They will be shown in read-only mode and with limited
  16. information.
  17. Consists of the following blocks:
  18. formlogic_init - update various /root/env level parameters based on new or changed /root/env parameters.
  19. getTabs - build the /root/tabs/objects structure.
  20. buildMultiLang - build the /root/multiLang structure with /lang and /name leaf nodes.
  21. classNames - build the /root/objectClass/class structure.
  22. getContent - retrieve CM Information for this page.
  23. renderPage - render the general information properties tab page for an object specified in m_obj.
  24. -->
  25. <!--
  26. ===============================================================================================
  27. formlogic_init - standard form logic initialization
  28. ===============================================================================================
  29. -->
  30. <xts:block id="formlogic_init" type="exec" mode="interpret" processor="XSLT" path="/logicsheets/formlogic_init.xslt" nodelist="env,credential,system,http"/>
  31. <!-- Load object-specific property tabs map ============================================================== -->
  32. <xts:block id="getTabs" type="exec" mode="interpret" processor="XML" path="/portal/uiobjects_tabs.xml"/>
  33. <!--
  34. ===============================================================================================
  35. get_system_root - get system root from Configuration
  36. ===============================================================================================
  37. -->
  38. <xts:block id="get_system_root" type="exec" processor="XSLT" condition=".[/root/env/param[@name='m_class']='archiveLocation']" mandatory="false" mode="interpret">
  39. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  40. <xsl:template match="/">
  41. <!-- get file system root from the Configuration -->
  42. <xts:sequence>
  43. <xts:append>
  44. <xts:function name="getConfiguration">
  45. <xts:param name="archiveLocationFileSchemeRoot"/>
  46. </xts:function>
  47. </xts:append>
  48. </xts:sequence>
  49. </xsl:template>
  50. </xsl:stylesheet>
  51. </xts:block>
  52. <!--
  53. ===============================================================================================
  54. getContent - get our data from Content Manager
  55. ===============================================================================================
  56. -->
  57. <xts:block id="getContent" processor="XSLT" type="exec" dependency="formlogic_init get_system_root">
  58. <xts:logicsheet path="logicsheets/cm-logic.xsl"/>
  59. <xts:logicsheet path="logicsheets/buslogic.xslt"/>
  60. <xts:logicsheet path="logicsheets/portal.xsl"/>
  61. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
  62. xmlns:pf="http://developer.cognos.com/schemas/xts/pf"
  63. xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
  64. xmlns:cml="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/cml/1/" xmlns:send="http://developer.cognos.com/schemas/xts/logic-sheet/xslt/brl/1/"
  65. xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/">
  66. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  67. <pf:variables/>
  68. <xsl:template match="/">
  69. <xts:sequence>
  70. <xts:append>
  71. <xts:transform src="transforms/CM/post-process.xslt" processor="XSLT">
  72. <send:request provider="cm">
  73. <xts:transform src="transforms/CM/pre-process.xslt" processor="XSLT">
  74. <cm:query xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/">
  75. <cm:search>
  76. <xsl:value-of select="/root/env/param[@name='m_obj']"/>
  77. </cm:search>
  78. <cm:properties>
  79. <cml:prop-general/>
  80. <cm:property name="owner"/>
  81. <cm:property name="name"/>
  82. <cm:property name="documentType"/>
  83. <cm:property name="hasChildren"/>
  84. <cm:property name="defaultPortalAction"/>
  85. <cm:property name="mostRecentEventList"/>
  86. <cm:property name="defaultOutputFormat"/>
  87. <cm:property name="executionFormat"/>
  88. <cm:property name="executionPrompt"/>
  89. <cm:property name="parent"/>
  90. <cm:property name="gateway"/>
  91. <cm:property name="format"/>
  92. </cm:properties>
  93. </cm:query>
  94. </xts:transform>
  95. </send:request>
  96. </xts:transform>
  97. </xts:append>
  98. </xts:sequence>
  99. </xsl:template>
  100. </xsl:stylesheet>
  101. </xts:block>
  102. <!-- Build the multilingual XML structure /root/multiLangs/lang -->
  103. <xts:block id="buildMultiLang" dependency="getContent" type="exec" mode="interpret" processor="XSLT" path="/portal/multilingual.xml" condition=".[not(root/*[local-name()='queryResponse'][1] = '')]" mandatory="false"/>
  104. <xts:block id="missingObject" mode="output" processor="XSLT" type="exec" mimeType="text/html" dependency="formlogic_init getTabs getContent buildMultiLang classNames" condition=".[not(/root/*[local-name()='queryResponse']/*)]" mandatory="false" path="/portal/missing_object.xml">
  105. <xts:logicsheet path="logicsheets/portal.xsl"/>
  106. <xts:logicsheet path="logicsheets/presentation/dialog/framework.xsl"/>
  107. <xts:logicsheet path="logicsheets/presentation/dialog/presentation.xsl"/>
  108. <xts:logicsheet path="logicsheets/presentation/layout.xsl"/>
  109. </xts:block>
  110. <!--
  111. ===============================================================================================
  112. getObjects - get object class names
  113. ===============================================================================================
  114. -->
  115. <xts:block id="classNames" type="exec" mode="input" processor="XML" path="/portal/uiExtensions.xml">
  116. <xts:logicsheet path="/logicsheets/uiobjects/uiobjects_names.xslt"/>
  117. </xts:block>
  118. <!--
  119. ===============================================================================================
  120. renderPage - render the page
  121. ===============================================================================================
  122. -->
  123. <xts:block id="renderPage" mode="output" processor="XSLT" type="exec" mimeType="text/html" dependency="formlogic_init getTabs getContent buildMultiLang classNames" condition=".[/root/*[local-name()='queryResponse']/*]" mandatory="false">
  124. <xts:logicsheet path="logicsheets/portal.xsl"/>
  125. <xts:logicsheet path="logicsheets/cm-logic.xsl"/>
  126. <xts:logicsheet path="logicsheets/presentation/dialog/templates.xsl"/>
  127. <xts:logicsheet path="logicsheets/presentation/dialog/framework.xsl"/>
  128. <xts:logicsheet path="logicsheets/presentation/layout.xsl"/>
  129. <xts:logicsheet path="logicsheets/presentation/dialog/presentation.xsl"/>
  130. <xts:logicsheet path="logicsheets/presentation/controls/framework.xsl"/>
  131. <xts:logicsheet path="logicsheets/presentation/controls/presentation.xsl"/>
  132. <xts:logicsheet path="logicsheets/permissions.xsl"/>
  133. <xts:logicsheet path="logicsheets/formlogic_lite.xslt"/>
  134. <xts:logicsheet path="logicsheets/validation.xslt"/>
  135. <xts:logicsheet path="logicsheets/presentation/touch_up.xslt"/>
  136. <xsl:stylesheet version="1.0"
  137. xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  138. xmlns:pf="http://developer.cognos.com/schemas/xts/pf"
  139. xmlns:cm="http://developer.cognos.com/schemas/xts-cm/1/"
  140. xmlns:xtsext="xalan://com.cognos.xts.ext.XTSExt"
  141. xmlns:xts="http://developer.cognos.com/schemas/xts/"
  142. xmlns:lyt="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/layout/"
  143. xmlns:dt="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/templates/"
  144. xmlns:dp="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/presentation/"
  145. xmlns:df="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/dialog/framework/"
  146. xmlns:cf="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/controls/framework/"
  147. xmlns:cp="http://developer.cognos.com/schemas/xts/logicsheets/xslt/presentation/controls/presentation/"
  148. xmlns:utml="http://developer.cognos.com/schemas/xts/logicsheet/xslt/formlogic/"
  149. xmlns:bus="http://developer.cognos.com/schemas/bibus/3/"
  150. xmlns:pm="http://developer.cognos.com/schemas/xts/pm"
  151. exclude-result-prefixes="bus pf xts dt xsl cf cp df dp lyt cm utml pm xtsext">
  152. <xsl:output method="html" version="1.0" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>
  153. <xsl:variable name="mname" select="'properties_basic.xts'"/>
  154. <pf:variables/>
  155. <pf:documentFormats/>
  156. <pf:gen-icon/>
  157. <xsl:variable name="the-object" select="/root/cm:queryResponse/*"/>
  158. <!-- we're looking at a subscriptionFolder or reportDataServiceAgentDefinition -->
  159. <xsl:variable name="start-at-path">
  160. <xsl:choose>
  161. <xsl:when test="starts-with($the-object/cm:searchPath, key('session-param', 'e_hp')) or (starts-with($the-object/cm:searchPath, '~'))">
  162. <xsl:value-of select="concat(key('session-param', 'e_hp'),'/folder')"/>
  163. </xsl:when>
  164. <xsl:when test="starts-with($the-object/cm:searchPath,'/content')">
  165. <xsl:value-of select="$defaultContentRoot"/>
  166. </xsl:when>
  167. </xsl:choose>
  168. </xsl:variable>
  169. <cp:flyoutControl/>
  170. <xsl:variable name="has_read_permission" select="contains(/root/cm:queryResponse/*/cm:permissions, 'read')"/>
  171. <xsl:variable name="has_traverse_permission" select="contains(/root/cm:queryResponse/*/cm:permissions, 'traverse')"/>
  172. <xsl:variable name="theObjectName" select="string($the-object/cm:defaultName)"/>
  173. <xsl:variable name="browserTitle"><xts:string id="IDS_PROPERTIES_TITLE"><xts:param name="objectName"><span lang="{$contentLocale}"><xsl:value-of select="$theObjectName"/></span></xts:param></xts:string></xsl:variable>
  174. <xsl:variable name="rootFolder" select="key('session-param','e_proot')='' and key('session-param','e_mroot')=''"/>
  175. <xsl:variable name="rootDefault" select="/root/multiLangs/useLangAsDefault"/>
  176. <xsl:variable name="lang">
  177. <xsl:choose>
  178. <xsl:when test="key('env-param','pty_activeLang')!=''"><xsl:value-of select="key('env-param','pty_activeLang')"/></xsl:when>
  179. <xsl:when test="$rootDefault != 'NOMATCH'"><xsl:value-of select="$rootDefault"/></xsl:when>
  180. <xsl:otherwise><xsl:value-of select="/root/multiLangs/name[position()=1]"/></xsl:otherwise>
  181. </xsl:choose>
  182. </xsl:variable>
  183. <xsl:variable name="activeLang">
  184. <xsl:choose>
  185. <xsl:when test="string(key('env-param','pty_activeLang'))!=''"><xsl:value-of select="key('env-param','pty_activeLang')"/></xsl:when>
  186. <xsl:when test="string(key('env-param','pty_del')) != ''"><xsl:value-of select="$lang"/></xsl:when>
  187. </xsl:choose>
  188. </xsl:variable>
  189. <xsl:variable name="showOKCancel" select="false()"/>
  190. <!-- The objects (eg., shortcut) target object -->
  191. <xsl:variable name="target" select="$the-object/cm:target/*"/>
  192. <!-- start the output -->
  193. <xsl:template match="/root">
  194. <xsl:text disable-output-escaping='yes'>&lt;!DOCTYPE html></xsl:text><dp:page longTitle="$browserTitle">
  195. <dp:meta>
  196. <pf:meta/>
  197. </dp:meta>
  198. <pf:script/>
  199. <script language="javascript" src="{$webcontent}/{$app}/js/CCflyoutMenu.js"/>
  200. <dp:script>
  201. <pf:help context="HID_PROPERTIES"/>
  202. </dp:script>
  203. <dp:header useBackURL="not($showOKCancel)">
  204. <dp:title><xsl:copy-of select="$browserTitle"/></dp:title>
  205. </dp:header>
  206. <!-- property tabs -->
  207. <df:propertiesTabs select="general">
  208. <df:hasRead><xsl:value-of select="$has_read_permission"/></df:hasRead>
  209. <df:hasTraverse><xsl:value-of select="$has_traverse_permission"/></df:hasTraverse>
  210. <df:hasUserProfile>false</df:hasUserProfile>
  211. <df:hasSetPolicy>false</df:hasSetPolicy>
  212. </df:propertiesTabs>
  213. <!-- description tabs -->
  214. <dp:description>
  215. <xts:string id="IDS_PROP_GEN_INTRO"/>
  216. </dp:description>
  217. <table border="0" cellspacing="0" cellpadding="0" width="100%"><tr>
  218. <td width="50%" valign="top">
  219. <lyt:layout style="1" width="100%">
  220. <!-- Class / Type -->
  221. <lyt:section>
  222. <dp:list width="100%">
  223. <dp:section>
  224. <dp:label width="15%"><xts:string id="IDS_PROP_TYPE"/></dp:label>
  225. <dp:text>
  226. <xsl:choose>
  227. <xsl:when test="not($rootFolder)">
  228. <xsl:choose>
  229. <xsl:when test="/root/objectClass/class[@name=string($the-object/cm:objectClass)][not($the-object/cm:userInterfaces) or $the-object/cm:userInterfaces/@nil or @userInterface=$the-object/cm:userInterfaces/cm:uiComponentEnum] != ''">
  230. <xsl:value-of select="/root/objectClass/class[@name=string($the-object/cm:objectClass)][not($the-object/cm:userInterfaces) or $the-object/cm:userInterfaces/@nil or @userInterface=$the-object/cm:userInterfaces/cm:uiComponentEnum]"/>
  231. </xsl:when>
  232. <xsl:otherwise>
  233. <xsl:value-of select="/root/objectClass/class[@name=string($the-object/cm:objectClass)]"/>
  234. </xsl:otherwise>
  235. </xsl:choose>
  236. </xsl:when>
  237. <xsl:otherwise>
  238. <xsl:value-of select="/root/objectClass/class[@name= 'folder']"/>
  239. </xsl:otherwise>
  240. </xsl:choose>
  241. </dp:text>
  242. </dp:section>
  243. </dp:list>
  244. </lyt:section>
  245. </lyt:layout>
  246. <!-- Name -->
  247. <lyt:layout style="1" width="100%">
  248. <lyt:section>
  249. <dp:list width="100%">
  250. <xsl:if test="$the-object/cm:defaultName">
  251. <dp:section>
  252. <dp:label valign="top" width="15%"><xts:string id="IDS_PROP_NAME"/></dp:label>
  253. <dp:text>
  254. <xsl:choose>
  255. <xsl:when test="$the-object/cm:defaultName[@modifiable = 'false'] and $the-object/cm:objectClass='namespace'">
  256. <xsl:value-of select="$the-object/cm:defaultName"/>
  257. </xsl:when>
  258. <xsl:when test="not(/root/env/param[starts-with(@name,'m_t_default_name_')])">
  259. <xsl:value-of select="$the-object/cm:name/*[@xml:lang=$lang]"/>
  260. </xsl:when>
  261. <xsl:when test="/root/env/param[@name= concat('m_t_default_name_',$lang)]">
  262. <xsl:value-of select="/root/env/param[@name = concat('m_t_default_name_',$lang)]"/>
  263. </xsl:when>
  264. </xsl:choose>
  265. </dp:text>
  266. </dp:section>
  267. </xsl:if>
  268. </dp:list>
  269. </lyt:section>
  270. </lyt:layout>
  271. <lyt:layout style="1" width="100%">
  272. <lyt:section>
  273. <dp:list width="100%">
  274. <!-- Location -->
  275. <!-- ============================================================ -->
  276. <dp:section>
  277. <dp:label valign="top" width="15%"><xts:string id="IDS_PROP_LOCATION"/></dp:label>
  278. <dp:text wrap="wrap" valign="top">
  279. <xsl:choose>
  280. <xsl:when test="$rootFolder">
  281. <xts:string id="IDS_ROOT"/>
  282. </xsl:when>
  283. <xsl:otherwise>
  284. <cf:do-the-path-link>
  285. <cf:param name="familytree">$the-object/cm:ancestors</cf:param>
  286. <cf:param name="familymember">$the-object/cm:defaultName</cf:param>
  287. <cf:param name="home"><xsl:value-of select="$start-at-path"/></cf:param>
  288. <cf:param name="onlyAncestors">true</cf:param>
  289. </cf:do-the-path-link>
  290. </xsl:otherwise>
  291. </xsl:choose>
  292. </dp:text>
  293. </dp:section>
  294. </dp:list>
  295. </lyt:section>
  296. <!-- Created -->
  297. <!-- ============================================================ -->
  298. <lyt:section>
  299. <dp:list width="100%">
  300. <dp:section>
  301. <dp:label valign="top" width="15%"><xts:string id="IDS_PROP_CREATED"/></dp:label>
  302. <dp:text wrap="wrap" valign="top">
  303. <xsl:value-of select="xtsext:formatDateFromUTC( string( $the-object/cm:creationTime ), number( '2' ), number( '3' ), string( $timeZone ), string( $contentLocale ))"/>
  304. </dp:text>
  305. </dp:section>
  306. </dp:list>
  307. </lyt:section>
  308. <!-- Modified -->
  309. <!-- ============================================================ -->
  310. <lyt:section>
  311. <dp:list width="100%">
  312. <dp:section>
  313. <dp:label valign="top" width="15%"><xts:string id="IDS_PROP_MODIFIED"/></dp:label>
  314. <dp:text wrap="wrap" valign="top">
  315. <xsl:value-of select="xtsext:formatDateFromUTC(string( $the-object/cm:modificationTime ), number( '2' ), number( '3' ), string( $timeZone ), string( $contentLocale ) )"/>
  316. </dp:text>
  317. </dp:section>
  318. </dp:list>
  319. </lyt:section>
  320. <!-- Search path -->
  321. <!-- ============================================================== -->
  322. <lyt:section>
  323. <dp:list width="100%">
  324. <dp:section>
  325. <dp:label valign="top" width="15%"><xts:string id="IDS_PROP_SEARPATH_LABEL"/></dp:label>
  326. <dp:text wrap="wrap" valign="top"><xsl:value-of select="$the-object/cm:searchPath"/></dp:text>
  327. </dp:section>
  328. </dp:list>
  329. </lyt:section>
  330. <!-- ID -->
  331. <!-- ============================================================== -->
  332. <lyt:section>
  333. <dp:list width="100%">
  334. <dp:section>
  335. <dp:label valign="top" width="15%"><xts:string id="IDS_PROP_ID_LABEL"/></dp:label>
  336. <dp:text wrap="wrap" valign="top"><xsl:value-of select="$the-object/cm:storeID"/></dp:text>
  337. </dp:section>
  338. </dp:list>
  339. </lyt:section>
  340. <!-- Language -->
  341. <!-- ============================================================== -->
  342. <lyt:section>
  343. <dp:list width="100%">
  344. <dp:section>
  345. <dp:label valign="top" width="15%"><xts:string id="IDS_PROP_LANGUAGE"/></dp:label>
  346. <dp:text wrap="wrap" valign="top">
  347. <!-- Build up the values that the user has currently defined -->
  348. <xsl:variable name="vals">
  349. <xsl:for-each select="/root/multiLangs/name">
  350. <xsl:if test="not(preceding-sibling::name = .)">
  351. <xsl:choose>
  352. <xsl:when test="position()!=last"><xsl:value-of select="concat(' ',string(.))"/></xsl:when>
  353. <xsl:otherwise><xsl:value-of select="concat(' ',string(.),' ')"/></xsl:otherwise>
  354. </xsl:choose>
  355. </xsl:if>
  356. </xsl:for-each>
  357. </xsl:variable>
  358. <xsl:variable name="actval">
  359. <xsl:value-of select="/root/config/param[@name='locale']/locale[@type='contentLocale' and string(id)=$lang]/displayName"/>
  360. </xsl:variable>
  361. <xsl:choose>
  362. <xsl:when test="$actval=''">
  363. <xsl:variable name="actval2"><xsl:value-of select="substring-before(substring-after($vals,' '),' ')"/></xsl:variable>
  364. <xsl:value-of select="/root/config/param[@name='locale']/locale[@type='contentLocale' and string(id)=$actval2]/displayName"/>
  365. </xsl:when>
  366. <xsl:otherwise>
  367. <xsl:value-of select="$actval"/>
  368. </xsl:otherwise>
  369. </xsl:choose>
  370. </dp:text>
  371. </dp:section>
  372. </dp:list>
  373. </lyt:section>
  374. </lyt:layout>
  375. </td>
  376. </tr><tr><td></td><td></td></tr>
  377. </table>
  378. <dp:footer>
  379. <df:button df:id="IDS_CLOSE" df:style="back-url"/>
  380. </dp:footer>
  381. </dp:page>
  382. </xsl:template>
  383. </xsl:stylesheet>
  384. </xts:block>
  385. <xts:block id="ignoreFaultHandler" type="fault" processor="XSLT">
  386. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" exclude-result-prefixes="xsl">
  387. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  388. <xsl:template match="/">
  389. <ignoreFault/>
  390. </xsl:template>
  391. </xsl:stylesheet>
  392. </xts:block>
  393. <!--
  394. ===============================================================================================
  395. debug - display debug information
  396. ===============================================================================================
  397. -->
  398. <xts:block id="debug" dependency="renderPage missingObject" condition=".[/root/session/param[@name='debug']='1']" type="exec" mode="output" processor="XSLT" mandatory="false" mimeType="text/html">
  399. <!-- get the debug logic sheet -->
  400. <xts:logicsheet path="logicsheets/debuglogic.xslt"/>
  401. <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">
  402. <xsl:output method="html" version="1.0" encoding="UTF-8" indent="no" omit-xml-declaration="yes"/>
  403. <xsl:template match="/">
  404. <dbg:dumpxml select="/root"/>
  405. </xsl:template>
  406. </xsl:stylesheet>
  407. </xts:block>
  408. </xts:morphlet>