Advertisement
zserrbo

xls

Apr 12th, 2013
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.81 KB | None | 0 0
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  3. xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:xs="http://www.w3.org/2001/XMLSchema"
  4. exclude-result-prefixes="xs">
  5. <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
  6.  
  7. <xsl:template name="converter" match="xhtml:body">
  8. <xsl:param name="currentProp"/>
  9. <xsl:param name="needSearch"/>
  10. <xsl:variable name="root" select="xhtml:div"/>
  11. <xsl:variable name="entity"
  12. select="$root[tokenize(@class,';')[
  13. matches(.,'\p{Z}*entity\p{Z}*')
  14. ]]"/>
  15. <xsl:variable name="attribute"
  16. select="$root[tokenize(@class,';')[
  17. matches(.,'\p{Z}*attribute\p{Z}*')
  18. ]]"/>
  19. <xsl:variable name="relWithEntity"
  20. select="xhtml:svg[tokenize(@class,';')[
  21. matches(.,'\p{Z}*_jsPlumb_connector\p{Z}*')
  22. ]]"/>
  23.  
  24. <xsl:if test="$currentProp and number($needSearch) > 0 ">
  25. <xsl:value-of select="$currentProp"/>
  26. <xsl:for-each-group select="$relWithEntity" group-by="@class">
  27. <xsl:element name="property">
  28. <xsl:attribute name="name">
  29. <xsl:value-of select="$currentProp"/>
  30. </xsl:attribute>
  31.  
  32. </xsl:element>
  33. </xsl:for-each-group>
  34. </xsl:if>
  35. <xsl:if test="$needSearch != '1'">
  36. <xsl:for-each-group select="$relWithEntity" group-by="@class">
  37. <xsl:variable name="currentElement" select="tokenize(current-grouping-key(), '\s')"/>
  38. <xsl:if test="contains($currentElement[3],'ent')">
  39. <xsl:value-of select="$currentElement[3]"/>
  40. <xsl:text>
  41. </xsl:text>
  42. <xsl:element name="entity">
  43. <xsl:attribute name="id">
  44. <xsl:value-of select="$currentElement[3]"/>
  45. </xsl:attribute>
  46. <xsl:if test="contains($currentElement[2],'prop')">
  47. <xsl:for-each-group select="$relWithEntity" group-by="@class">
  48. <xsl:variable name="relClass"
  49. select="tokenize(current-grouping-key(), '\s')"/>
  50.  
  51.  
  52. <xsl:if
  53. test="($relClass[3] = $currentElement[3]) and contains($relClass[2], 'prop')">
  54. <xsl:element name="property">
  55. <xsl:attribute name="name">
  56. <xsl:value-of select="$relClass[2]"/>
  57. </xsl:attribute>
  58. <xsl:for-each-group select="$relWithEntity" group-by="@class">
  59. <xsl:variable name="relClass2"
  60. select="tokenize(current-grouping-key(), '\s')"/>
  61. <xsl:if
  62. test="$relClass2[3] = $relClass[2] and contains($relClass2[2],'prop') ">
  63. <xsl:element name="property">
  64. <xsl:attribute name="name">
  65. <xsl:value-of select="$relClass2[2]"/>
  66. </xsl:attribute>
  67. <xsl:call-template name="converter">
  68. <xsl:with-param name="needSearch" select="'1'" />
  69. <xsl:with-param name="currentProp" select="$relClass2[2]"/>
  70. </xsl:call-template>
  71. </xsl:element>
  72. </xsl:if>
  73. </xsl:for-each-group>
  74. </xsl:element>
  75. </xsl:if>
  76.  
  77. </xsl:for-each-group>
  78. </xsl:if>
  79. </xsl:element>
  80. </xsl:if>
  81. <xsl:if
  82. test="contains($currentElement[2],'prop') and contains($currentElement[3],'prop')">
  83.  
  84. <xsl:value-of select="$currentProp"/>
  85.  
  86. </xsl:if>
  87.  
  88. </xsl:for-each-group>
  89. </xsl:if>
  90.  
  91.  
  92.  
  93.  
  94.  
  95. </xsl:template>
  96. </xsl:stylesheet>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement