Wiki source code of XSLT Macro
Last modified by editors on 2023/06/04 09:37
Show last authors
| author | version | line-number | content |
|---|---|---|---|
| 1 | XSLT Macro helps to transform XML document with XSLT style sheet. | ||
| 2 | Macro is able to retrieve XML document or style sheet from attachment or URL | ||
| 3 | XML document or else style sheet could be the content of the macro. | ||
| 4 | |||
| 5 | |=Parameter|=Description|=Possible values|=Default value | ||
| 6 | |xsl|XSLT style sheet to apply to XML|(((http~://somewhere/style.xsl | ||
| 7 | attach~:~[[space.]page@]style.xsl)))| none | ||
| 8 | |xml|XML document to process|(((http~://somewhere/document.xml | ||
| 9 | attach~:~[[space.]page@]document.xml)))| none | ||
| 10 | |params|Comma separated list of parameters name, value pair|(((name1=value1[,name2=value2[,...~]])))| none | ||
| 11 | |||
| 12 | == Samples == | ||
| 13 | ===xml and xsl parameters=== | ||
| 14 | {{code}}{{xslt xsl="attach:persons.xsl" xml="attach:persons.xml"/}}{{/code}} | ||
| 15 | |||
| 16 | {{xslt xsl="attach:persons.xsl" xml="http://localhost:8080/xwiki/bin/download/Macros/xslt/persons.xml"/}} | ||
| 17 | |||
| 18 | ===xsl parameter and content as xml document== | ||
| 19 | {{code}}{{xslt xsl="attach:persons.xsl"}} | ||
| 20 | <persons> | ||
| 21 | <person username="JS1"> | ||
| 22 | <name>John</name> | ||
| 23 | <family_name>Smith</family_name> | ||
| 24 | </person> | ||
| 25 | <person username="ND1"> | ||
| 26 | <name>Nancy</name> | ||
| 27 | <family_name>Davolio</family_name> | ||
| 28 | </person> | ||
| 29 | </persons> | ||
| 30 | {{/xslt}} | ||
| 31 | {{/code}} | ||
| 32 | |||
| 33 | {{xslt xsl="attach:persons.xsl"}} | ||
| 34 | <persons> | ||
| 35 | <person username="JS1"> | ||
| 36 | <name>John</name> | ||
| 37 | <family_name>Smith</family_name> | ||
| 38 | </person> | ||
| 39 | <person username="ND1"> | ||
| 40 | <name>Nancy</name> | ||
| 41 | <family_name>Davolio</family_name> | ||
| 42 | </person> | ||
| 43 | </persons> | ||
| 44 | {{/xslt}} | ||
| 45 | |||
| 46 | ===xml parameter and content as xsl style sheet== | ||
| 47 | {{code}}{{xslt xml="attach:persons.xml"}} | ||
| 48 | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> | ||
| 49 | <xsl:output method="text"/> | ||
| 50 | <xsl:template match="/"> | ||
| 51 | <xsl:text> | ||
| 52 | |=Family name|=Name | ||
| 53 | </xsl:text> | ||
| 54 | <xsl:apply-templates select="//person"> | ||
| 55 | <xsl:sort select="family_name" /> | ||
| 56 | </xsl:apply-templates> | ||
| 57 | <xsl:text> | ||
| 58 | </xsl:text> | ||
| 59 | </xsl:template> | ||
| 60 | <xsl:template match="person"> | ||
| 61 | <xsl:text>|</xsl:text> | ||
| 62 | <xsl:value-of select="family_name"/> | ||
| 63 | <xsl:text>|</xsl:text> | ||
| 64 | <xsl:value-of select="name"/> | ||
| 65 | <xsl:text> | ||
| 66 | </xsl:text> | ||
| 67 | </xsl:template> | ||
| 68 | </xsl:stylesheet>{{/xslt}}{{/code}} | ||
| 69 | |||
| 70 | {{xslt xml="attach:persons.xml"}} | ||
| 71 | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> | ||
| 72 | <xsl:output method="text"/> | ||
| 73 | <xsl:template match="/"> | ||
| 74 | <xsl:text> | ||
| 75 | |=Family name|=Name | ||
| 76 | </xsl:text> | ||
| 77 | <xsl:apply-templates select="//person"> | ||
| 78 | <xsl:sort select="family_name" /> | ||
| 79 | </xsl:apply-templates> | ||
| 80 | <xsl:text> | ||
| 81 | </xsl:text> | ||
| 82 | </xsl:template> | ||
| 83 | <xsl:template match="person"> | ||
| 84 | <xsl:text>|</xsl:text> | ||
| 85 | <xsl:value-of select="family_name"/> | ||
| 86 | <xsl:text>|</xsl:text> | ||
| 87 | <xsl:value-of select="name"/> | ||
| 88 | <xsl:text> | ||
| 89 | </xsl:text> | ||
| 90 | </xsl:template> | ||
| 91 | </xsl:stylesheet>{{/xslt}} | ||
| 92 | |||
| 93 | ===xml parameter, content as xsl style sheet and params parameter== | ||
| 94 | {{code}}{{xslt xml="attach:persons.xml" params="user=JS1"}} | ||
| 95 | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> | ||
| 96 | <xsl:output method="text"/> | ||
| 97 | <xsl:param name="user"/> | ||
| 98 | <xsl:template match="/"> | ||
| 99 | <xsl:text> | ||
| 100 | |=Family name|=Name | ||
| 101 | </xsl:text> | ||
| 102 | <xsl:apply-templates select="//person[@username=$user]"> | ||
| 103 | <xsl:sort select="family_name" /> | ||
| 104 | </xsl:apply-templates> | ||
| 105 | <xsl:text> | ||
| 106 | </xsl:text> | ||
| 107 | </xsl:template> | ||
| 108 | <xsl:template match="person"> | ||
| 109 | <xsl:text>|</xsl:text> | ||
| 110 | <xsl:value-of select="family_name"/> | ||
| 111 | <xsl:text>|</xsl:text> | ||
| 112 | <xsl:value-of select="name"/> | ||
| 113 | <xsl:text> | ||
| 114 | </xsl:text> | ||
| 115 | </xsl:template> | ||
| 116 | </xsl:stylesheet>{{/xslt}}{{/code}} | ||
| 117 | |||
| 118 | {{xslt xml="attach:persons.xml" params="user=JS1"}} | ||
| 119 | <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> | ||
| 120 | <xsl:output method="text"/> | ||
| 121 | <xsl:param name="user"/> | ||
| 122 | <xsl:template match="/"> | ||
| 123 | <xsl:text> | ||
| 124 | |=Family name|=Name | ||
| 125 | </xsl:text> | ||
| 126 | <xsl:apply-templates select="//person[@username=$user]"> | ||
| 127 | <xsl:sort select="family_name" /> | ||
| 128 | </xsl:apply-templates> | ||
| 129 | <xsl:text> | ||
| 130 | </xsl:text> | ||
| 131 | </xsl:template> | ||
| 132 | <xsl:template match="person"> | ||
| 133 | <xsl:text>|</xsl:text> | ||
| 134 | <xsl:value-of select="family_name"/> | ||
| 135 | <xsl:text>|</xsl:text> | ||
| 136 | <xsl:value-of select="name"/> | ||
| 137 | <xsl:text> | ||
| 138 | </xsl:text> | ||
| 139 | </xsl:template> | ||
| 140 | </xsl:stylesheet>{{/xslt}} | ||
| 141 | |||
| 142 | === missing parameters === | ||
| 143 | {{code}}{{xslt /}}{{/code}} | ||
| 144 | |||
| 145 | {{xslt /}} | ||
| 146 | |||
| 147 | === missing content=== | ||
| 148 | {{code}}{{xslt xsl="attach:persons.xsl"/}}{{/code}} | ||
| 149 | |||
| 150 | {{xslt xsl="attach:persons.xsl"/}} |