Advertisement
Guest User

Untitled

a guest
Feb 13th, 2016
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.43 KB | None | 0 0
  1. <assets>
  2. <asset>
  3. <type>hardware</type>
  4. <item>
  5. <name>HP laptop</name>
  6. <value>799</value>
  7. </item>
  8. <item>
  9. <name>server</name>
  10. <value>1000</value>
  11. </item>
  12. <item>
  13. <name>ViewSonic Monitor</name>
  14. <value>399</value>
  15. </item>
  16. </asset>
  17. <asset>
  18. <type>software</type>
  19. <item>
  20. <name>Windows Vista</name>
  21. <value>399</value>
  22. </item>
  23. <item>
  24. <name>Office XP</name>
  25. <value>499</value>
  26. </item>
  27. <item>
  28. <name>Windows 7</name>
  29. <value>399</value>
  30. </item>
  31. <item>
  32. <name>MS Project Professional 2007</name>
  33. <value>299</value>
  34. </item>
  35. </asset>
  36. </assets>
  37.  
  38. <output>
  39. <node name="assets" count="1"/>
  40. <node name="asset" count="2"/>
  41. <node name= "type" count="??"/>
  42. <node name="item" count=??/>
  43. <node name="name" count=??/>
  44. <node name="value" count=??/>
  45. </output>
  46.  
  47. <xsl:value-of select="count(assets/asset)" />
  48.  
  49. Assets: <xsl:value-of select="count(assets)" />
  50. Asset: <xsl:value-of select="count(assets/asset)" />
  51. Item: <xsl:value-of select="count(assets/asset/item)" />
  52.  
  53. <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  54. <xsl:key name="nodes-by-name" match="*" use="name()"/>
  55. <xsl:template match="/">
  56. <output>
  57. <xsl:for-each select="//*[count(.|key('nodes-by-name', name())[1]) = 1]">
  58. <node name="{name()}" count="{count(key('nodes-by-name', name()))}"/>
  59. </xsl:for-each>
  60. </output>
  61. </xsl:template>
  62. </xsl:stylesheet>
  63.  
  64. <?xml version="1.0" encoding="UTF-8"?>
  65. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  66. xmlns:xs="http://www.w3.org/2001/XMLSchema" version="2.0">
  67.  
  68. <xsl:output method="xml" indent="yes"/>
  69.  
  70. <xsl:template match="/">
  71. <xsl:element name="output">
  72. <xsl:for-each-group select="//*" group-by="name()">
  73. <xsl:element name="node">
  74. <xsl:attribute name="name">
  75. <xsl:value-of select="current-grouping-key()"/>
  76. </xsl:attribute>
  77. <xsl:attribute name="count">
  78. <xsl:value-of select="count(current-group())"/>
  79. </xsl:attribute>
  80. </xsl:element>
  81. </xsl:for-each-group>
  82. </xsl:element>
  83. </xsl:template>
  84.  
  85. </xsl:stylesheet>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement