generateTaskNames.xslt 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!--
  3. Licensed Materials - Property of IBM
  4. IBM Cognos Products: ASV
  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. <!--
  9. Just get those children out. This can be used in transforms to obtain children.
  10. -->
  11. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  12. xmlns:xts="http://developer.cognos.com/schemas/xts/"
  13. exclude-result-prefixes="xts">
  14. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>
  15. <xsl:template match="/">
  16. <xsl:variable name="newsItemName">
  17. <xsl:call-template name="buildName">
  18. <xsl:with-param name="currentValue">
  19. <xsl:value-of select="/root/newsItemName"/>
  20. </xsl:with-param>
  21. <xsl:with-param name="defaultValue">
  22. <xsl:text><xts:string id="IDS_CUSTSUB_DEFAULT_NEWSITEM_TASKNAME"/></xsl:text>
  23. </xsl:with-param>
  24. </xsl:call-template>
  25. </xsl:variable>
  26. <xsl:variable name="emailName">
  27. <xsl:call-template name="buildName">
  28. <xsl:with-param name="currentValue">
  29. <xsl:value-of select="/root/emailTaskName"/>
  30. </xsl:with-param>
  31. <xsl:with-param name="defaultValue">
  32. <xsl:text><xts:string id="IDS_CUSTSUB_DEFAULT_EMAIL_TASKNAME"/></xsl:text>
  33. </xsl:with-param>
  34. </xsl:call-template>
  35. </xsl:variable>
  36. <xsl:variable name="humanTaskName">
  37. <xsl:call-template name="buildName">
  38. <xsl:with-param name="currentValue">
  39. <xsl:value-of select="/root/humanTaskName"/>
  40. </xsl:with-param>
  41. <xsl:with-param name="defaultValue">
  42. <xsl:text><xts:string id="IDS_CUSTSUB_DEFAULT_HUMANTASK_TASKNAME"/></xsl:text>
  43. </xsl:with-param>
  44. </xsl:call-template>
  45. </xsl:variable>
  46. <xsl:variable name="emailNameToUse">
  47. <xsl:value-of select="$emailName"/>
  48. </xsl:variable>
  49. <xsl:variable name="newsItemNameToUse">
  50. <xsl:call-template name="makeUnique">
  51. <xsl:with-param name="name" select="$newsItemName"/>
  52. <xsl:with-param name="used">
  53. <root>
  54. <value><xsl:value-of select="$emailNameToUse"/></value>
  55. </root>
  56. </xsl:with-param>
  57. </xsl:call-template>
  58. </xsl:variable>
  59. <xsl:variable name="humanTaskNameToUse">
  60. <xsl:call-template name="makeUnique">
  61. <xsl:with-param name="name" select="$humanTaskName"/>
  62. <xsl:with-param name="used">
  63. <root>
  64. <value><xsl:value-of select="$emailNameToUse"/></value>
  65. <value><xsl:value-of select="$newsItemNameToUse"/></value>
  66. </root>
  67. </xsl:with-param>
  68. </xsl:call-template>
  69. </xsl:variable>
  70. <!-- build the parameters from the unique names -->
  71. <param name="taskName"><xsl:value-of select="$emailNameToUse"/></param>
  72. <param name="m_subData_newsitem_taskName"><xsl:value-of select="$newsItemNameToUse"/></param>
  73. <param name="humanTaskName"><xsl:value-of select="$humanTaskNameToUse"/></param>
  74. </xsl:template>
  75. <xsl:template name="makeUnique">
  76. <xsl:param name="name"/>
  77. <xsl:param name="used"/>
  78. <xsl:choose>
  79. <xsl:when test="not($used/root/value[text() = $name])"><xsl:value-of select="$name"/></xsl:when>
  80. <xsl:otherwise>
  81. <xsl:call-template name="makeUniqueSuffix">
  82. <xsl:with-param name="name" select="$name"/>
  83. <xsl:with-param name="used" select="$used"/>
  84. <xsl:with-param name="suffix" select="'1'"/>
  85. </xsl:call-template>
  86. </xsl:otherwise>
  87. </xsl:choose>
  88. </xsl:template>
  89. <xsl:template name="makeUniqueSuffix">
  90. <xsl:param name="name"/>
  91. <xsl:param name="used"/>
  92. <xsl:param name="suffix"/>
  93. <xsl:choose>
  94. <xsl:when test="not($used/root/value[text() = concat($name,'-',$suffix)])"><xsl:value-of select="concat($name,'-',$suffix)"/></xsl:when>
  95. <xsl:otherwise>
  96. <xsl:call-template name="makeUniqueSuffix">
  97. <xsl:with-param name="name" select="$name"/>
  98. <xsl:with-param name="used" select="$used"/>
  99. <xsl:with-param name="suffix" select="string(number($suffix)+1)"/>
  100. </xsl:call-template>
  101. </xsl:otherwise>
  102. </xsl:choose>
  103. </xsl:template>
  104. <xsl:template name="buildName">
  105. <xsl:param name="currentValue"/>
  106. <xsl:param name="defaultValue"/>
  107. <xsl:variable name="quote">"</xsl:variable>
  108. <xsl:variable name="apos">'</xsl:variable>
  109. <xsl:variable name="task_name">
  110. <xsl:choose>
  111. <xsl:when test="$currentValue != '' ">
  112. <xsl:value-of select="$currentValue"/>
  113. </xsl:when>
  114. <xsl:otherwise><xsl:value-of select="$defaultValue"/></xsl:otherwise>
  115. </xsl:choose>
  116. </xsl:variable>
  117. <xsl:choose>
  118. <xsl:when test="contains($task_name,$quote) and contains($task_name,$apos)">
  119. <xsl:value-of select="translate($task_name,$quote,$apos)"/>
  120. </xsl:when>
  121. <xsl:otherwise>
  122. <xsl:value-of select="$task_name"/>
  123. </xsl:otherwise>
  124. </xsl:choose>
  125. </xsl:template>
  126. </xsl:stylesheet>