mirror of https://github.com/moparisthebest/xeps
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.
387 lines
16 KiB
387 lines
16 KiB
<?xml version="1.0" encoding="UTF-8"?> |
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/XSL/Format"> |
|
<xsl:template match="/"> |
|
<root> |
|
<layout-master-set> |
|
<simple-page-master master-name="cover"> |
|
<region-body margin-left="1in" margin-right="1in" margin-top="2.5in" margin-bottom="1in"/> |
|
</simple-page-master> |
|
<!--<simple-page-master master-name="doc_info"> |
|
<region-body margin-left="1in" margin-top="1in" margin-right="1in" margin-bottom="1in"/> |
|
</simple-page-master> |
|
<simple-page-master master-name="toc_page"> |
|
<region-body margin-left="1in" margin-top="1in" margin-right="1in" margin-bottom="1in"/> |
|
</simple-page-master>--> |
|
<simple-page-master master-name="std_page"> |
|
<region-body margin-left="1in" margin-top="1in" margin-right="1in" margin-bottom="1in"/> |
|
<region-before extent="1in" display-align="after"/> |
|
<region-after extent="1in" display-align="before"/> |
|
</simple-page-master> |
|
<page-sequence-master master-name="jep_sequence"> |
|
<single-page-master-reference master-reference="cover"/> |
|
<!--<single-page-master-reference master-reference="doc_info"/> |
|
<single-page-master-reference master-reference="toc_page"/>--> |
|
<repeatable-page-master-reference master-reference="std_page"/> |
|
</page-sequence-master> |
|
</layout-master-set> |
|
<page-sequence master-reference="jep_sequence"> |
|
<flow flow-name="xsl-region-body" font-family="serif" color="black" font-size="10pt"> |
|
<block space-before="1.5in" text-align="right" font-family="sans-serif" font-size="18pt"> |
|
XEP-<xsl:value-of select="/jep/header/number"/> |
|
</block> |
|
<block text-align="right" font-family="sans-serif" font-size="18pt"> |
|
<xsl:value-of select="/jep/header/title"/> |
|
</block> |
|
<!--</flow> |
|
</page-sequence> |
|
<page-sequence master-reference="doc_info"> |
|
<flow flow-name="xsl-region-body" font-family="serif" font-size="10pt" color="black">--> |
|
<block font-family="sans-serif" font-size="14pt" space-after=".5em" break-before="page">Document Information</block> |
|
<block font-size="12pt" font-weight="bold">Document Author(s)</block> |
|
<block> |
|
<inline font-weight="bold">Name: </inline> |
|
<inline> |
|
<xsl:value-of select="/jep/header/author/firstname"/> |
|
<xsl:value-of select="/jep/header/author/surname"/> |
|
</inline> |
|
</block> |
|
<block> |
|
<inline font-weight="bold">Email: </inline> |
|
<inline> |
|
<xsl:value-of select="/jep/header/author/email"/> |
|
</inline> |
|
</block> |
|
<block space-after=".5em"> |
|
<inline font-weight="bold">JID: </inline> |
|
<inline> |
|
<xsl:value-of select="/jep/header/author/jid"/> |
|
</inline> |
|
</block> |
|
<block font-size="12pt" font-weight="bold">Abstract</block> |
|
<block space-after=".5em"> |
|
<xsl:value-of select="/jep/header/abstract"/> |
|
</block> |
|
<block font-size="12pt" font-weight="bold">Document Status</block> |
|
<block space-after=".5em"> |
|
<xsl:value-of select="/jep/header/status"/> |
|
</block> |
|
<block font-size="12pt" font-weight="bold">Dependencies/References</block> |
|
<block space-after=".5em"> |
|
<xsl:value-of select="/jep/header/dependencies"/> |
|
</block> |
|
<block font-size="12pt" font-weight="bold">Legal Notice</block> |
|
<block space-after=".5em"> |
|
<xsl:value-of select="/jep/header/legal"/> |
|
</block> |
|
<block font-size="12pt" font-weight="bold" space-after=".5em">Revision History</block> |
|
<table table-layout="fixed" border-width=".25pt" border-color="black" border-style="solid"> |
|
<table-column text-align="center" column-width=".625in" column-number="1"/> |
|
<table-column text-align="center" column-width=".75in" column-number="2"/> |
|
<table-column text-align="center" column-width=".5in" column-number="3"/> |
|
<table-column column-width="4.125in" column-number="4"/> |
|
<table-body> |
|
<table-row background-color="black" color="white" font-weight="bold"> |
|
<table-cell padding="3pt"> |
|
<block>Version</block> |
|
</table-cell> |
|
<table-cell padding="3pt"> |
|
<block>Date</block> |
|
</table-cell> |
|
<table-cell padding="3pt"> |
|
<block>Initials</block> |
|
</table-cell> |
|
<table-cell padding="3pt"> |
|
<block>Comment</block> |
|
</table-cell> |
|
</table-row> |
|
<xsl:apply-templates select="/jep/header"/> |
|
</table-body> |
|
</table> |
|
<!--</flow> |
|
</page-sequence> |
|
<page-sequence master-reference="toc_page" force-page-count="no-force" format="i"> |
|
<flow flow-name="xsl-region-body" font-family="serif" font-size="10pt" color="black">--> |
|
<xsl:call-template name="processTOC"/> |
|
</flow> |
|
</page-sequence> |
|
<page-sequence master-reference="std_page" initial-page-number="1"> |
|
<static-content flow-name="xsl-region-after"> |
|
<block margin-left="1in" margin-right="1in" padding-top="10pt" border-before-color="black" border-before-width=".125pt" border-before-style="solid" text-align-last="justify" font-size="8pt" font-family="sans-serif" color="black"> |
|
XEP-<xsl:value-of select="/jep/header/number"/>:<xsl:text> </xsl:text> |
|
<xsl:value-of select="/jep/header/title"/> |
|
<leader leader-pattern="space"/> |
|
Page <page-number/> of <page-number-citation ref-id="lastpage"/> |
|
</block> |
|
</static-content> |
|
<flow flow-name="xsl-region-body" font-family="serif" font-size="10pt" color="black"> |
|
<xsl:apply-templates select="/jep/section1"/> |
|
<block font-family="sans-serif" font-size="12pt" color="black" space-before=".5em" space-after=".5em">Notes:</block> |
|
<xsl:apply-templates select="//note" mode="endlist"/> |
|
<block id="lastpage"/> |
|
</flow> |
|
</page-sequence> |
|
</root> |
|
</xsl:template> |
|
<!-- From the docbook XSL --> |
|
<xsl:template name="object.id"> |
|
<xsl:param name="object" select="."/> |
|
<xsl:choose> |
|
<xsl:when test="$object/@id"> |
|
<xsl:value-of select="$object/@id"/> |
|
</xsl:when> |
|
<xsl:otherwise> |
|
<xsl:value-of select="generate-id($object)"/> |
|
</xsl:otherwise> |
|
</xsl:choose> |
|
</xsl:template> |
|
<xsl:template name="processTOC"> |
|
<block font-family="sans-serif" font-size="14pt" space-after=".5em" break-before="page">Table of Contents</block> |
|
<xsl:apply-templates select="//section1" mode="toc"/> |
|
</xsl:template> |
|
<xsl:template match="/jep/header/revision"> |
|
<table-row> |
|
<table-cell padding="3pt"> |
|
<block> |
|
<xsl:value-of select="version"/> |
|
</block> |
|
</table-cell> |
|
<table-cell padding="3pt"> |
|
<block> |
|
<xsl:value-of select="date"/> |
|
</block> |
|
</table-cell> |
|
<table-cell padding="3pt"> |
|
<block> |
|
<xsl:value-of select="initials"/> |
|
</block> |
|
</table-cell> |
|
<table-cell padding="3pt"> |
|
<block> |
|
<xsl:value-of select="remark"/> |
|
</block> |
|
</table-cell> |
|
</table-row> |
|
</xsl:template> |
|
<xsl:template match="section1" mode="toc"> |
|
<xsl:variable name="oid"> |
|
<xsl:call-template name="object.id"/> |
|
</xsl:variable> |
|
<xsl:variable name="num"> |
|
<xsl:number level="multiple" count="section1"/> |
|
<xsl:text>.</xsl:text> |
|
</xsl:variable> |
|
<xsl:variable name="sect2.count" select="count(section2)"/> |
|
<xsl:value-of select="$num"/> |
|
<xsl:text> </xsl:text> |
|
<block text-align-last="justify" font-variant="small-caps"> |
|
<xsl:value-of select="$num"/> |
|
<xsl:value-of select="@topic"/> |
|
<xsl:text> </xsl:text> |
|
<leader leader-pattern="rule" space-end=".125in"/> |
|
<xsl:text> </xsl:text> |
|
<page-number-citation ref-id="sect-{$oid}"/> |
|
</block> |
|
<xsl:if test="$sect2.count > 0"> |
|
<xsl:apply-templates select="section2" mode="toc"> |
|
<xsl:with-param name="prevnum" select="$num"/> |
|
</xsl:apply-templates> |
|
</xsl:if> |
|
</xsl:template> |
|
<xsl:template match="section1"> |
|
<xsl:variable name="oid"> |
|
<xsl:call-template name="object.id"/> |
|
</xsl:variable> |
|
<xsl:variable name="num"> |
|
<xsl:number level="multiple" count="section1"/> |
|
<xsl:text>.</xsl:text> |
|
</xsl:variable> |
|
<!--<xsl:number level="single" count="section1"/>--> |
|
<block id="sect-{$oid}" font-family="sans-serif" font-size="14pt" space-after="1em" space-before="1em" font-weight="bold"> |
|
<xsl:value-of select="$num"/> |
|
<xsl:text> </xsl:text> |
|
<xsl:value-of select="@topic"/> |
|
</block> |
|
<xsl:apply-templates/> |
|
</xsl:template> |
|
<xsl:template match="section2" mode="toc"> |
|
<xsl:param name="prevnum" select='""'/> |
|
<xsl:variable name="oid"> |
|
<xsl:call-template name="object.id"/> |
|
</xsl:variable> |
|
<xsl:variable name="num"> |
|
<xsl:value-of select="$prevnum"/> |
|
<xsl:number level="multiple" count="section2"/> |
|
<xsl:text>.</xsl:text> |
|
</xsl:variable> |
|
<xsl:variable name="sect3.count" select="count(section3)"/> |
|
<block text-align-last="justify" margin-left="1em"> |
|
<xsl:value-of select="$num"/> |
|
<xsl:text> </xsl:text> |
|
<xsl:value-of select="@topic"/> |
|
<xsl:text> </xsl:text> |
|
<leader leader-pattern="rule" space-end=".125in"/> |
|
<xsl:text> </xsl:text> |
|
<page-number-citation ref-id="sect-{$oid}"/> |
|
</block> |
|
<xsl:if test="$sect3.count > 0"> |
|
<xsl:apply-templates select="section3" mode="toc"> |
|
<xsl:with-param name="prevnum" select="$num"/> |
|
</xsl:apply-templates> |
|
</xsl:if> |
|
</xsl:template> |
|
<xsl:template match="section2"> |
|
<xsl:param name="prevnum" select='""'/> |
|
<xsl:variable name="oid"> |
|
<xsl:call-template name="object.id"/> |
|
</xsl:variable> |
|
<xsl:variable name="num"> |
|
<xsl:number level="single" count="section1"/>.<xsl:number level="multiple" count="section2"/> |
|
<xsl:text>.</xsl:text> |
|
</xsl:variable> |
|
<xsl:variable name="sect3.count" select="count(section3)"/> |
|
<block id="sect-{$oid}" font-weight="bold" font-family="sans-serif"> |
|
<xsl:value-of select="$num"/> |
|
<xsl:text> </xsl:text> |
|
<xsl:value-of select="@topic"/> |
|
</block> |
|
<xsl:apply-templates/> |
|
</xsl:template> |
|
<xsl:template match="section3" mode="toc"> |
|
<xsl:param name="prevnum" select='""'/> |
|
<xsl:variable name="oid"> |
|
<xsl:call-template name="object.id"/> |
|
</xsl:variable> |
|
<xsl:variable name="num"> |
|
<xsl:value-of select="$prevnum"/> |
|
<xsl:number level="multiple" count="section3"/> |
|
<xsl:text>.</xsl:text> |
|
</xsl:variable> |
|
<block text-align-last="justify" margin-left="1em"> |
|
<xsl:value-of select="$num"/> |
|
<xsl:text> </xsl:text> |
|
<xsl:value-of select="@topic"/> |
|
<xsl:text> </xsl:text> |
|
<leader leader-pattern="rule" space-end=".125in"/> |
|
<xsl:text> </xsl:text> |
|
<page-number-citation ref-id="sect-{$oid}"/> |
|
</block> |
|
</xsl:template> |
|
<xsl:template match="section3"> |
|
<xsl:variable name="oid"> |
|
<xsl:call-template name="object.id"/> |
|
</xsl:variable> |
|
<block id="sect-{$oid}" margin-left=".5em"> |
|
<xsl:if test="../../@type='functional-spec'">FR-<xsl:number level="single" count="section2"/>.<xsl:number level="single" count="section3"/> |
|
</xsl:if> |
|
<xsl:if test="../../@type='supp-spec'">SS-<xsl:number level="single" count="section2"/>.<xsl:number level="single" count="section3"/> |
|
</xsl:if> |
|
<xsl:text> </xsl:text> |
|
<xsl:value-of select="@topic"/> |
|
<xsl:apply-templates/> |
|
</block> |
|
</xsl:template> |
|
<xsl:template match="p"> |
|
<block space-before=".5em" space-after=".5em"> |
|
<xsl:apply-templates/> |
|
</block> |
|
</xsl:template> |
|
<xsl:template match="code"> |
|
<block space-after="1em" margin-bottom="1em" margin-left="1em" font-family="monospace" font-size="8pt" font-weight="normal" white-space-collapse="false" keep-together.within-page="always"> |
|
<xsl:value-of select="."/> |
|
</block> |
|
</xsl:template> |
|
<xsl:template match="example"> |
|
<table table-layout="fixed" width="100%" space-after="1em"> |
|
<table-column column-width="proportional-column-width(1)"/> |
|
<table-body> |
|
<table-row keep-with-next="always"> |
|
<table-cell> |
|
<block margin-left=".5em" space-after=".5em" space-before=".5em" font-weight="600" font-size="9pt"> |
|
Example <xsl:number level="any" count="example"/>.<xsl:text> </xsl:text> |
|
<xsl:value-of select="@caption"/> |
|
</block> |
|
</table-cell> |
|
</table-row> |
|
<table-row> |
|
<table-cell> |
|
<block margin-left="1em" font-family="monospace" font-size="8pt" font-weight="normal" white-space-collapse="false" keep-together.within-page="always"> |
|
<xsl:value-of select="."/> |
|
</block> |
|
</table-cell> |
|
</table-row> |
|
</table-body> |
|
</table> |
|
</xsl:template> |
|
<xsl:template match="note"> |
|
<xsl:variable name="notenum"> |
|
<xsl:number level="any" count="note"/> |
|
</xsl:variable> |
|
<xsl:variable name="oid"> |
|
<xsl:call-template name="object.id"/> |
|
</xsl:variable> |
|
<inline>[<basic-link color="blue" font-weight="bold" internal-destination="nt-{$oid}"> |
|
<xsl:value-of select="$notenum"/> |
|
</basic-link>]</inline> |
|
</xsl:template> |
|
<xsl:template match="note" mode="endlist"> |
|
<xsl:variable name="oid"> |
|
<xsl:call-template name="object.id"/> |
|
</xsl:variable> |
|
<block id="nt-{$oid}" margin=".5em" font-size="8pt"> |
|
<xsl:value-of select="position()"/>. <xsl:apply-templates/> |
|
</block> |
|
</xsl:template> |
|
<xsl:template match="link"> |
|
<basic-link external-destination="{@url}" text-decoration="underline" color="blue"> |
|
<xsl:apply-templates/> |
|
</basic-link> |
|
</xsl:template> |
|
<xsl:template match="strong"> |
|
<inline font-weight="bold"> |
|
<xsl:apply-templates/> |
|
</inline> |
|
</xsl:template> |
|
<xsl:template match="em"> |
|
<inline font-style="italic"> |
|
<xsl:apply-templates/> |
|
</inline> |
|
</xsl:template> |
|
<xsl:template match="ul"> |
|
<list-block provisional-distance-between-starts="10pt" provisional-label-separation="3pt" space-after=".5em" space-start="1em" margin-left="1em"> |
|
<xsl:apply-templates select="li" mode="ul"/> |
|
</list-block> |
|
</xsl:template> |
|
<xsl:template match="ol"> |
|
<list-block provisional-distance-between-starts="10pt" provisional-label-separation="3pt" space-after=".5em" space-start="1em" margin-left="1em"> |
|
<xsl:apply-templates select="li" mode="ol"/> |
|
</list-block> |
|
</xsl:template> |
|
<xsl:template match="li" mode="ul"> |
|
<list-item> |
|
<list-item-label end-indent="label-end()"> |
|
<block>•</block> |
|
</list-item-label> |
|
<list-item-body start-indent="body-start()"> |
|
<block> |
|
<xsl:value-of select="."/> |
|
</block> |
|
</list-item-body> |
|
</list-item> |
|
</xsl:template> |
|
<xsl:template match="li" mode="ol"> |
|
<xsl:variable name="num"> |
|
<xsl:number level="multiple" count="li"/> |
|
</xsl:variable> |
|
<list-item> |
|
<list-item-label end-indent="label-end()"> |
|
<block> |
|
<xsl:value-of select="$num"/>.</block> |
|
</list-item-label> |
|
<list-item-body start-indent="body-start()"> |
|
<block> |
|
<xsl:value-of select="."/> |
|
</block> |
|
</list-item-body> |
|
</list-item> |
|
</xsl:template> |
|
</xsl:stylesheet>
|
|
|