xp5r.apply-templates.xsl 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  3. xmlns:xs="http://www.w3.org/2001/XMLSchema"
  4. xmlns:xp5r="http://biuro.biall-net.pl/xmlschema_procesy5/default_db_xml_cache.public/xinclude_p5_recurse/xinclude_p5_recurse.xsd"
  5. exclude-result-prefixes="xs"
  6. version="2.0">
  7. <xsl:output indent="yes"/>
  8. <xsl:strip-space elements="*"/>
  9. <xsl:param name="xp5r.apply-template.xsl.name" required="yes"/>
  10. <xsl:template match="*" mode="xp5r:apply-templates">
  11. <project name="{$xp5r.apply-template.xsl.name}" default="default">
  12. <target name="default">
  13. <parallel threadcount="10">
  14. <xsl:apply-templates mode="xp5r:apply-templates.child"/>
  15. </parallel>
  16. </target>
  17. </project>
  18. </xsl:template>
  19. <xsl:template match="xp5r:cache" mode="xp5r:apply-templates.child">
  20. <sequential>
  21. <condition property="{@xp5r:id}.exists">
  22. <available file="{@xp5r:basedir}/{@xp5r:id}.xml"/>
  23. </condition>
  24. <xsl:apply-templates mode="xp5r:apply-templates.child"/>
  25. </sequential>
  26. </xsl:template>
  27. <xsl:template match="xp5r:apply-template" mode="xp5r:apply-templates.child">
  28. <xsl:result-document href="{../@xp5r:basedir}/{../@xp5r:id}.xsl">
  29. <xsl:element name="xsl:stylesheet">
  30. <xsl:attribute name="version" select="'2.0'"/>
  31. <xsl:for-each select="../xp5r:namespace">
  32. <xsl:namespace name="{@name}" select="@namespace"/>
  33. </xsl:for-each>
  34. <xsl:element name="xsl:include">
  35. <xsl:attribute name="href" select="../@xp5r:stylesheet"/>
  36. </xsl:element>
  37. <!--<xsl:element name="xsl:variable">
  38. <xsl:attribute name="name" select="'input'"/>
  39. <xsl:attribute name="select" select="xp5r:context-node/"/>
  40. </xsl:element>-->
  41. <xsl:element name="xsl:template">
  42. <xsl:attribute name="match" select="'*'"/>
  43. <xsl:choose>
  44. <xsl:when test="xp5r:context-node/xp5r:for-each-group">
  45. <xsl:element name="xsl:for-each-group">
  46. <xsl:attribute name="select" select="xp5r:context-node/xp5r:for-each-group/@select"/>
  47. <xsl:attribute name="group-by" select="xp5r:context-node/xp5r:for-each-group/@group-by"/>
  48. <xsl:element name="xsl:apply-templates">
  49. <xsl:attribute name="select" select="@select"/>
  50. <xsl:attribute name="mode" select="@mode"/>
  51. </xsl:element>
  52. </xsl:element>
  53. </xsl:when>
  54. <xsl:otherwise>
  55. <xsl:element name="xsl:apply-templates">
  56. <xsl:attribute name="select" select="@select"/>
  57. <xsl:attribute name="mode" select="@mode"/>
  58. </xsl:element>
  59. </xsl:otherwise>
  60. </xsl:choose>
  61. </xsl:element>
  62. </xsl:element>
  63. </xsl:result-document>
  64. <echoxml file="{../@xp5r:basedir}/{../@xp5r:id}.in.xml"><empty/></echoxml>
  65. <xslt basedir="{../@xp5r:basedir}" style="{../@xp5r:basedir}/{../@xp5r:id}.xsl"
  66. in="{../@xp5r:basedir}/{../@xp5r:id}.in.xml"
  67. out="{../@xp5r:basedir}/{../@xp5r:id}.xml"
  68. force="true"
  69. >
  70. <factory name="net.sf.saxon.TransformerFactoryImpl">
  71. <attribute name="http://saxon.sf.net/feature/xinclude-aware" value="true"/>
  72. <!--<attribute name="http://saxon.sf.net/feature/initialMode" value="{@mode}"/>-->
  73. </factory>
  74. <xsl:for-each select="../xp5r:param">
  75. <xsl:element name="param">
  76. <xsl:attribute name="name" select="@name"/>
  77. <xsl:attribute name="expression" select="@value"/>
  78. </xsl:element>
  79. </xsl:for-each>
  80. <classpath location="/opt/local/share/java/saxon9he.jar"/>
  81. </xslt>
  82. <delete file="{../@xp5r:basedir}/{../@xp5r:id}.in.xml"/>
  83. </xsl:template>
  84. <xsl:template match=" text()|comment()" mode="xp5r:apply-templates.child"/>
  85. </xsl:stylesheet>