[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [docbook-tc] Re: DocBook Technical Committee Meeting Minutes:16 January 2008
On 1/25/08 12:00 PM, Norman Walsh wrote:
> | Simple XSLT can accept|delete proposed changes.
>
> <para>Really? You think you need tools
> to do that?</para>
>
> Er. No, what I meant to say was:
>
> <para revisionflag="changed">
> <phrase revisionflag="changed">Right. I</phrase> think you
> <phrase revisionflag="added">already have the tools you</phrase> need
> <phrase revisionflag="deleted">tools</phrase>
> to do that<phrase revisionflag="changed">!</phrase></para>
Phrases and not annotations, OK (duh, I guess).
So, like so?
$ xsltproc -o example.html changes.xsl added.xml
$ cat added.xml
<para revisionflag="changed">
<phrase revisionflag="changed">Right. I</phrase> think you
<phrase revisionflag="added">already have the tools you</phrase> need
<phrase revisionflag="deleted">tools</phrase>
to do that<phrase revisionflag="changed">!</phrase></para>
$ cat changes.xsl
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"
encoding="UTF-8"
indent="no"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
<xsl:template match="/">
<html lang="en" xml:lang="en">
<head>
<title>A changing text test</title>
<style type="text/css">
<![CDATA[
.blockchanged {
border-right: medium solid blue;
}
.changed {
color: blue;
}
.deleted {
color: red;
text-decoration: line-through;
}
.added {
color: gray;
}
]]>
</style>
</head>
<body>
<div>
<xsl:apply-templates select="@*|node()"/>
</div>
</body>
</html>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="para">
<p><xsl:apply-templates select="@*|node()"/></p>
</xsl:template>
<xsl:template match="phrase">
<span><xsl:apply-templates select="@*|node()"/></span>
</xsl:template>
<xsl:template match="@revisionflag">
<xsl:attribute name="class">
<xsl:choose>
<!-- or other block elements -->
<xsl:when test="parent::para">
<xsl:value-of select="concat('block', .)"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="."/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:template>
</xsl:stylesheet>
$ cat example.html
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head><meta
http-equiv="Content-Type" content="text/html; charset=UTF-8" /><title>A changing
text test</title><style type="text/css">
.blockchanged {
border-right: medium solid blue;
}
.changed {
color: blue;
}
.deleted {
color: red;
text-decoration: line-through;
}
.added {
color: gray;
}
</style></head><body><div><p class="blockchanged">
<span class="changed">Right. I</span> think you
<span class="added">already have the tools you</span> need
<span class="deleted">tools</span>
to do that<span class="changed">!</span></p></div></body></html>
Keith
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]