Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
S
SDT
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
MAS
SDT
Commits
801dc905
Commit
801dc905
authored
10 years ago
by
AS
Browse files
Options
Downloads
Patches
Plain Diff
XSL for generating html documentation
parent
98bded32
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
SDT/schema/style/html.xsl
+269
-0
269 additions, 0 deletions
SDT/schema/style/html.xsl
with
269 additions
and
0 deletions
SDT/schema/style/html.xsl
0 → 100644
+
269
−
0
View file @
801dc905
<?xml version="1.0" encoding="iso-8859-1"?>
<!-- - Name Spaces - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- -->
<!-- Explicit namespace declaration for the DAL schema required,
otherwise select expressions like '/Domain' don't work. An
alternative is to remove the declaration from the input XML
document ... -->
<xsl:stylesheet
xmlns:xsl=
"http://www.w3.org/1999/XSL/Transform"
xmlns:dal=
"http://hgi.org/xml/dal/1.0"
xmlns=
"http://www.w3.org/1999/xhtml"
xmlns:redirect=
"http://xml.apache.org/xalan/redirect"
extension-element-prefixes=
"redirect"
version=
"1.0"
>
<xsl:output
method=
"xml"
indent=
"yes"
encoding=
"ISO-8859-1"
/>
<xsl:variable
name=
"vendor"
select=
"system-property('xsl:vendor')"
/>
<!-- HTML Output - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- -->
<!-- Create a directory for the domain id with an HTML page for each -->
<!-- in the page. An index page contains links to all the devices. -->
<!-- -->
<!-- Template param: destdir - directories will be created here -->
<xsl:param
name=
"destdir"
/>
<xsl:template
match=
"/dal:Domain"
>
<xsl:variable
name=
"domain"
select=
"@id"
/>
<xsl:variable
name=
"dir"
select=
"concat($destdir,'/',$domain)"
/>
<xsl:choose>
<xsl:when
test=
"contains($vendor, 'SAXON 6.2')"
/>
<xsl:when
test=
"contains($vendor, 'Apache')"
>
<redirect:write
file=
"{concat($dir,'/index.html')}"
>
<xsl:apply-templates
select=
"."
mode=
"domain"
/>
</redirect:write>
</xsl:when>
</xsl:choose>
<xsl:for-each
select=
"dal:Devices/*"
>
<xsl:variable
name=
"file"
select=
"concat($domain,'/',@id,'.html')"
/>
<xsl:choose>
<xsl:when
test=
"contains($vendor, 'SAXON 6.2')"
/>
<xsl:when
test=
"contains($vendor, 'Apache')"
>
<redirect:write
file=
"{concat($dir,'/',@id,'.html')}"
>
<xsl:apply-templates
select=
"."
>
<xsl:with-param
name=
"domain"
select=
"$domain"
/>
</xsl:apply-templates>
</redirect:write>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl:template>
<!-- Domain - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- -->
<!-- -->
<!-- -->
<xsl:template
match=
"dal:Domain"
mode=
"domain"
>
<html>
<head>
<title>
Domain
<xsl:value-of
select=
"@id"
/></title>
</head>
<body>
<h1>
Domain
<xsl:value-of
select=
"@id"
/></h1>
<h2>
Devices
</h2>
<ul>
<xsl:apply-templates
select=
"dal:Devices/*"
mode=
"domain"
/>
</ul>
</body>
</html>
</xsl:template>
<xsl:template
match=
"dal:Device"
mode=
"domain"
>
<li>
<xsl:element
name=
"a"
>
<xsl:attribute
name=
"href"
>
<xsl:value-of
select=
"concat(@id,'.html')"
/>
</xsl:attribute>
<xsl:value-of
select=
"dal:DeviceInfo/dal:Name"
/>
</xsl:element>
</li>
</xsl:template>
<!-- Device - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- -->
<!-- -->
<!-- -->
<xsl:template
match=
"dal:Device"
>
<xsl:param
name=
"domain"
/>
<html>
<head>
<title>
<xsl:value-of
select=
"$domain"
/>
/
<xsl:value-of
select=
"@id"
/>
</title>
</head>
<body>
<xsl:text><b>
Domain:
</b>
</xsl:text>
<a
href=
"index.html"
><xsl:value-of
select=
"$domain"
/></a>
<h2>
Device
<xsl:value-of
select=
"dal:DeviceInfo/dal:Name"
/></h2>
<dl>
<dt><b>
Vendor:
</b></dt>
<dd><xsl:value-of
select=
"dal:DeviceInfo/dal:Vendor"
/></dd>
<dt><b>
Device Id:
</b></dt>
<dd><xsl:value-of
select=
"@id"
/></dd>
</dl>
<xsl:apply-templates
select=
"dal:Doc"
/>
<hr/><h2>
Module Summary
</h2>
<ul>
<xsl:for-each
select=
"dal:Modules/*"
>
<xsl:apply-templates
select=
"dal:extends"
mode=
"check"
/>
<li>
<xsl:value-of
select=
"@name"
/>
<xsl:apply-templates
select=
"dal:extends"
/>
</li>
</xsl:for-each>
</ul>
<hr/><h2>
Module Detail
</h2>
<xsl:apply-templates
select=
"dal:Modules/*"
/>
</body>
</html>
</xsl:template>
<!-- Modules - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- -->
<!-- Determine the name of the super Module (if there is one) and use it -->
<!-- to fetch a list of Action nodes in this Module. These are passed to -->
<!-- the template geerating the action documentation for the module. This -->
<!-- This seems to be the least verbose way of getting inherited actions -->
<!-- and the pattern can be used for events as well -->
<xsl:template
match=
"dal:Module"
>
<xsl:variable
name=
"dm"
>
<xsl:apply-templates
select=
"dal:extends"
mode=
"domain"
/>
</xsl:variable>
<xsl:variable
name=
"cl"
>
<xsl:apply-templates
select=
"dal:extends"
mode=
"class"
/>
</xsl:variable>
<xsl:variable
name=
"actions"
select=
"//dal:Domain[@id=$dm]//dal:ModuleClass[@name=$cl]//dal:Action"
/>
<h3>
Module
<xsl:value-of
select=
"@name"
/>
<xsl:apply-templates
select=
"dal:extends"
/>
</h3>
<dl>
<dd>
<xsl:apply-templates
select=
"dal:Doc"
/>
</dd>
<xsl:call-template
name=
"do-actions"
>
<xsl:with-param
name=
"actions"
select=
"$actions"
/>
</xsl:call-template>
</dl>
<hr/>
</xsl:template>
<!-- Actions - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- -->
<!-- The do-actions template is invoked for the module, and is passed any -->
<!-- inherited actions in the parameter 'actions'. An action section is -->
<!-- only generated if there are any actions (inherited or otherwise). -->
<!-- Inherited actions are rendered before the locally defined actions -->
<xsl:template
name=
"do-actions"
>
<xsl:param
name=
"actions"
/>
<xsl:if
test=
"count($actions)!=0 or .//dal:Actions"
>
<dt><b>
Actions
</b></dt>
<dd>
<dl>
<xsl:apply-templates
select=
"$actions"
/>
<xsl:apply-templates
select=
".//dal:Actions"
/>
</dl>
</dd>
</xsl:if>
</xsl:template>
<xsl:template
match=
"dal:Action"
>
<dt><b><xsl:value-of
select=
"@name"
/></b></dt>
<dd>
<xsl:apply-templates
select=
"dal:Doc"
/>
<dl>
<xsl:if
test=
"dal:Arg"
>
<dt><b>
Arguments
</b></dt>
<xsl:apply-templates
select=
"dal:Arg"
/>
</xsl:if>
<xsl:if
test=
"@type"
>
<dt><b>
Returns
</b></dt>
<dd><xsl:value-of
select=
"@type"
/></dd>
</xsl:if>
</dl>
</dd>
</xsl:template>
<xsl:template
match=
"dal:Arg"
>
<dd>
<xsl:value-of
select=
"@type"
/>
<xsl:text>
</xsl:text>
<xsl:value-of
select=
"@name"
/>
-
<xsl:text>
</xsl:text>
<xsl:apply-templates
select=
"dal:Doc"
/>
</dd>
</xsl:template>
<!-- Extends - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- -->
<!-- -->
<!-- -->
<xsl:template
match=
"dal:extends"
>
<xsl:text>
</xsl:text><em>
extends
</em><xsl:text>
</xsl:text>
<xsl:value-of
select=
"@class"
/><xsl:text>
(
</xsl:text>
<xsl:value-of
select=
"@domain"
/><xsl:text>
)
</xsl:text>
</xsl:template>
<xsl:template
match=
"dal:extends"
mode=
"domain"
>
<xsl:value-of
select=
"@domain"
/>
</xsl:template>
<xsl:template
match=
"dal:extends"
mode=
"class"
>
<xsl:value-of
select=
"@class"
/>
</xsl:template>
<xsl:template
match=
"dal:extends"
mode=
"check"
>
<xsl:variable
name=
"domain"
select=
"@domain"
/>
<xsl:variable
name=
"class"
select=
"@class"
/>
<xsl:variable
name=
"extends"
select=
"//dal:Domain[@id=$domain]//dal:ModuleClass[@name=$class]"
/>
<xsl:if
test=
"count($extends)=0"
>
<xsl:message
terminate=
"yes"
>
<xsl:text>
Imported module class
</xsl:text>
<xsl:value-of
select=
"$domain"
/>
:
<xsl:value-of
select=
"$class"
/>
<xsl:text>
not found
</xsl:text>
</xsl:message>
</xsl:if>
</xsl:template>
<!-- Documentation - - - - - - - - - - - - - - - - - - - - - - - - - - - -->
<!-- -->
<!-- -->
<!-- -->
<xsl:template
match=
"dal:em"
>
<em><xsl:apply-templates/></em>
</xsl:template>
<xsl:template
match=
"dal:b"
>
<b><xsl:apply-templates/></b>
</xsl:template>
<xsl:template
match=
"dal:p"
>
<p><xsl:apply-templates/></p>
</xsl:template>
</xsl:stylesheet>
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment