SQL Workbench/J Git Repository https://www.sql-workbench.eu
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

602 lines
21 KiB

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!DOCTYPE xslt [
  3. <!ENTITY space "&#32;">
  4. <!ENTITY nbsp "&#160;">
  5. <!ENTITY raquo "&#187;">
  6. <!ENTITY copy "&#169;">
  7. <!ENTITY reg "&#174;">
  8. ]>
  9. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
  10. xmlns:redirect="http://xml.apache.org/xalan/redirect"
  11. extension-element-prefixes="redirect"
  12. >
  13. <xsl:output encoding="utf-8"
  14. method="html"
  15. omit-xml-declaration="yes"
  16. indent="no"
  17. standalone="yes"
  18. doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"
  19. doctype-system="http://www.w3.org/TR/html4/loose.dtd"
  20. />
  21. <xsl:variable name="siteName" select="/site/@name"/>
  22. <xsl:param name="filedir"/>
  23. <xsl:param name="buildNumber"/>
  24. <xsl:param name="buildDate"/>
  25. <xsl:param name="devBuildDate"/>
  26. <xsl:param name="devBuildNumber"/>
  27. <xsl:param name="currentDate"/>
  28. <xsl:param name="includeDev" select="'0'"/>
  29. <xsl:variable name="fdir">
  30. <xsl:value-of select="concat($filedir, '\')"/>
  31. </xsl:variable>
  32. <!--
  33. Generate the table of content which will be displayed for each
  34. page in the left hand navigation
  35. -->
  36. <!-- <xsl:variable name="toc"> -->
  37. <xsl:template name="make-toc">
  38. <xsl:param name="currentPage"/>
  39. <div id="navigation">
  40. <ul class="toc">
  41. <xsl:for-each select="/site/page[@toc='main']">
  42. <xsl:call-template name="toc-entry">
  43. <xsl:with-param name="currentPage" select="$currentPage"/>
  44. </xsl:call-template>
  45. </xsl:for-each>
  46. <li class="toclist" id="manual">
  47. <a class="list" title="Display the online manual of the current stable release" href="manual/workbench-manual.html">Manual</a>
  48. </li>
  49. <li class="toclist" id="problems">
  50. <a class="list" title="FAQ, Problems" href="manual/troubleshooting.html">Common Problems</a>
  51. </li>
  52. <li class="toclist" id="google">
  53. <a class="list" href="http://groups.google.com/group/sql-workbench" title="Jump to forum">Forum@Google
  54. <img src="images/outlink.gif" alt="Link Arrow" title="Jump to forum" border="0"/>
  55. </a>
  56. </li>
  57. </ul>
  58. <ul class="toc" >
  59. <li class="toclist">
  60. <a class="list" href="wb_news.xml">RSS Feed</a>
  61. </li>
  62. <xsl:for-each select="/site/page[@toc='small']">
  63. <xsl:call-template name="toc-entry"/>
  64. </xsl:for-each>
  65. </ul>
  66. <div id="pulseofeurope">
  67. <a target="_blank" href="https://pulseofeurope.eu">
  68. <img border="0" width="180" height="100" style="margin-left:2px;margin-top:30px;margin-bottom:10px" src="pulseofeurope.jpg" alt="PulseofEurope"/>
  69. </a>
  70. </div>
  71. </div>
  72. </xsl:template>
  73. <!-- </xsl:variable> -->
  74. <xsl:template name="toc-entry">
  75. <xsl:param name="currentPage"/>
  76. <xsl:variable name="pageName" select="@name"/>
  77. <xsl:variable name="pageTitle" select="@title"/>
  78. <xsl:variable name="notoc" select="@notoc"/>
  79. <xsl:variable name="ref">
  80. <xsl:if test="@name">
  81. <xsl:value-of select="concat(@name,'.html')"/>
  82. </xsl:if>
  83. <xsl:if test="@link">
  84. <xsl:value-of select="@link"/>
  85. </xsl:if>
  86. </xsl:variable>
  87. <li class="toclist">
  88. <xsl:if test="$currentPage = $pageName">
  89. <xsl:attribute name="id">
  90. <xsl:value-of select="'current'"/>
  91. </xsl:attribute>
  92. </xsl:if>
  93. <A class="list" href="{$ref}">
  94. <xsl:if test="$currentPage = $pageName">
  95. <xsl:attribute name="id">
  96. <xsl:value-of select="'active'"/>
  97. </xsl:attribute>
  98. </xsl:if>
  99. <xsl:if test="@link">
  100. <xsl:attribute name="target"><xsl:value-of select="@target"/></xsl:attribute>
  101. </xsl:if>
  102. <xsl:value-of select="$pageTitle"/>
  103. </A>
  104. </li>
  105. </xsl:template>
  106. <!-- entry point template to select the whole site document -->
  107. <xsl:template match="site">
  108. <xsl:for-each select="page">
  109. <xsl:if test="@name">
  110. <xsl:variable name="pageName" select="@name"/>
  111. <xsl:variable name="pageTitle" select="@title"/>
  112. <xsl:variable name="fname">
  113. <xsl:value-of select="concat($pageName,'.html')"/>
  114. </xsl:variable>
  115. <xsl:variable name="filename">
  116. <xsl:value-of select="concat($fdir, $fname)"/>
  117. </xsl:variable>
  118. <redirect:write file="{$filename}">
  119. <xsl:call-template name="main">
  120. <xsl:with-param name="pageTitle" select="$pageTitle"/>
  121. <xsl:with-param name="pageName" select="@name"/>
  122. </xsl:call-template>
  123. </redirect:write>
  124. </xsl:if>
  125. </xsl:for-each>
  126. <xsl:if test="$includeDev = 1">
  127. <xsl:for-each select="/site/page[@id='dev-history']">
  128. <xsl:variable name="pageName" select="@id"/>
  129. <xsl:variable name="pageTitle" select="@title"/>
  130. <xsl:variable name="fname">
  131. <xsl:value-of select="concat($pageName,'.html')"/>
  132. </xsl:variable>
  133. <xsl:variable name="filename">
  134. <xsl:value-of select="concat($fdir, $fname)"/>
  135. </xsl:variable>
  136. <redirect:write file="{$filename}">
  137. <xsl:call-template name="main">
  138. <xsl:with-param name="pageTitle" select="$pageTitle"/>
  139. <xsl:with-param name="pageName" select="@name"/>
  140. </xsl:call-template>
  141. </redirect:write>
  142. </xsl:for-each>
  143. </xsl:if>
  144. </xsl:template>
  145. <xsl:template name="main">
  146. <xsl:param name="pageName"/>
  147. <xsl:param name="pageTitle"/>
  148. <xsl:param name="imageName"/>
  149. <xsl:param name="imageTitle"/>
  150. <xsl:param name="subTitle"/>
  151. <xsl:param name="description"/>
  152. <xsl:param name="back"/>
  153. <xsl:param name="next"/>
  154. <html>
  155. <head>
  156. <title>
  157. <xsl:value-of select="$siteName"/>&nbsp;-&nbsp;
  158. <xsl:value-of select="@title"/>
  159. </title>
  160. <meta http-equiv="Pragma" CONTENT="no-cache"/>
  161. <meta http-equiv="Expires" content="-1"/>
  162. <link rel="SHORTCUT ICON" href="favicon.ico"/>
  163. <link rel="alternate" type="application/rss+xml" title="SQL Workbench/J" href="/wb_news.xml"/>
  164. <xsl:if test="$pageName='index'">
  165. <meta name="description" content="A free SQL query tool various DBMS (PostgreSQL, Oracle, DB2, HyberSQL and others)"/>
  166. </xsl:if>
  167. <xsl:if test="$pageName != 'index'">
  168. <meta name="description">
  169. <xsl:attribute name="content">
  170. <xsl:value-of select="concat('SQL Workbench/J - ', @title)"/>
  171. </xsl:attribute>
  172. </meta>
  173. </xsl:if>
  174. <meta name="keywords" lang="en" content="sql,query,tool,analyzer,gui,jdbc,database,isql,viewer,frontend,java,dbms,oracle,postgres,h2database,h2,firebirdsql,hsql,hsqldb,sqlplus,replacement,import,export,csv,unload,convert,insert,blob,clob,xml,etl,migrate,compare,diff,structure,table"/>
  175. <meta name="date">
  176. <xsl:attribute name="content">
  177. <xsl:value-of select="$currentDate"/>
  178. </xsl:attribute>
  179. </meta>
  180. <meta name="robots" content="follow"/>
  181. <link href="wb.css" rel="stylesheet" type="text/css"></link>
  182. <script src="redirect.js"></script>
  183. </head>
  184. <body onload="redirect()">
  185. <!--
  186. <a target="new" href="http://www.mgm-tp.com/home/index.html" title="mgm technology partners GmbH">
  187. <span id="mgm"></span>
  188. </a>
  189. -->
  190. <div id="top"></div>
  191. <a href="index.html" title="home">
  192. <span id="head"></span>
  193. </a>
  194. <div id="left">
  195. <xsl:call-template name="make-toc">
  196. <xsl:with-param name="currentPage" select="$pageName"/>
  197. </xsl:call-template>
  198. </div>
  199. <div id="main">
  200. <xsl:if test="$imageName">
  201. <h3 style="padding-top:1em"><xsl:value-of select="@title"/></h3>
  202. <div style="float:left">
  203. <xsl:if test="$next">
  204. <a href="{$next}"><img src="{$imageName}"/></a>
  205. </xsl:if>
  206. <xsl:if test="$next = ''">
  207. <img src="{$imageName}"/>
  208. </xsl:if>
  209. <br/>
  210. <div style="padding-top:1.5em">
  211. <xsl:if test="$back and $back != 'screenshots.html'">
  212. <div style="float:left"><a href="{$back}">Previous</a></div>
  213. </xsl:if>
  214. <xsl:if test="$back = 'screenshots.html'">
  215. <span><a href="{$back}">Screenshots</a></span>
  216. </xsl:if>
  217. <xsl:if test="$next and $next != 'screenshots.html'">
  218. <div style="float:right"><a href="{$next}">Next</a></div>
  219. </xsl:if>
  220. <xsl:if test="$next = 'screenshots.html'">
  221. <div style="float:right"><a href="screenshots.html">Screenshots</a></div>
  222. </xsl:if>
  223. </div>
  224. </div>
  225. </xsl:if>
  226. <xsl:if test="not($imageName)">
  227. <div class="content">
  228. <xsl:apply-templates select="content"/>
  229. </div>
  230. </xsl:if>
  231. </div>
  232. </body>
  233. </html>
  234. </xsl:template>
  235. <xsl:template match="full-history">
  236. <h1>Release History</h1>
  237. <script type="text/javascript">
  238. <![CDATA[
  239. function toggleTOC()
  240. {
  241. element = document.getElementById("toc-wrapper");
  242. style = element.style.display;
  243. var newstyle = "block";
  244. if (style == "block")
  245. {
  246. newstyle = "none";
  247. }
  248. element.style.display=newstyle;
  249. toggleElement = document.getElementById("toc-toggle");
  250. if (newstyle == "none")
  251. {
  252. toggleElement.innerHTML = "Show list of all builds";
  253. }
  254. if (newstyle == "block")
  255. {
  256. toggleElement.innerHTML = "Hide list of all builds";
  257. }
  258. }
  259. ]]>
  260. </script>
  261. <a id="toc-toggle" href="javascript:toggleTOC()">Show list of all builds</a>
  262. <div id="toc-wrapper" style="display:none;margin-top:5px">
  263. <xsl:for-each select="document('../scripts/history.xml')/history/release[@build != '-1']">
  264. <xsl:variable name="build-nr" select="@build"/>
  265. <a href="#build_{$build-nr}">Build <xsl:value-of select="@build"/></a>&nbsp;
  266. </xsl:for-each>
  267. </div>
  268. <br/>
  269. <br/>
  270. <xsl:for-each select="document('../scripts/history.xml')/history/release[@build != '-1']">
  271. <xsl:variable name="build-nr" select="@build"/>
  272. <h1 id="build_{$build-nr}" class="build-nr">Build <xsl:value-of select="@build"/> (<xsl:value-of select="@date"/>)</h1>
  273. <xsl:if test="count(entry[@type='enh']) &gt; 0">
  274. <h3 class="history-entry">Enhancements</h3>
  275. <ul>
  276. <xsl:for-each select="entry[@type='enh']">
  277. <xsl:sort select="@dev-build" order="descending" data-type="number"/>
  278. <li><xsl:copy-of select="text()"/></li>
  279. </xsl:for-each>
  280. </ul>
  281. </xsl:if>
  282. <xsl:if test="count(entry[@type='fix']) &gt; 0">
  283. <h3 class="history-entry">Bug fixes</h3>
  284. <ul>
  285. <xsl:for-each select="entry[@type='fix']">
  286. <xsl:sort select="@dev-build" order="descending" data-type="number"/>
  287. <li><xsl:copy-of select="text()"/></li>
  288. </xsl:for-each>
  289. </ul>
  290. </xsl:if>
  291. </xsl:for-each>
  292. </xsl:template>
  293. <xsl:template match="dev-history">
  294. <xsl:variable name="dev-build-nr" select="document('../scripts/history.xml')/history/release[2]/@build"/>
  295. <xsl:variable name="dev-build-minor">
  296. <xsl:for-each select="document('../scripts/history.xml')/history/release[1]/entry">
  297. <xsl:sort select="@dev-build" order="descending" data-type="number"/>
  298. <xsl:if test="position()=1">
  299. <xsl:value-of select="@dev-build" />
  300. </xsl:if>
  301. </xsl:for-each>
  302. </xsl:variable>
  303. <h1>Changelog for Build <xsl:value-of select="concat($dev-build-nr,'.',$dev-build-minor)"/></h1>
  304. <xsl:for-each select="document('../scripts/history.xml')/history/release[1]">
  305. <h2 class="history-entry">Enhancements</h2>
  306. <ul>
  307. <xsl:for-each select="entry[@type='enh']">
  308. <xsl:sort select="@dev-build" order="descending" data-type="number"/>
  309. <li>(<xsl:value-of select="$dev-build-nr"/>.<xsl:value-of select="@dev-build"/>) <xsl:value-of select="."/></li>
  310. </xsl:for-each>
  311. </ul>
  312. <h2 class="history-entry">Bug fixes</h2>
  313. <ul>
  314. <xsl:for-each select="entry[@type='fix']">
  315. <xsl:sort select="@dev-build" order="descending" data-type="number"/>
  316. <li>(<xsl:value-of select="$dev-build-nr"/>.<xsl:value-of select="@dev-build"/>) <xsl:value-of select="."/></li>
  317. </xsl:for-each>
  318. </ul>
  319. </xsl:for-each>
  320. </xsl:template>
  321. <xsl:template match="@*">
  322. <xsl:copy-of select="."/>
  323. </xsl:template>
  324. <xsl:template match="source-link">
  325. <a href="WorkbenchSrc-Build{$buildNumber}.zip">Source code</a> (<a href="WorkbenchSrc-Build{$buildNumber}.zip.sha1">sha1</a>)
  326. </xsl:template>
  327. <xsl:template match="zip-link">
  328. <a href="Workbench-Build{$buildNumber}.zip">Generic package for all systems</a> without support for importing or exporting Excel or OpenOffice spreadsheets (<a href="Workbench-Build{$buildNumber}.zip.sha1">sha1</a>)
  329. </xsl:template>
  330. <xsl:template match="zip-office-link">
  331. <a href="Workbench-Build{$buildNumber}-with-optional-libs.zip">Generic package for all systems including all optional libraries</a> (<a href="Workbench-Build{$buildNumber}-with-optional-libs.zip.sha1">sha1</a>)
  332. </xsl:template>
  333. <xsl:template match="mac-link">
  334. <a href="Workbench-Build{$buildNumber}-Mac.tgz">Download package for MacOS</a>
  335. </xsl:template>
  336. <xsl:template match="mac-office-link">
  337. <a href="Workbench-Build{$buildNumber}-Mac-with-optional-libs.tgz">MacOS including all optional libraries</a>
  338. </xsl:template>
  339. <xsl:template match="build-number">
  340. <xsl:value-of select="$buildNumber"/>
  341. </xsl:template>
  342. <xsl:template match="build-date">
  343. <xsl:value-of select="$buildDate"/>
  344. </xsl:template>
  345. <xsl:template match="dev-build">
  346. <xsl:if test="$includeDev = 1">
  347. <p>Current dev-build: <xsl:value-of select="$devBuildNumber"/>,&nbsp;<xsl:value-of select="$devBuildDate"/> (<a href="dev-history.html">Change Log</a>)</p>
  348. <ul>
  349. <li>
  350. <a href="Workbench-Build{$devBuildNumber}.zip">Download development build</a> (<a href="Workbench-Build{$devBuildNumber}.zip.sha1">sha1</a>)
  351. </li>
  352. <li>
  353. <a href="Workbench-Build{$devBuildNumber}-with-optional-libs.zip">Download development with optional libraries</a> (<a href="Workbench-Build{$devBuildNumber}-with-optional-libs.zip.sha1">sha1</a>)
  354. </li>
  355. <li>
  356. <a href="WorkbenchSrc-Build{$devBuildNumber}.zip">Source code</a> (<a href="WorkbenchSrc-Build{$devBuildNumber}.zip.sha1">sha1</a>)
  357. </li>
  358. <li>
  359. <a href="/devmanual">Online Manual for the current dev build</a>
  360. </li>
  361. </ul>
  362. </xsl:if>
  363. <xsl:if test="$includeDev = 0 ">
  364. <p style="color:gray">
  365. (Currently there is no development build available)
  366. </p>
  367. </xsl:if>
  368. </xsl:template>
  369. <xsl:template match="dev-build-info">
  370. <xsl:if test="$includeDev = 1">
  371. <br/>Current development build:
  372. <span style="font-weight:bold">
  373. <a href="dev-download.html">
  374. <xsl:value-of select="$devBuildNumber"/> (
  375. <xsl:value-of select="$devBuildDate"/>)
  376. </a>
  377. </span>
  378. <br/>
  379. </xsl:if>
  380. </xsl:template>
  381. <xsl:template match="image-link">
  382. <xsl:variable name="imageName" select="@name"/>
  383. <xsl:variable name="imageTitle" select="@title"/>
  384. <xsl:variable name="back" select="@back"/>
  385. <xsl:variable name="next" select="@next"/>
  386. <xsl:variable name="fname" select="concat(translate(@name,'.','_'),'.html')"/>
  387. <xsl:variable name="imgFile" select="concat($fdir, $fname)"/>
  388. <xsl:variable name="backLink">
  389. <xsl:if test="$back">
  390. <xsl:value-of select="concat(translate($back,'.','_'),'.html')"/>
  391. </xsl:if>
  392. </xsl:variable>
  393. <xsl:variable name="nextLink">
  394. <xsl:if test="$next">
  395. <xsl:value-of select="concat(translate($next,'.','_'),'.html')"/>
  396. </xsl:if>
  397. </xsl:variable>
  398. <a href="{$fname}">
  399. <xsl:value-of select="."/>
  400. </a>
  401. <redirect:write file="{$imgFile}">
  402. <xsl:call-template name="main">
  403. <xsl:with-param name="imageName" select="$imageName"/>
  404. <xsl:with-param name="pageTitle" select="'SQL Workbench/J'"/>
  405. <xsl:with-param name="subTitle" select="$imageTitle"/>
  406. <xsl:with-param name="imageTitle" select="$imageTitle"/>
  407. <xsl:with-param name="back" select="$backLink"/>
  408. <xsl:with-param name="next" select="$nextLink"/>
  409. </xsl:call-template>
  410. </redirect:write>
  411. </xsl:template>
  412. <xsl:template match="not-mysql">
  413. <p class="mysql-hint">
  414. Please note that SQL Workbench/J has <b>no</b> relation to the product <a title="Visit Oracle's product page" href="http://www.mysql.com/products/workbench/"><b>My</b>SQL Workbench</a>
  415. <img src="images/outlink.gif" alt="Link Arrow" border="0"/>&nbsp;which is maintained and owned by Oracle. <br/>
  416. If you are looking for <b>My</b>SQL Workbench support please contact Oracle.
  417. </p>
  418. </xsl:template>
  419. <xsl:template match="mail-to">
  420. <xsl:text disable-output-escaping="yes"><![CDATA[<a href=mailto:&#115;&#117;&#112;&#112;&#111;&#114;&#116;&#64;&#115;&#113;&#108;&#45;&#119;&#111;&#114;&#107;&#98;&#101;&#110;&#99;&#104;&#46;&#101;&#117;>&#115;&#117;&#112;&#112;&#111;&#114;&#116;&#64;&#115;&#113;&#108;&#45;&#119;&#111;&#114;&#107;&#98;&#101;&#110;&#99;&#104;&#46;&#101;&#117;</a>]]>
  421. </xsl:text>
  422. </xsl:template>
  423. <!-- <xsl:template match="content"><xsl:value-of select="."/></xsl:template> -->
  424. <xsl:template match="img">
  425. <xsl:copy>
  426. <xsl:apply-templates select="@*"/>
  427. <xsl:apply-templates/>
  428. </xsl:copy>
  429. </xsl:template>
  430. <xsl:template match="ul">
  431. <xsl:copy>
  432. <xsl:apply-templates select="@*"/>
  433. <xsl:apply-templates/>
  434. </xsl:copy>
  435. </xsl:template>
  436. <xsl:template match="ol">
  437. <xsl:copy>
  438. <xsl:apply-templates select="@*"/>
  439. <xsl:apply-templates/>
  440. </xsl:copy>
  441. </xsl:template>
  442. <xsl:template match="li">
  443. <xsl:copy>
  444. <xsl:apply-templates select="@*"/>
  445. <xsl:apply-templates/>
  446. </xsl:copy>
  447. </xsl:template>
  448. <xsl:template match="p">
  449. <xsl:copy>
  450. <xsl:apply-templates select="@*"/>
  451. <xsl:apply-templates/>
  452. </xsl:copy>
  453. </xsl:template>
  454. <xsl:template match="b">
  455. <xsl:copy>
  456. <xsl:apply-templates select="@*"/>
  457. <xsl:apply-templates/>
  458. </xsl:copy>
  459. </xsl:template>
  460. <xsl:template match="i">
  461. <xsl:copy>
  462. <xsl:apply-templates select="@*"/>
  463. <xsl:apply-templates/>
  464. </xsl:copy>
  465. </xsl:template>
  466. <xsl:template match="br">
  467. <xsl:copy>
  468. <xsl:apply-templates select="@*"/>
  469. <xsl:apply-templates/>
  470. </xsl:copy>
  471. </xsl:template>
  472. <xsl:template match="span">
  473. <xsl:copy>
  474. <xsl:apply-templates select="@*"/>
  475. <xsl:apply-templates/>
  476. </xsl:copy>
  477. </xsl:template>
  478. <xsl:template match="a">
  479. <xsl:variable name="ref" select="@href"/>
  480. <xsl:copy>
  481. <xsl:apply-templates select="@*"/>
  482. <xsl:apply-templates/>
  483. </xsl:copy>
  484. <xsl:if test="substring($ref,1,4) = 'http'">
  485. <img src="images/outlink.gif" alt="Link Arrow" title="{$ref}" border="0"/>
  486. </xsl:if>
  487. </xsl:template>
  488. <xsl:template match="tt">
  489. <xsl:copy>
  490. <xsl:apply-templates select="@*"/>
  491. <xsl:apply-templates/>
  492. </xsl:copy>
  493. </xsl:template>
  494. <xsl:template match="h1">
  495. <xsl:copy>
  496. <xsl:apply-templates select="@*"/>
  497. <xsl:apply-templates/>
  498. </xsl:copy>
  499. </xsl:template>
  500. <xsl:template match="h2">
  501. <xsl:copy>
  502. <xsl:apply-templates select="@*"/>
  503. <xsl:apply-templates/>
  504. </xsl:copy>
  505. </xsl:template>
  506. <xsl:template match="h3">
  507. <xsl:copy>
  508. <xsl:apply-templates select="@*"/>
  509. <xsl:apply-templates/>
  510. </xsl:copy>
  511. </xsl:template>
  512. <xsl:template match="h4">
  513. <xsl:copy>
  514. <xsl:apply-templates select="@*"/>
  515. <xsl:apply-templates/>
  516. </xsl:copy>
  517. </xsl:template>
  518. <xsl:template match="div">
  519. <xsl:copy>
  520. <xsl:apply-templates select="@*"/>
  521. <xsl:apply-templates/>
  522. </xsl:copy>
  523. </xsl:template>
  524. <xsl:template match="span">
  525. <xsl:copy>
  526. <xsl:apply-templates select="@*"/>
  527. <xsl:apply-templates/>
  528. </xsl:copy>
  529. </xsl:template>
  530. </xsl:stylesheet>